diff options
| author | GeogeFI | 2023-02-09 18:58:25 +0100 |
|---|---|---|
| committer | GeogeFI | 2023-02-09 18:58:25 +0100 |
| commit | 0448df8db628f5ae73dc96e4ed80223023bd7ddd (patch) | |
| tree | be8f8c796e2581e486d0312a18ffea620d4c0048 | |
| parent | f0d27cbec6979c8785e4ca9cae1a162661e4ad10 (diff) | |
| download | sec-certs-0448df8db628f5ae73dc96e4ed80223023bd7ddd.tar.gz sec-certs-0448df8db628f5ae73dc96e4ed80223023bd7ddd.tar.zst sec-certs-0448df8db628f5ae73dc96e4ed80223023bd7ddd.zip | |
test: Added tests for FIPS
| -rw-r--r-- | tests/fips/test_fips_analysis.py | 58 |
1 files changed, 54 insertions, 4 deletions
diff --git a/tests/fips/test_fips_analysis.py b/tests/fips/test_fips_analysis.py index 14ec1579..6cc77cda 100644 --- a/tests/fips/test_fips_analysis.py +++ b/tests/fips/test_fips_analysis.py @@ -7,7 +7,7 @@ import pytest import tests.data.fips.dataset from sec_certs.dataset import CPEDataset, CVEDataset from sec_certs.dataset.fips import FIPSDataset -from sec_certs.sample.cpe import CPE +from sec_certs.sample.cpe import CPE, CPEConfiguration from sec_certs.sample.cve import CVE @@ -52,9 +52,48 @@ def some_other_cve(some_random_cpe: CPE) -> CVE: {"CVE-611"}, ) +@pytest.fixture(scope="module") +def ibm_cpe_configurations() -> CPEConfiguration: + return CPEConfiguration( + "cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", + { + "cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", + }, + ) + + +@pytest.fixture(scope="module") +def cpes_ibm_websphere_app_with_platform() -> set[CPE]: + return { + CPE("cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", "IBM zOS"), + CPE("cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", "IBM WebSphere Application Server"), + } + + +@pytest.fixture(scope="module") +def ibm_xss_cve(ibm_cpe_configurations) -> CVE: + return CVE( + "CVE-2010-2325", + set(), + {ibm_cpe_configurations}, + CVE.Impact(4.3, "MEDIUM", 2.9, 8.6), + "2000-06-18T04:15Z", + {"CWE-79"}, + ) + @pytest.fixture(scope="module") -def cpe_dataset(vulnerable_cpe: CPE, some_random_cpe: CPE) -> CPEDataset: +def cpe_dataset(vulnerable_cpe: CPE, some_random_cpe: CPE, cpes_ibm_websphere_app_with_platform: set[CPE]) -> CPEDataset: cpes = { vulnerable_cpe, some_random_cpe, @@ -66,13 +105,15 @@ def cpe_dataset(vulnerable_cpe: CPE, some_random_cpe: CPE) -> CPEDataset: "cpe:2.3:a:tracker-software:pdf-xchange_lite_printer:6.0.320.0:*:*:*:*:*:*:*", "Tracker Software PDF-XChange Lite Printer 6.0.320.0", ), + *cpes_ibm_websphere_app_with_platform, } + return CPEDataset(False, {x.uri: x for x in cpes}) @pytest.fixture(scope="module") -def cve_dataset(cve: CVE, some_other_cve: CVE) -> CVEDataset: - cves = {cve, some_other_cve} +def cve_dataset(cve: CVE, some_other_cve: CVE, ibm_xss_cve: CVE) -> CVEDataset: + cves = {cve, some_other_cve, ibm_xss_cve} cve_dset = CVEDataset({x.cve_id: x for x in cves}) cve_dset.build_lookup_dict(use_nist_mapping=False) return cve_dset @@ -218,6 +259,15 @@ def test_find_related_cves(processed_dataset: FIPSDataset, cve: CVE, some_other_ assert some_other_cve not in processed_dataset["2441"].heuristics.related_cves +def test_find_related_cves_for_cpe_configuration(processed_dataset: FIPSDataset, cpes_ibm_websphere_app_with_platform: set[CPE]): + cert = processed_dataset["2441"] + cert.heuristics.cpe_matches = {cve.uri for cve in cpes_ibm_websphere_app_with_platform} + processed_dataset.compute_related_cves() + assert {ibm_xss_cve.cve_id} == random_config_certificate.heuristics.related_cves + + + + def test_keywords_heuristics(processed_dataset: FIPSDataset): keywords = processed_dataset["2441"].pdf_data.keywords assert keywords |
