Back to skill

Security audit

Furniture

Security checks for vulnerabilities and agentic risk

Overview

This is a local furniture/home logging CLI with disclosed local storage, though its export handling and documentation are rough.

Install only if you are comfortable storing furniture and household notes in local plaintext files under ~/.local/share/furniture. Avoid entering highly sensitive details, be careful sharing exports, and treat CSV exports cautiously if opened in spreadsheet software.

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

Unescaped User Input in JSON and CSV Exports

Content
View full analysis
> "$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" ``` ### Technical Analysis The export implementation inserts stored record values directly into JSON and CSV output without applying format-specific escaping. For JSON exports, the `value`, `type`, and `time` fields are interpolated into quoted JSON strings. Embedded quotation marks, backslashes, control characters, or newlines are not JSON-escaped. Crafted record content can therefore terminate a string, inject additional JSON properties or objects, or make the export syntactically invalid. For CSV exports, fields are concatenated with commas without CSV quoting or escaping. Values containing commas, quotation marks, carriage returns, or newlines can alter the exported row and column structure. In addition, a value beginning with characters interpreted as spreadsheet formulas, such as `=`, `+`, `-`, or `@`, may be evaluated when a user opens the CSV file in compatible spreadsheet software. The script does not itself evaluate the exported content as shell code. Exploitation depends on a downstream JSON consumer or spreadsheet processing the generated file. ### Attack Path 1. An attacker causes a crafted furniture record to be stored, such as by persuading a user or automation process to invoke a record command with attacker-controlled content. An attacker with access to the user's data directory could also place crafted content directly in a `.log` file. 2. The attacker includes JSON metachara ...[truncated 1347 chars]
Remediation
View remediation
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • 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
94% confidence
Finding

The description partially overlaps with the code because the script can record furniture-related entries, inventory, schedules, maintenance notes, and reminders. However, the implementation is much broader and more generic than declared: it is essentially a local text logging/export/search utility with many loosely related categories and reporting features. More importantly, the declared purpose specifically mentions managing warranty details and tracking warranty expiry dates, but the code has no dedicated warranty commands, date handling, expiry logic, or reminder mechanism tied to warranty deadlines—only free-form text logging. Therefore the description does not accurately represent the actual behavior.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The manifest describes a focused furniture-management skill for cataloging furniture, scheduling cleaning, and tracking warranty expiry dates. However, the exposed commands include broad free-form categories such as checklist, usage, cost, log, report, seasonal, and tips, and the code simply appends arbitrary user input into corresponding logs rather than providing furniture- or warranty-specific behavior.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The script persistently stores arbitrary user-provided content under ~/.local/share/furniture and logs activity without providing any clear retention notice, consent flow, or deletion policy. In a home-management context, these entries can include sensitive details such as schedules, asset inventories, costs, and warranty information, creating a privacy and confidentiality risk if the local account or backups are later accessed.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

Commands like log, report, seasonal, and tips provide a generic note-taking capability that is not clearly justified by the stated purpose of tracking furniture, maintenance, and warranties. This expands the skill into a general home toolkit rather than a purpose-limited furniture manager.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
79% confidence
Finding

SKILL.md states 'Works entirely offline — your data never leaves your machine', which conveys a no-network/offline intent. The same document advertises remote URLs and contact endpoints, so the documentation presents conflicting intent about whether network interaction is part of the skill experience.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

The skill is designed to collect household inventory and maintenance records, then log history and export data, but it does not warn users that this may persist sensitive information such as item ownership, location, value, or schedules. In the context of a home-inventory skill, silent persistence and easy export increase privacy and operational security risk if local files are exposed, shared, or backed up insecurely.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.