Repository navigation
feat: audit-driven detectors - #56
Merged
Merged
Conversation
…process output sources and URL secrets
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.test: define the audit-driven detectors), implementation follows.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 reportvulnerable-dependency, and the image decodersreachable-vulnerability.syntax/flask_debug:app.run(debug=True)isdebug-enabled(high), at module level too, where two repositories start their server; resolved through the symbol table, so arun(debug=True)on another object is ignored.syntax/missing_timeout: Requests and httpx calls without atimeout, on the module, on sessions and on clients, aremissing-timeout(low), resolved through the call graph symbols.process-outputsource:subprocess.run(["sh"], input=curl_result.stdout)in Chatbot'ssetup.pyis a command injection.user:pass@orpassword=/token=query parameters) are ahardcoded-secretof providerurl, parameter defaults are bound to their parameter name, and the fallback ofos.getenv("X_TOKEN", "literal")is bound to the variable name, which makes InfluxDB's default admin token ahardcoded-credential.timeoutso they keep testing what they tested.Left from the audit for a next pass: secrets in YAML, TOML and
.envfiles, a coverage metric per file and function, plaintext password storage, and private data served fromstatic.