Back to skill

Security audit

Oven

Security checks for vulnerabilities and agentic risk

Overview

This is a local oven/home logging tool with disclosed local storage and no evidence of hidden network access, privilege escalation, or destructive behavior.

Before installing, understand that anything you log is saved in plaintext under ~/.local/share/oven and exports duplicate that history locally. Avoid entering sensitive personal details, and be careful opening CSV exports in spreadsheet software because user-entered values are not sanitized for formulas.

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:53
Finding
Unescaped User-Controlled Data in JSON and CSV Exports<![CDATA[ ## Vulnerability Details **File Location**: `scripts/script.sh`, lines 53–73 **Vulnerability Type**: Improper output encoding and spreadsheet formula injection **Risk Level**: Medium ### Vulnerable Code ```bash _export() { local fmt="${1:-json}" local out="$DATA_DIR/export.$fmt" case "$fmt" in 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 User-supplied tracking values are stored in log files and subsequently inserted directly into JSON and CSV exports without format-specific encoding. For JSON output, characters such as double quotes, backslashes, control characters, and embedded line breaks are not escaped. A crafted value can therefore terminate the intended JSON string, inject additional properties or objects, or make the exported document syntactically invalid. For CSV output, fields are neither quoted nor escaped. Commas, double quotes, and line breaks can alter the exported row structure. More importantly, values beginning with spreadsheet formula indicators such as `=`, `+`, `-`, or `@` may be interpreted as formulas when the CSV file is opened in spreadsheet software. The exact effects depend on the spreadsheet application and its security settin ...[truncated 1849 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Generate JSON with a format-aware serializer rather than string interpolation. For example, use `jq` with `--arg` so quotes, backslashes, control characters, and newlines are encoded correctly: ```bash jq -n \ --arg type "$name" \ --arg time "$ts" \ --arg value "$val" \ '{type: $type, time: $time, value: $value}' ``` Accumulate these objects into a valid JSON array rather than manually writing separators. 2. Apply RFC 4180-compatible CSV encoding: - Enclose every field in double quotes. - Replace every embedded double quote with two double quotes. - Preserve embedded commas and line breaks inside quoted fields. - Prefer a tested CSV library or dedicated serialization utility. 3. Mitigate spreadsheet formula injection when exports are intended for spreadsheet use. For user-controlled fields beginning with `=`, `+`, `-`, `@`, tab, or carriage return, prepend an apostrophe or otherwise encode the value according to the target spreadsheet application's safe-import guidance. 4. Add regression tests covering: - Double quotes and backslashes. - Commas and embedded line breaks. - JSON control characters. - Values beginning with spreadsheet formula indicators. - Empty fields and values containing the log delimiter. 5. Document whether CSV files are intended for spreadsheet use and warn users not to bypass spreadsheet import protections. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (6)

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding
The description partially matches the code: the script does support inventory, schedule, reminders, usage logging, and stats, all stored locally. However, the implemented tool is materially broader than the declared purpose. It acts as a general local logging/export/search toolkit with many extra categories unrelated or only loosely related to 'track oven usage and cooking schedules.' The primary purpose is not just oven-session tracking; it includes generic data capture, reporting, export, search, maintenance/status summaries, and miscellaneous categories like cost, seasonal, and tips. No dangerous external access or hidden permissions appear, but the declared description understates the actual capabilities enough to count as a mismatch.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The script persistently stores all user-provided inputs in plaintext log files under ~/.local/share/oven without clearly warning users. Because entries may include schedules, reminders, inventory details, or other sensitive household information, this can create an avoidable privacy exposure to other local processes, backups, or anyone with access to the account.

Description-Behavior Mismatch

Medium
Confidence
93% confidence
Finding
The manifest describes a focused oven skill for tracking oven usage and cooking schedules, with inventory checks and stats as related functions. The help and command set expose unrelated capabilities such as checklist, cost, maintain, report, seasonal, and tips, indicating a generic household toolkit rather than a narrowly scoped oven tracker.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The export feature aggregates stored user data into additional files on disk without an upfront warning, increasing the footprint and duplication of potentially sensitive information. Exported CSV, JSON, or TXT files are easier to copy, ingest, or exfiltrate than scattered logs, so silent creation raises privacy and data-handling risk in the skill context.

Missing User Warnings

Low
Confidence
88% confidence
Finding
The documentation says the tool works offline and mentions automatic history/activity logging plus export, but it does not clearly warn users that their activity will be persistently stored under a local path. In a household-tracking context this can expose behavioral history or sensitive notes to other local users, backups, or accidental export, especially if users assume the tool is ephemeral.

Intent-Code Divergence

Low
Confidence
88% confidence
Finding
The file header identifies the script as 'Oven — home tool', which aligns with an oven-oriented skill name, but the user-facing help says 'Oven v2.0.0 — home toolkit' and lists many non-oven-specific commands. This documentation creates conflicting intent signals about whether the script is a focused oven skill or a general-purpose household logger.

Static analysis

No suspicious patterns detected.