Back to skill

Security audit

Used car recommender

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed UK used-car advisor that searches public car listings and gives buying guidance, with some privacy and dependency cautions but no evidence of malicious behavior.

Install only in an isolated Python environment, review or pin dependencies before running pip install, and be aware that live searches may send your budget, vehicle preferences, city, or postcode to marketplace websites. Treat image-based condition checks and sales-speed estimates as advisory only, and verify important details with MOT/HPI checks and an in-person inspection.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
README.md:92
Finding
Unpinned Third-Party Dependencies Permit Supply-Chain Code Execution## Vulnerability Details **File Location**: `README.md:92-96` **Additional Locations**: `requirements.txt:1-3`, `docs/AUTOTRADER_INTEGRATION.md:30-32`, `docs/AUTOTRADER_INTEGRATION.md:340-343`, `docs/AUTOTRADER_INTEGRATION.md:362-371`, `docs/AUTOTRADER_INTEGRATION.md:427-428` **Vulnerability Type**: Unpinned and unverifiable third-party package installation **Risk Level**: Medium ### Vulnerable Code `README.md:92-96`: ```bash # Install basic dependencies first pip install -r ~/.cursor/skills/uk-car-recommender/requirements.txt # Add AutoTrader support pip install autotrader_scraper ``` `requirements.txt:1-3`: ```text requests>=2.31.0 beautifulsoup4>=4.12.0 lxml>=5.0.0 ``` The same unpinned `pip install autotrader_scraper` instruction is repeated in `docs/AUTOTRADER_INTEGRATION.md`. ### Technical Analysis The project recommends installing `autotrader_scraper` directly from the package index without an exact version, integrity hash, lockfile, or package-provenance verification. The primary dependencies likewise use lower-bound-only constraints, allowing future releases outside the audited dependency set to be installed. Python package installation may execute package-controlled build backends and installation logic. Therefore, the code ultimately executed during installation can change after this project has been reviewed. If the package publisher account or distribution infrastructure is compromised, or if package ownership changes, following the documented command could install and execute attacker-controlled code. This finding does not establish that the current `autotrader_scraper` package is malicious. The vulnerability is the absence of controls ensuring that users receive the specific dependency artifacts reviewed and tested by the project. ### Attack Path 1. An attacker compromises the publisher account or release pipeline for `autotrader_scraper`, takes control of the package name, ...[truncated 1863 chars]
Remediation
## Remediation Suggestions 1. Pin every production dependency to an exact, reviewed version: ```text requests==<reviewed-version> beautifulsoup4==<reviewed-version> lxml==<reviewed-version> autotrader_scraper==<reviewed-version> ``` 2. Generate and commit a hash-locked requirements file containing hashes for every direct and transitive dependency. Install it using: ```bash python -m pip install --require-hashes -r requirements.lock ``` 3. Replace every documented `pip install autotrader_scraper` command with installation from the reviewed lockfile. Keep README and integration documentation consistent. 4. Verify the package's publisher, repository, release provenance, and source-to-wheel correspondence before approving a version. Record the reviewed version and artifact hashes. 5. Use a controlled internal package mirror or artifact registry that only contains approved artifacts. Disable unexpected fallback to public indexes where practical. 6. Run dependency installation in an isolated virtual environment or container under a non-privileged account. Do not install the package with administrator or root privileges. 7. Add automated dependency review, vulnerability scanning, and controlled update pull requests. Require security review and test execution before changing locked versions. 8. If the optional package cannot be reliably verified, remove the installation recommendation and retain the local fallback implementation, or vendor a reviewed implementation while maintaining an explicit update process.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (47)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
The documented capability appears to include analytics modules and popularity/sales-speed inference rather than the broad advisory checks advertised. That mismatch creates a trust and provenance problem: consumers may believe the skill verified reliability or history-related factors when it only computed market statistics from listings.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
The documented capability appears to include analytics modules and popularity/sales-speed inference rather than the broad advisory checks advertised. That mismatch creates a trust and provenance problem: consumers may believe the skill verified reliability or history-related factors when it only computed market statistics from listings.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
The documented capability appears to include analytics modules and popularity/sales-speed inference rather than the broad advisory checks advertised. That mismatch creates a trust and provenance problem: consumers may believe the skill verified reliability or history-related factors when it only computed market statistics from listings.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
The documented capability appears to include analytics modules and popularity/sales-speed inference rather than the broad advisory checks advertised. That mismatch creates a trust and provenance problem: consumers may believe the skill verified reliability or history-related factors when it only computed market statistics from listings.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
The documented capability appears to include analytics modules and popularity/sales-speed inference rather than the broad advisory checks advertised. That mismatch creates a trust and provenance problem: consumers may believe the skill verified reliability or history-related factors when it only computed market statistics from listings.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
The documented capability appears to include analytics modules and popularity/sales-speed inference rather than the broad advisory checks advertised. That mismatch creates a trust and provenance problem: consumers may believe the skill verified reliability or history-related factors when it only computed market statistics from listings.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
The documented capability appears to include analytics modules and popularity/sales-speed inference rather than the broad advisory checks advertised. That mismatch creates a trust and provenance problem: consumers may believe the skill verified reliability or history-related factors when it only computed market statistics from listings.

Anti-Refusal Statement

High
Category
Anti-Refusal
Content
### Interior: 🟢 ACCEPTABLE
- Steering wheel: Light wear consistent with [mileage]
- Seats: Clean, no tears
- Dashboard: No warning lights visible

### Overall Cleanliness: 🟢 GOOD
- Exterior: Clean, appears dealer-prepped
Confidence
80% confidence
Finding
Skill instructs the agent to omit warnings, disclaimers, or ethical commentary. Stripping safety caveats hides risk from the user and is a common jailbreak preamble.

Vague Triggers

Medium
Confidence
91% confidence
Finding
The README says the skill activates automatically when users mention common phrases like "used car," "best used car," "MOT history," and any UK brand with "used." These are broad everyday phrases in normal automotive discussions, and the file does not provide exclusion conditions or narrower scope to distinguish when the skill should or should not trigger.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The README explicitly describes executing live searches, downloading external listing photos, and analyzing third-party content without clearly requiring informed user consent or warning about external network access. In an agent setting, this can lead to unexpected retrieval from external sites, privacy surprises, and exposure to untrusted remote content during normal conversation flow.

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The skill instructs the agent to read local docs and perform live network searches against external marketplaces, but it does not declare any tool scope, permissions, or allowed-tools. This creates hidden capability expansion: a host may invoke file and network actions that users and policy layers cannot clearly audit or constrain.

Vague Triggers

Medium
Confidence
87% confidence
Finding
The manifest description uses broad topic-based activation language, which can make the skill fire on loosely related automotive conversations. In the context of a skill that also seeks network/file capabilities, ambiguous activation increases operational risk and user surprise.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger condition includes generic cases like when the user 'mentions they need help,' which is too broad for a specialized skill. Overbroad activation can cause the skill to engage unexpectedly, increasing the likelihood of unnecessary file reads, network searches, or off-topic guidance.

Behavior Manipulation

Medium
Category
Prompt Injection
Content
- Present recommendations with actual listings as evidence

**When to use:**
- User asks for car recommendations (always prefer this over pure inference)
- User provides budget + location
- After gathering initial requirements in Stage 1-2
Confidence
70% confidence
Finding
Subtle instructions detected that may alter agent decision-making or introduce hidden biases.

Session Persistence

Medium
Category
Rogue Agent
Content
**Step-by-step process:**

**3.1 Generate Search Strategies**
Based on user requirements, create 3-5 search strategies covering:
- Different reliable brands/models
- Budget spread (e.g., if budget is £10k, try searches at £8k-£10k, £9k-£10k)
- Variations in fuel type (petrol, hybrid, diesel)
Confidence
60% confidence
Finding
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Intent-Code Divergence

Medium
Confidence
98% confidence
Finding
The service boundaries say the skill must not provide negotiation tactics, but the workflow includes a negotiation stage and references price discussion tactics. Conflicting instructions increase the chance the agent will bypass intended safety boundaries and provide disallowed guidance in practice.

Vague Triggers

Medium
Confidence
93% confidence
Finding
The trigger keywords "check photos", "analyze images", and similar generic phrases are broad enough to match many unrelated conversations, which can cause unintended invocation of this skill outside its intended used-car context. Over-broad activation increases the chance of context hijacking, irrelevant recommendations, and accidental processing of user inputs that were meant for another capability.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The document consistently uses UK-specific currency, regulations, marketplaces, and insurance assumptions such as £ pricing, MOT, ULEZ, VED, Gumtree, and Auto Trader. Because the guidance is written as general conversation strategy for users looking for used cars, this creates a language/locale policy issue by implicitly forcing a specific regional context without user opt-in or an explicit documented scope.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The guide explicitly instructs collecting a user's city/location and using it to query an external marketplace, but it does not require informing the user that this personal data will be sent off-platform. This creates a privacy/transparency issue because users may disclose location details without understanding they will be transmitted to a third party for live searches.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The workflow directs the agent to run shell commands that perform live marketplace searches, which necessarily trigger external network requests, but it does not require a user-facing disclosure or approval before doing so. In agent contexts, silent external requests can leak user preferences, budget, and location to third parties and violate expectations around data handling.

YARA rule 'network_reconnaissance': Network reconnaissance and scanning patterns [hacktools]

Medium
Category
YARA Match
Content
💷 Actual prices: £6,995 - £9,950 (average £8,800)
- 📅 Typical condition: 3-7 years old, 35k-60k miles
- 🏪 65% Trade sellers (most with warranty)

⭐ **Why Recommended:**
1. **Best Value** - Average price £8,800, £1,200 below budget, room to spare
2. **Legendary Reliability** - What Car? reliability rating ⭐⭐⭐⭐⭐
3. **Abundant Choices** - 23 for sale, won't struggle due to fierce competition
4. **Flexible Space** - Magic Seats, extremely high space utilization
5. **Low Running Costs** - Insurance group 7-12, VED £20-£165/year

⚠️ **Cautions:**
- Pre-2015 old model looks dated, recommend 2016+ facelift
- CVT automatic not fast-accelerating, but smooth enough for daily commute

🔗 **View actual listings:** [Gumtree search link]

---

### 【Runner-up】Toyota Yaris Hybrid (2017-2020)

📊 **Real Market Data:**
- ✓ 45 vehicles for sale (most choices)
- 💷 Actual prices: £7,500 - £10,000 (average £9,200)
- 📅 Typical condition: 4-7 years old, 40k-6
Confidence
65% confidence
Finding
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Description-Behavior Mismatch

Medium
Confidence
93% confidence
Finding
The documentation materially expands the skill from advisory recommendations into active live marketplace scraping and subsequent analysis of third-party listing content. That broadening increases the skill’s capability surface, including network access, untrusted external content ingestion, and operational behavior not clearly bounded by the original stated purpose, which can enable unexpected data flows or misuse.

Context-Inappropriate Capability

Medium
Confidence
90% confidence
Finding
The photo-analysis workflow adds a new inspection capability that instructs the agent to fetch and interpret external images from listing URLs, despite that function not being clearly justified by a used-car recommender’s declared scope. This increases exposure to untrusted remote content and encourages higher-trust judgments about listing authenticity and vehicle condition without explicit safety, privacy, or reliability guardrails.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
The document directs use of UK-only references such as MOT history checks at gov.uk, HPI checks, UK pricing in pounds, and 'Common UK Market Issues by Brand,' but does not clearly state that the skill is UK-only or require user confirmation of locale. That creates a locale-policy concern because the guidance is tailored to a specific region by default rather than offering choice or clearly justifying the restriction up front.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The workflow says it applies when a user 'asks about buying a used car or mentions they need help.' The phrase 'need help' is too generic and could match many unrelated conversations, making unintended invocation more likely.

Static analysis

No suspicious patterns detected.