Back to skill

Security audit

Property Valuation

Security checks for vulnerabilities and agentic risk

Overview

This property valuation skill is purpose-aligned and does not include hidden code or external data transfer, but it can save property details and valuation history locally in plaintext.

Install only if you are comfortable with local plaintext storage under ~/property-valuation/. Avoid saving exact addresses or sensitive transaction details unless needed, and periodically review or delete the memory and valuation files if you do not want a lasting property history.

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
memory-template.md:1
Finding
Plaintext Persistence of Property and Valuation Data## Vulnerability Details **File Location**: `memory-template.md:1-30` **Related Locations**: `SKILL.md:14-21`, `SKILL.md:42-48`, `SKILL.md:113-120`, `setup.md:14-18`, `setup.md:22-26`, `memory-template.md:45-47` **Vulnerability Type**: Plaintext storage of potentially sensitive personal and financial data **Risk Level**: Medium ### Vulnerable Code Snippets `memory-template.md:1-30`: ```markdown # Memory Template — Property Valuation Create `~/property-valuation/memory.md` with this structure: ```markdown # Property Valuation Memory ## Status status: ongoing version: 1.0.0 last: YYYY-MM-DD integration: pending | done | declined ## Context <!-- Market focus, property types, valuation purpose --> <!-- Add as you learn from conversations --> ## Market Data <!-- Local price/sqft averages, cap rates, market conditions --> <!-- Update when user provides market intel --> ## Properties Analyzed <!-- Brief log of valuations done --> <!-- Format: Date | Address/Description | Value Range | Method --> ## Notes <!-- Preferences: quick estimates vs detailed analysis --> <!-- Data sources they have access to (MLS, etc.) --> --- *Updated: YYYY-MM-DD* ``` ``` `SKILL.md:14-21`: ```markdown Memory at `~/property-valuation/`. See `memory-template.md` for structure. ``` ~/property-valuation/ ├── memory.md # Properties analyzed, market data └── valuations/ # Saved valuation reports ``` ``` `SKILL.md:42-48`: ```markdown Before estimating, gather: - Location (address or neighborhood) - Property type (SFH, condo, multi-family) - Size (sqft or sqm) - Bedrooms/bathrooms - Condition (excellent/good/fair/poor) - Year built ``` `setup.md:14-18`: ```markdown Ask early: - "Should I help with property valuations whenever you mention real estate prices or buying/selling?" - "Do you want quick estimates ...[truncated 2914 chars]
Remediation
## Remediation Suggestions 1. Require explicit, informed opt-in before retaining any property-specific record, separately from consent to perform the valuation. 2. Default to memory-free operation and allow users to obtain valuations without persistent logging. 3. Store only the minimum necessary information. Prefer user-selected aliases or coarse neighborhood identifiers instead of exact addresses. 4. Do not persist valuation ranges, transaction purposes, or property histories unless the user specifically requests retention. 5. Create the directory and files with owner-only permissions, such as directory mode `0700` and file mode `0600`, where supported. 6. Define a short retention period and automatically remove expired records. 7. Provide commands or documented procedures to inspect, redact, export, and permanently delete stored data. 8. Avoid recording sensitive context in general-purpose Markdown memory when a session-scoped representation is sufficient. 9. Update the privacy disclosure to state accurately what is retained, where it is stored, how long it is retained, and who may access it. 10. Warn users that local files may be included in device backups or exposed to other software running under the same account.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill explicitly instructs creation and ongoing maintenance of `~/property-valuation/memory.md`, which establishes persistent storage of user-derived information without any user-facing notice, consent step, retention limit, or guidance on sensitive data handling. In this context, the stored content can include market focus, user preferences, data-source access, and a log of properties analyzed, creating privacy and profiling risk if users do not realize information is being retained across sessions.

Vague Triggers

Medium
Confidence
89% confidence
Finding
The activation condition is broad enough to trigger on ordinary discussion of real-estate prices or transactions, which can cause the skill to engage outside the user's clear intent. Overbroad invocation increases the chance of unsolicited questioning, data collection, or persistence in contexts where the user did not ask for this specific skill.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The instruction to save preferences to disk does not include any user-facing notice or consent step, so users may not realize their preferences are being persistently stored. In a domain involving addresses, ownership context, and financing discussions, undisclosed persistence can capture sensitive context and create avoidable privacy risk.

Description-Behavior Mismatch

Low
Confidence
90% confidence
Finding
The setup instructs the agent to write user preferences to a local memory file, creating persistence beyond the narrow property-valuation function described. While the stored data appears limited, persistence without clear minimization, consent, or retention rules can expose personal preference data and normalize unnecessary collection.

Static analysis

No suspicious patterns detected.