api_vulnerabilities

common

class api_vulnerabilities.common.Common(request)[source]

Klasa pomocnicza zwracajaca najcześciej używane funkcje przez widoki api_searcher.

__init__(request)[source]

Initialize self. See help(type(self)) for accurate signature.

static get_ip_addres(host)[source]

Metoda statyczna zwracająca adres ip adress hosta.

property host_address

Atrybut zwrcacający adres hosta na którym uruchomiony jest backend aplikacji SARENKA.

static is_ipv4(host)[source]

Metoda statyczna sprawdzająca czy podano adres ip czy domenę.

cwe_crud

class api_vulnerabilities.cwe_crud.CWECRUD(cwe_data)[source]

Klasa odpowiedzialna za operacje bazodanow. Jesj zadaniem jest dodanie obiektu CWE do odpowiedniej bazy danych

__init__(cwe_data)[source]

Initialize self. See help(type(self)) for accurate signature.

add()[source]

” Dodaje obiekt CWE do odpowiedniej bazy danych.

get_database_name()[source]

Wybiera odpowiednią nazwę bazy danych

models

” Modele potrzebne do przechowywania danych relacji CWE - do CVE. Problem - mamy informacje o kodzie CWE w CVE ale relacja w drugą stronę nie jest nigdzie na stronie https://nvd.nist.gov/ ani https://cwe.mitre.org/.

class api_vulnerabilities.models.CVEModel(*args, **kwargs)[source]

Common Vulnerabilities and Exposures (CVE) - konkretna podatnośc z konkretnej wersji oprogramowania. CVE-d{4}-d{4,7} Relacja n many (CVE) -> 1 one (CWE)

“cve”: { “cve”: “CVE-2019-4570”, “description”: “IBM Tivoli Netcool Impact 7.1.0 through 7.1.0.16 generates an error message that includes sensitive information about its environment, users, or associated data. IBM X-Force ID: 166720.”, “cvss3”: {

“cvss3”: “CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N”, “cvss3_url”: “https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N”

}, “cvss2”: {

“cvss2”: “(AV:N/AC:L/Au:N/C:P/I:N/A:N)”, “cvss2_url”: “https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator?vector=(AV:N/AC:L/Au:N/C:P/I:N/A:N)”

}, “base_score_v3”: “5.3 MEDIUM”, “base_score_v2”: “5.0 MEDIUM”, “hyperlinks”: [

],

Parameters
  • id (AutoField) – Id

  • cve_id (CharField) – Cve id

  • year (CharField) – Year

  • month (CharField) – Month

  • cwe (ForeignKey to CWEModel) – Cwe

exception DoesNotExist
exception MultipleObjectsReturned
class api_vulnerabilities.models.CWEModel(*args, **kwargs)[source]

Klasa do przechowywanie kodów CWE (common weakness enumeration) ogólnych słabości np.: SQL Injection i listy konkretnych podatnosci CVE związanych z nim. Relacja 1 one (CWE) <- n many (CVE) “ID_CWE”: “CWE-79”, “title”: “Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’)”, “description”: “The software does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users. “, “likehood”: “High”, “technical_impact”: [

“Read Application Data”, “Bypass Protection Mechanism”, “Execute Unauthorized Code or Commands”

], “caused_by”: {

“field”: “Architecture and Design”, “process”: “Implementation”, “description”: “This weakness is caused during implementation of an architectural security tactic.”

},

Parameters
  • id (AutoField) – Id

  • cwe_id (CharField) – Cwe id

  • title (TextField) – Title

  • description (TextField) – Description

  • likehood (TextField) – Likehood

exception DoesNotExist
exception MultipleObjectsReturned
class api_vulnerabilities.models.CausedByModel(*args, **kwargs)[source]

1 (one) CWE <- n (many) CausedByModel “caused_by”: {

“field”: “Architecture and Design”, “process”: “Implementation”, “description”: “This weakness is caused during implementation of an architectural security tactic.”

},

Parameters
  • id (AutoField) – Id

  • field (CharField) – Field

  • process (TextField) – Process

  • description (TextField) – Description

  • cwe (ForeignKey to CWEModel) – Cwe

exception DoesNotExist
exception MultipleObjectsReturned
class api_vulnerabilities.models.TechnicalImpactModel(*args, **kwargs)[source]

1 (one) CWE <- n (many) impacts “technical_impact”: [

“Bypass Protection Mechanism”, “Read Application Data”, “Execute Unauthorized Code or Commands”

],

Parameters
  • id (AutoField) – Id

  • title (TextField) – Title

  • cwe (ForeignKey to CWEModel) – Cwe

exception DoesNotExist
exception MultipleObjectsReturned

serializers

class api_vulnerabilities.serializers.CWEModelSerializer(*args, **kwargs)[source]

Serializowanie obiektu z bazy danych

class api_vulnerabilities.serializers.CveWrapperSerializer(*args, **kwargs)[source]
class api_vulnerabilities.serializers.ProductSerializer(*args, **kwargs)[source]

urls

views

class api_vulnerabilities.views.AddCWEandCVE(**kwargs)[source]
get(request)[source]
class api_vulnerabilities.views.CVEDetailsAllView(**kwargs)[source]

Widok Django zwracającyh szczegółowe dane o wszystkich podatnościach Common Vulnerabilities and Exposures (CVE) pobranych z serwisu https://nvd.nist.gov/

get(request, page)[source]

Metoda zwracajaca szczegółowe informacje o podantościach CVE z stronnicowaniem. Partia danych zwrócona jest na podstawie danych z żadania GET HTTP użytkownika

class api_vulnerabilities.views.CVESearchView(**kwargs)[source]

Widok Django zwracajacy szczegółowe informacje o jednej podatności Common Vulnerabilities and Exposures (CVE).

get(request, cve_id)[source]

Metoda zwracająca szczegółowe infromacje o konkretnej podatności po podaniu identyfikatora CVE

class api_vulnerabilities.views.CWEAllView(**kwargs)[source]

Widok Django zwracający wszystkie kody CWE z podstawowywmi danymi takimi jak datę pobrania danych, źródło danych, identyfikator slabości, opis słabości, url do serwisu https://cwe.mitre.org ze szczegółowymi danymi, url do aplikacji SARENKA z najważniejszymi informacjami o konkretnej słabości.

get(request)[source]

Metoda zwracajaca podstawowe dane o wszystkich słabościach CWE z oficjalnego serwisu https://cwe.mitre.org. :param request: obiekt dla widoku Django z informacjami od użytkownika :return: podstawowe dane w formacie json o wszystkich słabościach CWE zawartych w feedach

class api_vulnerabilities.views.CWEData(**kwargs)[source]

Widok Django zwracajacy infromacje o Common Weakness Enumeration na podstawie podanego numeru CWE ID. :tags: CWE

get(request, id_cwe)[source]

Metoda zwracająca dane o słabości oprogramowania na podstawie identyfikatora CWE podanego przez użytkownika w zapytaniu GET HTTP. :tags: CWE :type id_cwe: str :param request: obiekt request dla widoku Django :type id_cwe: str :param id_cwe: kod identyfikujący słabość oprogramowania :return: json z danymi wybranej słabości oprogramowania

class api_vulnerabilities.views.CWEDetailsAllView(**kwargs)[source]

Widok Django zwracajacy wszystkie słabości Common Weakness Enumeration ze szczegółowymi danymi. Wszystki identyfikatory CWE pochodza z https://cwe.mitre.org/data/published/cwe_latest.pdf

get(request, page)[source]
class api_vulnerabilities.views.CWETop25(**kwargs)[source]

Widok Django zwracający informacje o TOP 25 najgroźniejszych słabościach oprogramowania.

get(request)[source]

Metoda zwracająca dane o 25 najpopularniejszych słabościach oprogramowania na podstawie żądania GET HTTP. Dane pochodzą ze strony https://cwe.mitre.org/top25/archive/2020/2020_cwe_top25.html :tags: CWE :param request: obiekt request dla widoku Django :return: dane w postaci json zawierajace ingormacje o hoście

cve_and_cwe

cve_details_all

class api_vulnerabilities.cve_and_cwe.cve_details_all.CVEDetailsAll(page)[source]
__init__(page)[source]

Initialize self. See help(type(self)) for accurate signature.

get_data()[source]
get_filepath()[source]
render_output(host_address)[source]

Dodaje url do sarenki i zewnętrzen do mitre wskazujące na mitre

property values

cwe_all

class api_vulnerabilities.cve_and_cwe.cwe_all.CWEAll[source]
__init__()[source]

Initialize self. See help(type(self)) for accurate signature.

get_data()[source]
render_output(host_address)[source]

Dodaje url do sarenki i zewnętrzen do mitre wskazujące na mitre

property values

cwe_details_all

class api_vulnerabilities.cve_and_cwe.cwe_details_all.CWEDetailsAll(page)[source]
__init__(page)[source]

Initialize self. See help(type(self)) for accurate signature.

feed_file_path = 'feeds\\cwe_details\\'
file_prefix = 'cwe_details'
get_data()[source]
get_filepath()[source]
mitre_cwe_url = 'https://cwe.mitre.org/data/definitions/'
nist_url = 'https://nvd.nist.gov/vuln/detail/'
render_output(host_address)[source]

Dodaje url do sarenki i zewnętrzen do mitre wskazujące na mitre

property values

general_scraper

class api_vulnerabilities.cve_and_cwe.general_scraper.GeneralScraper(url)[source]

Gets general data from website, like keywords, title, image etc.

__init__(url)[source]

Initialize self. See help(type(self)) for accurate signature.

get_all()[source]

Returns all founded data

Return type

Dict[str, Union[str, Dict[str, str]]]

get_description()[source]
Return type

Optional[Dict[str, str]]

get_image()[source]
get_keywords()[source]
Return type

Optional[str]

get_title()[source]
Return type

Optional[str]

exception api_vulnerabilities.cve_and_cwe.general_scraper.GeneralScraperError(message=None, errors=None)[source]
__init__(message=None, errors=None)[source]

Initialize self. See help(type(self)) for accurate signature.

mitre_cwe_scrapers

Scrapery do danych ze strony https://cwe.mitre.org/

CVE-2019-4570 https://nvd.nist.gov/vuln/detail/CVE-2019-4570#vulnCurrentDescriptionTitle Scrapery do danych ze strony https://nvd.nist.gov

class api_vulnerabilities.cve_and_cwe.mitre_cwe_scrapers.CWEDataScraper(id_cwe, host_address=None)[source]
__init__(id_cwe, host_address=None)[source]

Initialize self. See help(type(self)) for accurate signature.

cwe_mitre_url = 'https://cwe.mitre.org/data/definitions/'
generate_definition_url()[source]
Return type

str

get_caused_by()[source]

Etap podczas którego powstaje podatność. Np. podczas implementacji.

get_cve_examples()[source]

Przykładowe podatności bezpieczeństwa w konkretnych oprogramowanaich dla tego typu słabości oprogramowania.

Return type

List[Dict]

get_data()[source]

Zwraca wszystkie dane wyciągniete podczas scrapowania.

Return type

Dict

get_description()[source]
Return type

str

get_likelihood()[source]

Poziom prawdopodobieństwa istnienia exploitów i samej exploitacji słabości.

Return type

str

get_technical_impact()[source]

Częsre konswekwencje exploitacji słabości.

Return type

List[str]

get_title()[source]

Zwraca tytuł slabości.

class api_vulnerabilities.cve_and_cwe.mitre_cwe_scrapers.CWETableTop25Scraper(host_address)[source]

Scraper danych - pobiera dane z tabeli dla top 25 słabości oprogramowania z https://cwe.mitre.org/top25/archive/2020/2020_cwe_top25.html.

__init__(host_address)[source]

Initialize self. See help(type(self)) for accurate signature.

cwe_mitre_url = 'https://cwe.mitre.org'
get_top_25()[source]

SCRAPER - Pobiera dane ze strony - zwraca top 25 najpopularniejszych słabości. :return:

top_25_url = 'https://cwe.mitre.org/top25/archive/2020/2020_cwe_top25.html'

nist_cve_scrapers

class api_vulnerabilities.cve_and_cwe.nist_cve_scrapers.NISTCVEScraper(id_cve, host_address=None)[source]

Dodatkowe źródło danych o podatnosciach CVE

__init__(id_cve, host_address=None)[source]

Initialize self. See help(type(self)) for accurate signature.

get_base_score_v2(soup)[source]
get_base_score_v3(soup)[source]
get_cpe(soup)[source]

Common Platform Enumeration https://nvd.nist.gov/products/cpe https://nvd.nist.gov/products/cpe/search

get_cvss2_vector(soup)[source]

Zwraca Common Vulnerability Scoring System Version 2.0.

get_cvss3_vector(soup)[source]

Zwraca Common Vulnerability Scoring System Version 3.0.

get_cwe(soup)[source]
get_data()[source]
get_description(soup)[source]
get_last_modified(soup)[source]
get_published_date(soup)[source]

Data publikacji publiczenj podatnosci.

get_vector_calculator_url(vector)[source]

Common Vulnerability Scoring System Version Zwraca link do kalkulator vectora ataku na podstawie jego wersji. Brak spójności - stare podatnosci mają tylko wersje 2.0 lub 2.0 i 3.0 najnowsze tylko 3.1 - ciągle sie to zmienia

get_vuln_source(soup)[source]
nist_url = 'https://nvd.nist.gov/vuln/detail/'
nist_vector_v2_url = 'https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator?vector='
nist_vector_v3_1_url = 'https://www.first.org/cvss/calculator/3.1#'
nist_vector_v3_url = 'https://www.first.org/cvss/calculator/3.0#CVSS:3.0/'