Back to skill

Security audit

Campaign

Security checks for vulnerabilities and agentic risk

Overview

This skill is a local campaign/content logging tool, but its description and command documentation understate and mismatch its persistent storage, search, and export behavior.

Install only if you are comfortable with this tool keeping campaign/content text in plaintext under ~/.local/share/campaign and exporting all saved logs locally. Avoid using it for confidential customer, account, strategy, credential, or regulated data unless the storage, deletion, and export risks are acceptable.

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:66
Finding

Unescaped User-Controlled Data in JSON and CSV Exports

Content
View full analysis
> "$out" printf ' {"type":"%s","time":"%s","value":"%s"}' "$name" "$ts" "$val" >> "$out" done < "$f" ``` ```bash while IFS='|' read -r ts val; do echo "$name,$ts,$val" >> "$out" done < "$f" ``` ### Technical Analysis The export implementation directly interpolates values read from campaign log files into JSON and CSV output without format-aware encoding. For JSON exports, characters such as double quotes, backslashes, control characters, and embedded newlines are not escaped. A crafted value can therefore produce malformed JSON or inject additional JSON properties or objects into the exported document. For CSV exports, commas, double quotes, carriage returns, and newlines are not escaped according to CSV serialization rules. In addition, cells beginning with spreadsheet formula prefixes such as `=`, `+`, `-`, or `@` are written unchanged. If an exported file is opened in formula-capable spreadsheet software, attacker-controlled content may be interpreted as a formula rather than inert text. Quoting shell variables prevents shell word splitting but does not provide JSON or CSV encoding. Dedicated serializers are required for each output format. ### Attack Path 1. An attacker convinces a user to store crafted content through a command such as `campaign draft `, or otherwise causes crafted content to be present in one of the campaign log files. 2. The crafted content is persisted as the `value` portion of a log entry. 3. The user executes `campaign export json` or `campaign export csv`. 4. The export function copies the attacker-controlled value into the destination document without escaping it. 5. For JSON, the attacker can corrupt the document structu ...[truncated 1048 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (7)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The skill presents itself as a generic everyday CLI tool, but the documented behavior includes persistent local storage and export of user-provided campaign data. That mismatch can cause users or higher-level agents to invoke it without realizing it retains potentially sensitive business information and can later export or search that stored data.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The invocation cue is overly broad and vague, which increases the chance that an agent will select this skill in contexts where it is not appropriate. Because the tool stores data locally and supports export, over-selection can unnecessarily expose or retain user data beyond the user's expectations.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill metadata and script branding present this as a generic everyday-use 'campaign' tool, while the implementation is actually a content capture and local logging utility with search/export capabilities. That mismatch can mislead users and downstream agents into providing sensitive text they would not knowingly consent to having stored and re-exported, increasing privacy and data handling risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script creates a persistent data directory and defines logging to history.log without any privacy notice, retention policy, or consent flow. Because user-provided content is later written into category logs and history, users may unknowingly persist sensitive prompts, drafts, or business information in plaintext on disk.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The tool systematically records all user inputs and provides bulk review, search, status, recent, and export workflows that make exfiltration or unintended disclosure easier. In the context of an agent skill, users may treat inputs as ephemeral assistant interactions, making silent persistent capture materially more dangerous than in an explicitly disclosed note-taking application.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The export command silently aggregates all previously logged entries into a new file, creating an additional plaintext copy of potentially sensitive content. This expands the exposure surface because old data is recopied into export artifacts without warning, confirmation, or format-safe escaping.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The help output omits implemented commands such as search and recent, so the disclosed command surface is incomplete. In a security-sensitive agent context, undocumented capabilities reduce transparency and can conceal data discovery functions that expose previously logged user content.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.