Back to skill

Security audit

Fridge

Security checks for vulnerabilities and agentic risk

Overview

This is a local fridge/home logging tool with disclosed local storage, but it overpromises reminder/list features and exported files need caution.

Install only if you want a simple local text log for fridge or household notes. Do not depend on it for actual expiry-date reminders or grocery-list automation, avoid storing sensitive personal data unless you are comfortable with persistent local logs, and treat exported CSV/JSON files carefully when entries may include untrusted or pasted content.

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

Improper JSON Serialization of User-Controlled Log Values

Content
View full analysis
"$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" ;; ``` User-controlled values enter the affected export operation through command handlers such as: ```bash local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/add.log" ``` ### Technical Analysis The JSON exporter constructs JSON through string interpolation rather than a standards-compliant serializer. The `value` field originates from command-line input and is written to a log without validation or encoding. During export, characters with special JSON meanings—including double quotes, backslashes, carriage returns, and control characters—are inserted directly into a JSON string. For example, a value containing: ```text item"} , {"type":"injected","time":"now","value":"controlled ``` can alter the intended JSON structure or make the generated document invalid. The issue can affect any downstream process that trusts the exported JSON. The use of `echo "\n]"` is also implementation-dependent and does not provide reliable JSON formatting. ### Attack Path 1. An attacker persuades a user or automation process to record a crafted value with a command such as `fridge add`. 2. The command stores that value verbatim in `add.log`. 3. The user runs `fridge export json`. 4. `_export` interpolates the unescaped value directly into a JSON object. 5. The export becomes malformed or contains attacker-controlled JSON structure. 6. A d ...[truncated 774 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/script.sh:69
Finding

CSV Injection and Improper CSV Escaping in Exported Data

Content
View full analysis
"$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 ;; ``` User-controlled values are stored without validation by command handlers such as: ```bash local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/add.log" ``` ### Technical Analysis The CSV exporter concatenates fields with commas without applying RFC 4180 quoting or escaping. A stored value containing commas, double quotes, carriage returns, or newlines can therefore create additional columns or records. In addition, values beginning with spreadsheet formula indicators such as `=`, `+`, `-`, or `@` are exported verbatim. When the resulting CSV file is opened in compatible spreadsheet software, the value may be interpreted as a formula rather than inert text. Depending on the spreadsheet application and its security settings, a crafted formula may trigger external requests, expose spreadsheet data, mislead the user, or invoke dangerous legacy functionality. The Bash script does not itself execute the formula; exploitation occurs when the exported file is opened by a vulnerable or permissively configured spreadsheet application. ### Attack Path 1. An attacker supplies or convinces the user to record a value beginning with a formula character, or containing crafted CSV delimiters. 2. A Fridge command stores the value verbatim in a log file. 3. The user runs `fridge export csv`. 4. The exporter writes the value without quoting, escaping, or formula neutralization. 5. The user opens the resulting `export.csv` in spreadsheet software. 6. The spreadsheet interprets the attacker-c ...[truncated 1061 chars]
Remediation
View remediation
Vulnerability Patterns
  • 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
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The description suggests a purpose-built grocery/fridge inventory assistant with expiry reminders and shopping-list support. The code instead implements a broad, file-backed command-line logging utility that accepts arbitrary user text for many categories and can search, export, summarize, and report on those logs. While some commands like add, inventory, remind, and checklist loosely overlap with the declared purpose, the implementation does not actually compute expiry dates, generate reminders, or build grocery lists in any substantive way; it merely records free-form entries. It also includes several unrelated or broader capabilities such as maintain, seasonal, tips, report, generic log storage, and data export. Therefore the declared description does not accurately represent the code's actual behavior.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The command surface materially exceeds the stated fridge/pantry inventory purpose and exposes a generic note-logging tool under a narrow household-management description. This mismatch is dangerous because users or higher-level agents may grant trust, invoke capabilities, or store data based on the advertised scope, while the implementation silently accepts and persists arbitrary content across many unrelated commands.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The implementation does not provide the advertised expiry-reminder or grocery-list functionality and instead only appends free-form input to log files. This is dangerous because downstream agents or users may rely on the skill for time-sensitive food safety or purchasing workflows, but the tool silently fails to perform those actions, creating integrity and trust issues that can be abused through deceptive capability claims.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill prominently claims local/offline operation but does not clearly warn users up front that all actions are automatically logged to local history/activity files. This creates a privacy risk because users may enter sensitive household or personal data under the assumption that only current inventory state is stored, not an accumulating activity trail.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.