Skip to content

Don't confirm Apache CVEs from generic 500/401 pages - #45

Draft
cursor[bot] wants to merge 1 commit into
mainfrom
fix/apache-cve-generic-error-false-confirm
Draft

cursor[bot] wants to merge 1 commit into
mainfrom
fix/apache-cve-generic-error-false-confirm

Conversation

@cursor

@cursor cursor Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Bug and impact

An AI/full scan of Apache (banner-correlated high-CVSS CVE with a surviving builtin verifier plan) could persist fusion-confirmed, un-droppable findings from generic error pages that have nothing to do with the vulnerability.

Triggers:

  • CVE-2021-26691 (mod_session heap overflow): builtin sent GET / with Session: malicious and treated HTTP 400/500 plus body Internal Server Error as proof. Stock httpd ignores that header. Apache's default 500 page (PHP fatal, uncaught exception, misconfigured vhost) is enough. Fusion pins it.
  • CVE-2024-38475 (mod_rewrite escaping): builtin sent GET /?%7 and confirmed on the same generic 500 (or a WAF 400/500 that says Internal Server Error).
  • CVE-2019-0217 (prefork mod_auth_digest local privilege escalation): builtin sent Authorization: Digest and confirmed on body substring digest / WWW-Authenticate. A JSON 401 {"error":"invalid digest"} or a 401 SPA bundle containing digest() pinned an LPE as probe-confirmed.

Root cause

These CVEs are not HTTP-testable. The builtins treated generic 400/401/500 bodies as exploit evidence. run_verifier emits probe_confirmed=True on success; the fusion gate then pins the finding so the AI cannot drop it.

Fix

Remove the three builtins. Add them to _HTTP_UNTESTABLE_CVES so generate_plans_for_cves and reverify_with_context skip them (including AI re-invention), matching the CVE-2024-38476/38477 approach.

Validation

  • python3 -m pytest test_verifier_sanitize.py -q — 21 passed (old HTTP checks still match the innocent 500/401 pages; planner no longer emits plans).
  • python3 -m pytest test_*.py -q — 1755 passed, 5 skipped.
  • python3 -m bandit -r src/verifier --severity-level high — no high issues.
Open in Web View Automation 

CVE-2021-26691, CVE-2024-38475, and CVE-2019-0217 were probe-confirmed
from Apache's default 500 page, a 500ing app, or a 401 body that merely
mentioned "digest". Fusion then pinned them as un-droppable. These bugs
are not HTTP-testable; drop the builtins and block AI re-invention.

Co-authored-by: dmitryflynn <dmitryflynn@users.noreply.github.com>
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.

1 participant