mirror of
https://github.com/KeygraphHQ/shannon.git
synced 2026-04-25 09:35:55 +03:00
[GH-ISSUE #88] Security Audit: 18 findings (5 Critical, 7 High) - Argus Security Report #30
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/shannon-KeygraphHQ#30
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @devatsecure on GitHub (Feb 8, 2026).
Original GitHub issue: https://github.com/KeygraphHQ/shannon/issues/88
Argus Security Audit Report
Scan Date: 2026-02-08
Scanner: Argus Security (6-phase AI-powered pipeline)
Model: claude-sonnet-4-5-20250929
Files Analyzed: 30
Threat Model: 16 threats identified (6 deterministic + 10 AI-discovered)
Summary
Overall Status: REQUIRES FIXES
Risk Level: HIGH
Critical Issues (Must Fix Immediately)
1. Command Injection in Tool Call Filtering
src/ai/message-handlers.ts:44-46filterJsonToolCallsis called on AI-generated content before tool invocation. Insufficient filtering could allow malicious AI output to inject commands through tool parameters.2. Path Traversal in Save Deliverable Tool
mcp-server/src/tools/save-deliverable.ts:95saveDeliverableFile(targetDir, filename, content)concatenates paths without validatingtargetDirfor traversal sequences.targetDiris user-controlled or from untrusted configpath.normalize(targetDir)and check it doesn't escape expected base directory3. Insufficient TOTP Secret Validation
mcp-server/src/tools/generate-totp.ts:59-61secret.length >= 32invalidateTotpSecret4. Secret Exposure in Error Messages
src/error-handling.ts:54-55error.context. Tool errors with credentials in context leak to plaintext logs.5. Prototype Pollution via YAML Parsing
src/config-parser.ts:72-78yaml.loadwithFAILSAFE_SCHEMAbut JSON Schema validation happens AFTER parsing, so malicious YAML could pollute prototypes before validation.yaml.load(..., { json: true })and validate immediately, or use stricter parsing optionsHigh Priority Issues
6. Insufficient Dangerous Pattern Coverage
src/config-parser.ts:29-36DANGEROUS_PATTERNSmisses$(), backticks,|,;,&,%00, CRLF injection7. Unvalidated Git Commit Hash Usage
src/temporal/activities.ts:173-179/^[0-9a-f]{40}$/before storage8. Error Message Information Disclosure
src/error-handling.ts:44-58error.log, exposing internal paths, API URLs, config details9. TOCTOU Race Condition in Queue Validation
src/queue-validation.ts:132-137fs.readFile, catch ENOENT10. Unbounded Error Message Accumulation
src/temporal/activities.ts:18-26ApplicationFailure.detailsarray is unbounded; retry storms could cause memory exhaustion11. Missing Authentication in Config
src/config-parser.ts:106-11012. API Error Detection Too Broad
src/ai/message-handlers.ts:73-76'api error'trigger error detection but continue execution, masking real failuresMedium Priority Issues
src/temporal/activities.ts:181-192src/config-parser.ts:53,src/temporal/activities.ts:18src/queue-validation.ts:169-178src/ai/message-handlers.ts:167-171src/ai/message-handlers.ts:130-133src/ai/message-handlers.ts:151-157(terminal injection via ANSI codes)Recommended Action Plan
Immediate
save-deliverable.tsFollow-up
@JosephDoUrden commented on GitHub (Feb 8, 2026):
I’ll take a look at this and report back shortly