Skip to content

feat: audit-driven detectors - #56

Merged
SizzleUnrlsd merged 2 commits into
mainfrom
feat/audit-detectors
Sep 4, 2026
Merged

SizzleUnrlsd merged 2 commits into
mainfrom
feat/audit-detectors

Conversation

@SizzleUnrlsd

Copy link
Copy Markdown
Contributor

Summary

Detectors asked for by the manual security audit of the twelve repositories under tests-project/, each traced to a line the audit cites. Three of its seven recommendations were already delivered (the call-graph crash, match, FileStorage.save); this covers most of what static analysis can do among the rest.

  • Tests first (test: define the audit-driven detectors), implementation follows.
  • Advisories: Gunicorn CVE-2024-1135, OpenCV CVE-2023-4863 (cv2.imread, cv2.imdecode), Werkzeug CVE-2024-34069 and CVE-2023-46136, Pillow CVE-2026-25990 (PIL.Image.open) join the offline sample with their affected APIs, so the three repositories pinning those versions report vulnerable-dependency, and the image decoders reachable-vulnerability.
  • syntax/flask_debug: app.run(debug=True) is debug-enabled (high), at module level too, where two repositories start their server; resolved through the symbol table, so a run(debug=True) on another object is ignored.
  • syntax/missing_timeout: Requests and httpx calls without a timeout, on the module, on sessions and on clients, are missing-timeout (low), resolved through the call graph symbols.
  • The output of a subprocess is an untrusted process-output source: subprocess.run(["sh"], input=curl_result.stdout) in Chatbot's setup.py is a command injection.
  • Secrets: credentials embedded in a URL literal (user:pass@ or password=/token= query parameters) are a hardcoded-secret of provider url, parameter defaults are bound to their parameter name, and the fallback of os.getenv("X_TOKEN", "literal") is bound to the variable name, which makes InfluxDB's default admin token a hardcoded-credential.
  • Two Django and HTTP client fixtures gain a timeout so they keep testing what they tested.

Left from the audit for a next pass: secrets in YAML, TOML and .env files, a coverage metric per file and function, plaintext password storage, and private data served from static.

@SizzleUnrlsd SizzleUnrlsd self-assigned this Sep 4, 2026
@SizzleUnrlsd
SizzleUnrlsd merged commit f8704f0 into main Sep 4, 2026
6 checks passed
@SizzleUnrlsd
SizzleUnrlsd deleted the feat/audit-detectors branch September 4, 2026 11:38
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