Back to skill

Security audit

Mechanic

Security checks for vulnerabilities and agentic risk

Overview

The skill is a legitimate vehicle-maintenance tracker, but it stores and reuses sensitive vehicle and insurance details, sends VINs to NHTSA, and creates a recurring check-in job without enough privacy and lifecycle controls.

Install only if you are comfortable with a local agent keeping vehicle history, VINs, insurance policy details, provider history, warranty data, fuel logs, and business-use expense information in workspace files. Before using VIN decode or recall checks, understand that the VIN may be sent to NHTSA. Review or disable the weekly cron job if you do not want background check-ins, avoid storing full insurance policy numbers unless you need emergency-card access, and keep the workspace private.

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
SKILL.md:998
Finding
Plaintext Storage and Unredacted Disclosure of Vehicle and Insurance Identifiers<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 998-1043; related collection and storage instructions at lines 129-132 and 189-199 **Vulnerability Type**: Plaintext sensitive-data storage and excessive disclosure **Risk Level**: Medium ### Vulnerable Code Snippet ```json { "emergency_info": { "vin": "1FT8W3BT0MED12345", "insurance_provider": "State Farm", "policy_number": "SF-123456789", "roadside_assistance_phone": "1-800-555-1234", "tire_size_front": "275/70R18", "tire_size_rear": "275/70R18", "tire_pressure_front_psi": 65, "tire_pressure_rear_psi": 80, "oil_type": "15W-40 CK-4 Full Synthetic", "oil_capacity": "15 quarts", "coolant_type": "Motorcraft Orange VC-3DIL-B", "def_type": "API certified DEF", "trans_fluid": "Motorcraft Mercon ULV", "tow_rating_lbs": 20000, "gvwr_lbs": 14000, "gcwr_lbs": 37000, "payload_lbs": 4300, "key_fob_battery": "CR2450", "fuel_type": "Diesel (Ultra Low Sulfur)", "fuel_tank_gallons": 48, "lug_nut_torque_ft_lbs": 165, "jack_points": "Frame rails, front and rear", "notes": "" } } ``` ```text ### Quick Access Queries Respond instantly to: - "What's my VIN?" → Return VIN - "What are my truck's tire specs?" → Tire sizes and pressures - "What oil does my truck take?" → Oil type and capacity - "Insurance info?" → Provider, policy number, phone - "Roadside assistance number?" → Phone number - "What's my tow rating?" → Tow rating, GVWR, GCWR - "Key fob battery?" → Battery type - "Lug nut torque?" → Torque spec ``` ```text ### Emergency Card Format When asked for "emergency info" or "vehicle card": ``` 🚨 Emergency Info — [Vehicle Label] ━━━━━━━━━━━━━━━━━━━━━━━━━━━ VIN: [vin] Insurance: [provider] — Policy #[number] Roadside: [phone] 🔧 Specs Tires: F:[size] R:[size] Pressure: F:[X]psi R:[X]psi Oil: [type] ([capacity]) Coolant: [type] Fuel: [type] ([tank] gal) Key fob battery: [type] 📏 Ratings Tow: [X] lbs | GVWR: ...[truncated 3011 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. **Make sensitive storage explicitly opt-in** - Do not collect insurance policy numbers during ordinary vehicle setup. - Explain why each sensitive field is requested and how it will be stored. - Obtain explicit confirmation before persisting VIN or insurance information. 2. **Minimize retained information** - Store only the last four characters of a policy number unless the user specifically enables full emergency-card storage. - Avoid duplicating the VIN in both the top-level vehicle record and `emergency_info`. - Separate ordinary maintenance data from sensitive emergency information. 3. **Protect data at rest** - Store full insurance identifiers in an operating-system credential store or encrypted secrets facility rather than ordinary JSON. - If file storage is unavoidable, require owner-only file and directory permissions. - Do not include sensitive state files in routine logs, diagnostics, exports, or unencrypted backups. 4. **Redact output by default** - Display masked values such as `VIN: *************2345` and `Policy: ********6789`. - Require a separate explicit request and confirmation before showing complete values. - Avoid sending complete identifiers through group chats or other shared delivery channels. 5. **Add lifecycle controls** - Provide commands to inspect, update, export, and permanently delete sensitive fields. - Define a retention policy and periodically ask whether emergency information should remain stored. 6. **Constrain access** - Document that other Skills and workspace processes must not read the mechanic state unless authorized. - Consider placing sensitive emergency information in a dedicated file with narrower access controls than routine maintenance data. 7. **Improve network disclosure** - Before sending a VIN to NHTSA, clearly disclose that the identifier will be transmitted to an external government API. - Offer make/model/year rec ...[truncated 68 chars]
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (8)

Missing User Warnings

High
Confidence
98% confidence
Finding
The skill is designed to store highly sensitive information including VINs, insurance provider and policy number, roadside assistance numbers, location-linked service history, and warranty records, and to transmit some of that data to external NHTSA endpoints. Without a clear upfront privacy notice and consent flow, users may disclose regulated or sensitive data without understanding retention, sharing, or exposure risks.

Skill Enumeration

Medium
Category
Agent Snooping
Content
### Manual
Copy `SKILL.md` into your Clawdbot skills directory:
```
<workspace>/skills/mechanic/SKILL.md
```

## Setup
Confidence
80% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The README states that first use will set up a recurring cron job, but it does not prominently warn users before installation or explain what will run, how often, and how to disable it. Silent or under-disclosed persistence is security-relevant because background scheduled tasks expand the attack surface, surprise users, and can continue operating with access to user data after the initial interaction.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The README explicitly says the skill stores vehicle records in local data files and advertises emergency info cards containing VIN and insurance details, but it does not warn users that sensitive personal and vehicle-identifying information will be persisted on disk. This creates privacy and security risk because users may provide insurance, VIN, provider history, and location-related data without understanding retention, local exposure, backup syncing, or shared-workspace access implications.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The description explicitly says to use the skill for 'anything mechanic-related,' which is broad enough to trigger on generic automotive conversations rather than clear user intent to access a data-storing maintenance tracker. That can cause unnecessary activation, collection of sensitive vehicle/insurance/VIN data, and unintended external API lookups.

External Transmission

Medium
Category
Data Exfiltration
Content
Monitor for open recalls on all tracked vehicles using the free NHTSA API (no API key required).

### API Endpoints
- **By make/model/year:** `https://api.nhtsa.dot.gov/recalls/recallsByVehicle?make=Ford&model=F-350&modelYear=2021`
- **By VIN (more precise):** `https://api.nhtsa.dot.gov/recalls/recallsByVin?vin=XXXXX`

If a VIN is stored, prefer the VIN-based lookup. Otherwise fall back to make/model/year.
Confidence
92% confidence
Finding
The skill instructs sending vehicle identifiers to an external NHTSA recall API, and elsewhere prefers VIN-based lookups. VINs are unique identifiers that can be sensitive when linked with service history, insurance, and location data, so transmitting them off-platform creates privacy and correlation risk even if the destination is legitimate.

External Transmission

Medium
Category
Data Exfiltration
Content
### API Endpoints
- **By make/model/year:** `https://api.nhtsa.dot.gov/recalls/recallsByVehicle?make=Ford&model=F-350&modelYear=2021`
- **By VIN (more precise):** `https://api.nhtsa.dot.gov/recalls/recallsByVin?vin=XXXXX`

If a VIN is stored, prefer the VIN-based lookup. Otherwise fall back to make/model/year.
Confidence
94% confidence
Finding
The VIN-specific recall endpoint explicitly directs the skill to transmit a full VIN to a third-party service. Because the same skill also stores insurance details, policy numbers, emergency contacts, and maintenance history, a mistaken or silent VIN transmission materially increases privacy exposure and linkage risk.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```

### Integration with Tax-Professional Skill
If the user confirms, reference `skills/tax-professional/SKILL.md` and log to `data/tax-professional/YYYY-expenses.json`:
```json
{
  "date": "2026-01-15",
Confidence
80% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Static analysis

No suspicious patterns detected.