Skip to content

feat(cve): add 100 additional Windows/AD CVEs - #35

Open
netanelcyber wants to merge 10 commits into
claude/pentesting-active-directory-bfghhzfrom
feature/add-100-cves
Open

feat(cve): add 100 additional Windows/AD CVEs#35
netanelcyber wants to merge 10 commits into
claude/pentesting-active-directory-bfghhzfrom
feature/add-100-cves

Conversation

@netanelcyber

Copy link
Copy Markdown
Owner

Summary

  • Adds 100 additional Windows/AD-ecosystem CVE identifiers in adpentest/cve_catalog_100.py.
  • Keeps the catalog metadata-only: no exploit implementation is added.
  • Adds a merge helper that preserves richer existing ADCVERegistry entries.
  • Exposes the extended catalog from adpentest and bumps the package version to 1.1.4.

Validation notes

  • The 100 identifiers were selected to avoid the CVEs already observed in the existing ADCVERegistry section, including ZeroLogon, PrintNightmare, Certifried, the existing Exchange entries, and the existing 2024 LDAP entries.
  • The catalog is intentionally not treated as evidence of vulnerability; scanners should correlate versions/configuration with NVD/MSRC/vendor guidance.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 5, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-06T14:56:13.179084Z d53f963 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2811d1c73b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread adpentest/__init__.py Outdated
@@ -1 +1,10 @@
__version__ = "1.1.3"
__version__ = "1.1.4"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Bump the distribution metadata to 1.1.4

When the release workflow runs python -m build, the artifact version comes from pyproject.toml, which remains 1.1.3; the repository's custom publisher also explicitly reads that file. Consequently this change reports adpentest.__version__ == "1.1.4" while producing a 1.1.3 distribution, preventing consumers from installing 1.1.4 and potentially causing PyPI to reject the already-published version. Update the project metadata together with this runtime version.

Useful? React with 👍 / 👎.

{"cve_id": "CVE-2022-24522", "component": "Windows/SMB", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2022-26837", "component": "Windows remote services / RPC", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2022-26937", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2022-27518", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove the Citrix ADC CVE from the Windows catalog

For consumers selecting findings for Windows or AD hosts, this entry incorrectly presents CVE-2022-27518 as a Windows vulnerability, and merge_with_registry() further assigns it the windows tag. CVE-2022-27518 affects Citrix ADC/Gateway, so this metadata produces irrelevant vulnerability candidates unless the target independently runs the affected Citrix appliance.

Useful? React with 👍 / 👎.

Comment on lines +93 to +94
{"cve_id": "CVE-2023-21716", "component": "Exchange Server", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2023-23397", "component": "Exchange Server", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Classify these Office client CVEs correctly

When callers filter the catalog by component or correlate an Exchange Server version, these entries falsely identify CVE-2023-21716 and CVE-2023-23397 as Exchange Server vulnerabilities. They affect Microsoft Word and Microsoft Outlook respectively, so Exchange-only targets can be incorrectly included while the actual vulnerable client products are obscured.

Useful? React with 👍 / 👎.

netanelcyber and others added 4 commits September 6, 2026 02:51
Consolidates all package modules (core, cve_catalog_100,
cve_catalog_de_novo_40, de_novo, __init__) into one importable
.py file preserving the full public API and version 1.1.5.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01StfRVksGuSEQdzZAoXUNpC
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01StfRVksGuSEQdzZAoXUNpC

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b8b874752e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread adpentest_onefile.py
print(f"[VERBOSE] [detect_exchange_ews] EWS check failed for {ews_url}: {e}", file=sys.stderr, flush=True)

return False, None
except Im

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Run bundled scanners without importing the package

When adpentest_onefile.py is used as the standalone distribution, the child commands for the CVE scanners still execute from adpentest.core import .... On a machine that has only this file, adpentest is not installed, so these subprocesses fail with ModuleNotFoundError instead of invoking the functions copied into the single-file module; the same hard-coded import affects the Windows, SPN, and email Python tools in this command builder.

Useful? React with 👍 / 👎.

Comment thread adpentest_onefile.py Outdated
"""
executable = binary or shutil.which("de_novo_finder")
if not executable:
local = Path(__file__).resolve().parent.parent / "native" / "de_novo_finder"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Resolve the native binary beside the single file

For a standalone file at /path/adpentest_onefile.py, this expression checks /native/de_novo_finder, while the documented build command creates /path/native/de_novo_finder. Consequently find_de_novo() reports the engine as unavailable when users compile it alongside the downloaded single-file distribution unless they also modify PATH.

Useful? React with 👍 / 👎.

Comment thread adpentest/de_novo.py Outdated
[executable, target, str(timeout_ms)],
capture_output=True,
text=True,
timeout=max(5, timeout_ms / 1000 * 12),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Budget the wrapper timeout for every resolved address

When a target name resolves to two or more addresses and the probed ports are filtered, the native engine can spend timeout_ms on every address for each of its ten services, but this wrapper allows only twelve probe intervals total. A normal dual-address target can therefore exceed the default 9.6-second subprocess limit, raising an uncaught TimeoutExpired instead of returning the promised structured findings.

Useful? React with 👍 / 👎.

Comment thread adpentest_onefile.py
print(f"[VERBOSE] [detect_exchange_ews] EWS check failed for {ews_url}: {e}", file=sys.stderr, flush=True)

return False, None
except Im

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve extension exports in the final __all__

This second assignment replaces the catalog-oriented __all__ declared near the top of the single-file module. As a result, from adpentest_onefile import * omits EXTENDED_CVES, the de-novo catalog APIs, and find_de_novo, so the new distribution does not preserve those public APIs for wildcard-import consumers.

Useful? React with 👍 / 👎.

Comment thread adpentest_onefile.py Outdated
@@ -0,0 +1,11489 @@
"""adpentest - single-file distribution.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Include the single-file module in release artifacts

The inspected publish workflow only runs python -m build and publishes dist/*, but the current setuptools package discovery includes only adpentest*; both the generated wheel and sdist therefore omit this root-level module. Users installing or downloading the published Python distribution cannot obtain the newly advertised single-file distribution unless it is explicitly added to the build configuration or uploaded as a separate release artifact.

Useful? React with 👍 / 👎.

Comment thread native/de_novo_finder.c
int exposed[sizeof(services) / sizeof(services[0])] = {0};
size_t count = sizeof(services) / sizeof(services[0]);

printf("{\n \"target\":\"%s\",\n \"engine\":\"de-novo-c\",\n \"read_only\":true,\n \"findings\":[\n", host);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Escape the target before emitting JSON

When the supplied target contains a JSON-special character such as a quote, backslash, or newline, this interpolation writes it directly into the JSON document. The native executable then emits invalid JSON, and the Python wrapper raises JSONDecodeError at json.loads(proc.stdout) instead of returning structured findings; serialize or JSON-escape this user-provided value before printing it.

Useful? React with 👍 / 👎.

{"cve_id": "CVE-2024-29996", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; validate affected Windows versions before correlation"},
{"cve_id": "CVE-2024-29997", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; validate affected Windows versions before correlation"},
{"cve_id": "CVE-2024-29998", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; validate affected Windows versions before correlation"},
{"cve_id": "CVE-2024-38063", "component": "Windows TCP/IP", "family": "Windows/AD ecosystem", "assessment": "metadata-only; validate affected Windows versions and network-stack configuration"},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove CVE-2024-38063 from one catalog

When consumers combine the two catalogs exported together from adpentest, CVE-2024-38063 appears here and in EXTENDED_CVES, yielding 140 records but only 139 distinct CVEs. The two copies also provide different component and assessment metadata, so aggregation can double-report the vulnerability or produce order-dependent metadata; keep it in only one catalog or deduplicate through a shared merge API.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7319224f9b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

{"cve_id": "CVE-2020-1048", "component": "Windows remote services / RPC", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2020-1054", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2020-1337", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2020-1350", "component": "Windows authentication / privilege boundary", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Classify SigRed as a Windows DNS Server vulnerability

When consumers select candidates by component, CVE-2020-1350 is incorrectly categorized as an authentication/privilege-boundary issue. This CVE is the Windows DNS Server remote-code-execution vulnerability known as SigRed, so the current metadata both hides it from DNS Server assessments and introduces it into unrelated authentication-focused results.

Useful? React with 👍 / 👎.

{"cve_id": "CVE-2022-21920", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2022-22047", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2022-22040", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2022-24521", "component": "Windows/SMB", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove the CLFS vulnerability from SMB results

When callers filter or correlate findings for SMB, this record falsely includes CVE-2022-24521 because its component contains SMB. The vulnerability affects the Windows Common Log File System driver rather than SMB, so SMB hosts can receive an irrelevant candidate while CLFS-focused assessments cannot identify the actual affected component.

Useful? React with 👍 / 👎.

{"cve_id": "CVE-2023-36874", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2023-36884", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2023-38148", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2023-4863", "component": "Windows/networking ecosystem", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not tag the libwebp CVE as Windows-specific

When this catalog is merged, CVE-2023-4863 receives the windows and ad-assessment tags even though it is a heap-buffer-overflow vulnerability in libwebp used by applications across multiple operating systems, not a Windows networking vulnerability. Windows/AD inventory correlation will therefore generate a candidate solely from the operating system rather than from evidence that an affected libwebp consumer is installed.

Useful? React with 👍 / 👎.

Comment thread adpentest/de_novo.py
Comment on lines +25 to +26
except OSError:
continue

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Report DNS resolution failures instead of a clean scan

Whenever the Python fallback receives an unresolvable hostname, socket.create_connection raises socket.gaierror, but this broad OSError handler treats it exactly like a closed port for all ten probes. The function then returns status: completed with no findings, so a misspelled or DNS-inaccessible target is indistinguishable from a successfully assessed host with no exposed services; handle name-resolution failures as an error rather than continuing.

Useful? React with 👍 / 👎.

{"cve_id": "CVE-2020-0610", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2020-0646", "component": "Windows authentication / privilege boundary", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2020-0665", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2020-0688", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Classify CVE-2020-0688 under Exchange Server

When consumers filter the catalog for Exchange Server findings, this generic Windows component causes CVE-2020-0688 to be omitted even though it is a Microsoft Exchange Server remote-code-execution vulnerability involving its validation keys. The catalog already uses Exchange Server for other Exchange records, so this entry should identify the affected server product rather than the host operating system.

Useful? React with 👍 / 👎.

{"cve_id": "CVE-2020-1015", "component": "Windows remote services / RPC", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2020-1017", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2020-1020", "component": "Windows", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},
{"cve_id": "CVE-2020-1048", "component": "Windows remote services / RPC", "family": "Windows/AD ecosystem", "assessment": "metadata-only; correlate product/version/configuration with NVD and vendor guidance"},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove the Print Spooler CVE from RPC results

When callers select candidates for Windows RPC services, this component incorrectly includes CVE-2020-1048. That CVE affects the Windows Print Spooler and is an elevation-of-privilege vulnerability, so the current label creates an irrelevant RPC candidate while preventing Print Spooler-specific correlation from finding it.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

f"from adpentest.core import WindowsEnumerate; "
f"import json, sys; "
f"e = WindowsEnumerate('{host}', domain='{domain_arg}' or None); "
f"results = {{}}; "

P1 Badge Quote the detected domain before embedding it in Python

When a target-controlled LDAP RootDSE supplies a naming context whose DC= value contains a quote and Python syntax, detected_domain reaches domain_arg without validation and is interpolated directly into this python -c program. Selecting enum_windows_py—which careful mode does by default—then executes that injected syntax on the scanner host; pass the value through argv or embed it with a safe representation rather than placing it inside a quoted source literal.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread adpentest/core.py
Comment on lines +10789 to +10791
active_service_report = active_service_search(
hosts=targets_for_tools,
timeout=min(2.0, max(0.5, dns_timeout)),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep careful scans limited to resolved targets

When the target has no PTR record, the ARP fallback appends unrelated local-network neighbors to live_host_list, and targets_for_tools consequently includes them when no DC is detected. Passing that list here makes the default --active-search careful mode probe 28 ports on hosts that were never resolved from the supplied target, even when --scan-derived-networks is absent; build the careful-mode host list directly from the resolved target addresses and detected DCs.

Useful? React with 👍 / 👎.

Comment thread adpentest/core.py
Comment on lines +5155 to +5159
or item.get("cve")
or item.get("id")
)
if not cve_id and isinstance(cve_obj.get("CVE_data_meta"), dict):
cve_id = cve_obj["CVE_data_meta"].get("ID")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Parse CVE IDs from legacy NVD records

For an NVD 1.1 corpus using the supported CVE_Items format, each record stores its ID at cve.CVE_data_meta.ID rather than cve.id. Here item.get("cve") assigns the entire nested dictionary to cve_id, so the subsequent CVE_data_meta fallback is skipped and the non-string check discards every record; avoid treating the nested cve object itself as an ID before applying the legacy fallback.

Useful? React with 👍 / 👎.

Comment thread adpentest/core.py
Comment on lines +5254 to +5256
def load_passive_cve_corpus(corpus_path: str | None = None, limit: int = PASSIVE_CVE_DEFAULT_LIMIT) -> dict[str, Any]:
limit = max(1, min(int(limit), PASSIVE_CVE_DEFAULT_LIMIT))
records = _builtin_cve_corpus(limit)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Reserve the corpus limit for explicitly supplied data

When --passive-cve-limit is 176 or lower, the built-in registry/catalogs consume the entire limit here before the configured --passive-cve-corpus is read. Thus a user who supplies a small local corpus to constrain the scan receives zero records from that file, even if it contains the only relevant CVE; explicit corpus records need precedence or a separate allocation within the limit.

Useful? React with 👍 / 👎.

Comment thread adpentest/core.py
Comment on lines +5445 to +5448
matches_by_target.setdefault(target, []).append({
"target": target,
"cve": record["cve"],
"status": "possible",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Deduplicate passive matches by target and CVE

When multiple observations on one host share a product token—for example Apache on ports 80 and 443—the same corpus record is appended once for each observation. This produces duplicate CVE findings in the report and database, inflates possible_count, and can let duplicates consume the per-target 250-result cap before distinct CVEs are included; aggregate evidence under a (target, cve) key before applying the cap.

Useful? React with 👍 / 👎.

Comment thread adpentest/core.py
"139": {"netbios", "smb", "samba", "windows"},
"143": {"imap", "mail"},
"389": {"ldap", "active-directory", "windows"},
"443": {"https", "http", "web", "iis", "apache", "nginx", "openssl"},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not infer products from HTTPS alone

Whenever port 443 is reachable, these aliases add iis, apache, nginx, and openssl to the evidence simultaneously, even though the active probe performs no TLS handshake or product detection. A single generic HTTPS endpoint can therefore produce possible matches for CVEs from several mutually exclusive server products; retain only protocol-level aliases until a banner or fingerprint identifies the implementation.

Useful? React with 👍 / 👎.

Comment thread adpentest/core.py
Comment on lines +5180 to +5183
tokens = (
_cve_text_tokens(name, component, tags, item.get("family"), item.get("affected_versions"))
| _cpe_product_tokens(cpes)
) - _GENERIC_CVE_TOKENS

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Include descriptions in correlation tokens

For a supported simple corpus record containing only a CVE ID and description, or an NVD record without CPE configuration data, the product named in the parsed description is never added to tokens. Since the fallback name is just the CVE ID and the other metadata fields are empty, such a record can never match any service evidence; include the normalized description when deriving tokens.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants