Back to skill

Security audit

redfin

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent for Redfin lookups, but it asks users to run unpinned third-party code and a browser extension against a signed-in Redfin session.

Review this before installing. Use it only if you are comfortable running third-party MCP and Chrome extension code with access to your signed-in Redfin session. Prefer pinned, reviewed versions of redfin-mcp and fetchproxy, inspect the extension permissions, and avoid invoking saved-home or saved-search tools unless you intend to expose that account-linked data to the agent.

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
SKILL.md:19
Finding
Unpinned Third-Party MCP Server and Browser Extension Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 19–36 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium ### Vulnerable Code Snippet ```markdown `.mcp.json` (project) or `~/.claude/mcp.json` (global): ```json { "mcpServers": { "redfin": { "command": "npx", "args": ["-y", "redfin-mcp"] } } } ``` ### 2. Install the fetchproxy extension (one-time, shared across all fetchproxy-based MCPs) ```bash git clone https://github.com/chrischall/fetchproxy cd fetchproxy npm ci npm --workspace=@fetchproxy/extension-chrome run build ``` ``` ### Technical Analysis The configuration invokes `npx -y redfin-mcp` without specifying an exact package version or verifying package integrity. This causes npm to retrieve and execute whichever release is current at installation or invocation time. The effective executable can therefore change after the Skill itself has been reviewed. The browser extension installation is similarly based on a mutable repository default branch. No release tag, commit hash, checksum, or signature is specified before the extension is built and loaded unpacked into Chrome. Although `npm ci` constrains dependencies according to the repository's lockfile at the checked-out revision, it does not protect against the repository revision itself changing or being compromised. These components are particularly sensitive because they operate alongside a signed-in Redfin browser tab and are intended to broker requests using that browser session. A malicious package release, repository revision, or dependency could execute code under the user's local account or abuse access exposed through the browser extension. The reference to `.mcp.json` or `~/.claude/mcp.json` identifies configuration destinations and does not, by itself, demonstrate access to unrelated credentials. Access to Redfin saved homes and searches is aligned with the declared functionality. The confirmed weakness is the absen ...[truncated 1998 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin the MCP server to an exact audited version: ```json { "mcpServers": { "redfin": { "command": "npx", "args": ["-y", "redfin-mcp@<audited-exact-version>"] } } } ``` 2. Prefer installing from a locked dependency manifest rather than retrieving an executable package dynamically on every invocation. 3. Pin `fetchproxy` to an audited commit or cryptographically signed release: ```bash git clone https://github.com/chrischall/fetchproxy cd fetchproxy git checkout <audited-commit-hash> ``` 4. Publish expected checksums or signatures for the MCP package, repository revision, built extension, and other distributed artifacts. Verify them before execution or loading. 5. Use reproducible builds and document the exact Node.js, npm, package-lock, MCP package, and extension versions used during security review. 6. Review and document the extension manifest. Restrict host permissions to the minimum Redfin origins required for the declared functionality and avoid access to unrelated websites, cookies, tabs, or browser data. 7. Prefer a signed, versioned extension release over instructing users to load an unpacked build from a mutable source checkout. 8. Run the MCP process with reduced operating-system privileges and limit its filesystem and network access where practical. 9. Establish an update-review process so that new package versions and repository revisions are not adopted automatically before their provenance, dependency changes, and requested permissions are reviewed. ]]>
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 (3)

MCP Config Access

High
Category
Agent Snooping
Content
### 1. Install redfin-mcp

`.mcp.json` (project) or `~/.claude/mcp.json` (global):

```json
{
Confidence
95% confidence
Finding
Skill accesses MCP server configuration files (mcp.json). MCP configs contain server URLs, authentication tokens, and tool definitions — reading them allows the skill to discover and potentially abuse other tool integrations.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger text is overly broad because it claims activation for essentially any request involving Redfin properties, prices, or saved activity. That increases the chance the skill is invoked in contexts the user did not clearly intend, which can lead to unnecessary access to account-linked or browsing-session-backed data.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The skill advertises access to signed-in saved homes and saved searches but does not prominently warn that this uses the user's authenticated Redfin browser session. In a skill context, that creates a privacy risk because an invocation may expose personal preferences, locations of interest, and other account-associated data without sufficiently explicit user awareness.

Static analysis

No suspicious patterns detected.