Back to skill

Security audit

Process Viewer

Security checks for vulnerabilities and agentic risk

Overview

This is a disclosed local plaintext logging tool for process-related notes, with no network access or hidden privileged behavior, but users should avoid storing sensitive operational details in it.

Install only if you want a simple local plaintext logbook for process and incident notes. Do not enter passwords, tokens, customer data, or sensitive infrastructure details, and treat exported JSON/CSV/TXT files as untrusted data before sharing or opening them in spreadsheets. Also note that the main logging commands appear to use Bash local declarations outside functions, so they may fail until fixed.

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-Controlled Data in JSON and CSV Exports

Content
View full analysis

Vulnerability Details

File Location: scripts/script.sh, lines 64-81
Vulnerability Type: Improper output encoding and CSV formula injection
Risk Level: Medium

Vulnerable Code

bash
        json)
            echo "[" > "$out"
            local first=1
            for f in "$DATA_DIR"/*.log; do
                [ -f "$f" ] || continue
                local name=$(basename "$f" .log)
                while IFS='|' read -r ts val; do
                    [ $first -eq 1 ] && first=0 || echo "," >> "$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 log-file content directly into JSON strings and CSV fields without context-appropriate output encoding.

For JSON exports, characters such as double quotes, backslashes, carriage returns, and control characters are not escaped. A crafted value can terminate the intended JSON string, inject additional properties or objects, or make the export syntactically invalid. Shell quoting only protects the shell command invocation; it does not perform JSON encoding.

For CSV exports, fields are concatenated with commas without RFC 4180 quoting. Values containing commas, quotes, carriage returns, or newlines can alter record and column boundaries. In addition, a value beginning with =, +, -, or @ may be interpreted as a formula when the resulting file is opened in spreadsheet software. Depending on the spreadsheet ...[truncated 2461 chars]

Remediation
View remediation

Remediation Suggestions

  1. Generate JSON using a proper JSON serializer rather than string interpolation. Ensure every string field is escaped for quotes, backslashes, control characters, and embedded line breaks.
  2. Produce CSV according to RFC 4180:
    • Enclose every field in double quotes.
    • Replace each embedded double quote with two double quotes.
    • Preserve record boundaries safely when values contain newlines.
  3. Neutralize spreadsheet formulas in fields that may be opened by spreadsheet software. Prefix values beginning with =, +, -, @, tab, or carriage return with a safe character such as an apostrophe, while documenting this transformation.
  4. Validate the stored record format. Reject or safely encode embedded newlines and delimiter characters when records are written.
  5. Add regression tests covering quotes, backslashes, commas, pipes, newlines, control characters, and formula-leading values.
  6. Correct the top-level local declarations in command branches so functional testing can exercise the complete input-to-export path.
  7. Treat generated exports as untrusted data and warn users before opening CSV files in applications capable of evaluating formulas.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Rogue AgentSelf-Modification, Session Persistence
  • 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
Findings (10)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The skill presents itself as a system/process monitoring and benchmarking tool, but the documented behavior is primarily free-form local logging, export, and search. This mismatch can mislead users or higher-level agents into supplying operationally sensitive observations, assuming the tool performs real inspection, while instead persisting plaintext notes that may contain secrets or incident data.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill description emphasizes monitoring/management utility but does not prominently warn that command inputs and exports are persistently written to local plaintext files. This omission can cause users to disclose sensitive operational data under the false assumption of transient processing, making later local compromise or accidental sharing more damaging.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
90% confidence
Finding

The skill intentionally maintains historical records across many command categories and exposes recent entries, creating session persistence of potentially sensitive process, alert, and remediation notes. In a sysops context, these records may include infrastructure details or incident-response information that becomes available to later sessions or other local users/processes.

Content

Scanner excerpt · SKILL.md (reported line 22)May include surrounding context.

md
**Core Operations**
- `scan <input>` — Record a process scan entry (without args: show recent scans)
- `monitor <input>` — Log a monitoring observation (without args: show recent entries)
- `report <input>` — Create a report entry (without args: show recent reports)
- `alert <input>` — Log an alert or warning (without args: show recent alerts)
- `top <input>` — Record top-process data (without args: show recent entries)
- `usage <input>` — Track resource usage (without args: show recent entries)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

Allowing unrestricted free-text input for every command without guidance on prohibited data creates a data-handling risk rather than code execution risk. Users or agents may paste credentials, internal hostnames, incident details, or other sensitive content, which the skill is designed to retain and later export/search, increasing exposure.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
88% confidence
Finding

Requiring write access to a user-local data directory confirms that the skill persists operational content on disk beyond the immediate invocation. In context, this increases the danger because the tool encourages logging process observations, alerts, fixes, backups, and restores—exactly the sort of metadata that can aid reconnaissance if exposed.

Content

Scanner excerpt · SKILL.md (reported line 80)May include surrounding context.

md
- **Bash** 4.0+ with `set -euo pipefail`
- Standard Unix utilities: `date`, `wc`, `du`, `tail`, `grep`, `sed`, `cat`, `basename`
- No external dependencies, no network access required
- Write access to `~/.local/share/process-viewer/`

## When to Use

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

Branding the script as a 'Process Viewer' and 'sysops toolkit' suggests privileged operational insight, yet the code performs no such actions. In security-sensitive environments, misleading operational claims increase the chance that operators will trust the tool with sensitive host information or use it in workflows where transparency about data handling is critical.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

Persisted user inputs are later searchable and exportable, which amplifies the privacy and security risk of collecting arbitrary text. Even if storage is local, easy export/search workflows make sensitive entries more discoverable, more reusable, and more likely to be exfiltrated or mishandled.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

Commands like 'fix', 'cleanup', 'backup', and 'restore' imply meaningful system operations, but they only persist supplied text. This can induce users to enter operational details, recovery notes, paths, credentials, or incident context under false assumptions, leading to sensitive data retention in plain local logs.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill is presented as a system monitoring/debugging tool, but the implementation only records arbitrary user input to local files. This deceptive mismatch can mislead users into pasting system details, commands, or secrets they believe are being analyzed, creating an unnecessary data collection surface without delivering the claimed functionality.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script persistently stores arbitrary user-provided input without clear notice at the point of entry. Users may provide hostnames, incident details, commands, file paths, or credentials, and that information is then retained in predictable plaintext files under the home directory, increasing exposure to local compromise or accidental disclosure.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.