Back to skill

Security audit

Deadline

Security checks for vulnerabilities and agentic risk

Overview

This skill is a local content/deadline note tool that stores user-entered text on the same machine, with some privacy and export-quality issues but no evidence of hidden network access, credential use, destructive behavior, or deception.

Install only if you are comfortable with an offline CLI retaining the text you enter under ~/.local/share/deadline. Do not enter passwords, credentials, private business content, or sensitive personal data unless you have checked local file permissions and are prepared to manage or delete the stored logs yourself.

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 (2)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/script.sh:6
Finding

Content Logs Are Created Without Explicitly Restrictive Permissions

Content
View full analysis
> "$DATA_DIR/history.log"; } ``` ### Technical Analysis The script creates its data directory and log files without setting a restrictive `umask` or explicitly assigning secure permissions. Consequently, permissions depend entirely on the environment from which the script is invoked. Under a commonly used `022` umask, the directory may be created with mode `0755` and new log files with mode `0644`. This can make stored content readable by other local users. The issue affects both command-specific logs and `history.log`. Content supplied to commands is duplicated into the history file by `_log`, increasing the number of files containing potentially sensitive material. The vulnerability does not provide remote access or privilege escalation. Exploitation requires another local account or process with filesystem access to the affected user's home directory. ### Attack Path 1. A user invokes a command such as `deadline draft`, `deadline schedule`, or `deadline translate` with confidential content. 2. The script creates `~/.local/share/deadline` and associated log files using permissions derived from the current `umask`. 3. With a permissive `umask`, the resulting files are readable by other local users. 4. Another local account enumerates or directly reads files such as `draft.log`, `schedule.log`, or `history.log`. 5. The attacker obtains the stored content and its timestamps. ### Impact Assessment A successful attacker can disclose content stored by the affected operating-system account, including drafts, schedules, translations, and other user-provided text. The scope is limited to locally stored De ...[truncated 163 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/script.sh:62
Finding

Unescaped User Content Enables Malformed Exports and CSV Formula Injection

Content
View full analysis
> "$out" printf ' {"type":"%s","time":"%s","value":"%s"}' "$name" "$ts" "$val" >> "$out" done < "$f" done echo "\n]" >> "$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"; done < "$f" done ``` ### Technical Analysis The export implementation inserts stored values directly into JSON and CSV output without using format-aware escaping. For JSON, characters such as quotation marks, backslashes, and control characters are not escaped. A crafted value can terminate the intended string, alter the exported structure, or make the document invalid. The use of `echo "\n]"` is also not a reliable, portable way to emit a JSON newline. For CSV, fields containing commas, quotation marks, or newlines are not quoted according to RFC 4180. More importantly, values beginning with spreadsheet formula markers such as `=`, `+`, `-`, or `@` are exported unchanged. When the CSV is opened in spreadsheet software, such a value may be interpreted as a formula rather than inert text. Exploitation requires attacker-controlled or otherwise untrusted text to be saved and then exported. Formula execution further requires a user to open the resulting CSV in software that evaluates formulas. ### Attack Path 1. An attacker supplies or persuades a user to store content b ...[truncated 1343 chars]
Remediation
View remediation
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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 (6)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill is presented as a deadline assistant, but the documented behavior is primarily a content-writing toolkit with persistent logging, export, search, and history features. This mismatch can mislead users into providing sensitive drafts or planning data without realizing the scope of collection and retention, increasing privacy and trust risks.

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 diverges from the declared skill purpose: a 'deadline assistant' manifest fronts a content-generation and storage toolkit with drafting, editing, translation, hashtag, hook, CTA, headline, and outline features. This mismatch is dangerous because users and host systems may grant trust or permissions based on the declared intent, while the actual behavior collects and persists broader user content than expected.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The phrase 'Use when you need deadline' is vague and overly broad, which can cause the skill to be invoked in contexts beyond its intended scope. Over-broad invocation increases the chance that users submit unrelated or sensitive content to a tool that logs activity and stores data locally.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

Although the markdown mentions offline operation and later notes local storage, it does not prominently and clearly warn users that their content is automatically logged and retained in history files. Users may enter sensitive drafts or notes believing the tool is ephemeral, leading to unintended local data exposure to other local users, backups, or forensic recovery.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The script's own comments and help text describe a 'content tool/toolkit,' which contradicts the metadata stating it is a personal deadline assistant. Such conflicting identity signals are a trust and security problem because they obscure the true function of the skill and can mislead reviewers and users about what data will be handled.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

User-supplied content is written verbatim to persistent log files under ~/.local/share/deadline, and activity is additionally copied into history.log, without any upfront notice, consent, retention policy, or redaction. In this skill context, users may enter drafts, edits, translations, or schedules containing sensitive business or personal information, creating an avoidable confidentiality and privacy risk on shared or monitored systems.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.