Back to skill

Security audit

Firecrawl Download

Security checks for vulnerabilities and agentic risk

Overview

This skill does what it says, but it allows unpinned third-party CLI execution and encourages automatic bulk downloads without a clear user checkpoint.

Review this skill before installing. It is not showing exfiltration or destructive behavior, but it can run an unpinned npm-resolved Firecrawl CLI and can download many pages to disk while skipping confirmation. Use it only when you trust the Firecrawl package source and are comfortable setting explicit limits, paths, and target domains before running it.

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

Unpinned Third-Party Package Execution via npx

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, line 7
Vulnerability Type: T08: Insecure Dependencies
Risk Level: Medium

Complete Code Snippet:

yaml
allowed-tools:
  - Bash(firecrawl *)
  - Bash(npx firecrawl *)

Technical Analysis

The skill permits execution of npx firecrawl without pinning an exact package version or enforcing an integrity constraint. If the package is not already installed locally, npx may resolve and download mutable third-party code from the configured npm registry before executing it.

The project contains no lockfile, package checksum, provenance verification, or other dependency control for this command. Consequently, the code ultimately executed can differ from the code that was reviewed. Exploitation would depend on compromise or malicious resolution of the external package, registry, account, or dependency chain.

Attack Path

  1. An attacker compromises the firecrawl package, one of its dependencies, its publisher account, or the package-resolution infrastructure.
  2. A malicious or compromised package version becomes the version selected by the unpinned npx firecrawl command.
  3. The agent invokes an allowed command such as npx firecrawl download ....
  4. npx retrieves the selected package when no trusted local installation satisfies the request.
  5. Package lifecycle behavior or CLI code executes with the privileges and environment of the agent process.
  6. The malicious code can access resources available to that process.

Impact Assessment

Successful exploitation could result in arbitrary code execution under the account running the agent. The accessible scope may include files writable or readable by that account, environment variables, locally available credentials, network resources, and project data. This authorization does not itself grant administrative privileges; impact is bounded by the agent process's existing permissions unless ...[truncated 50 chars]

Remediation
View remediation

Remediation Suggestions

  • Remove the Bash(npx firecrawl *) authorization when the preinstalled firecrawl executable is sufficient.
  • If npx is required, pin the package to a reviewed exact version rather than resolving the latest compatible release.
  • Install dependencies through a committed lockfile containing registry integrity metadata.
  • Verify package provenance, publisher identity, and cryptographic integrity before installation or execution.
  • Use a trusted internal registry or an approved package mirror where practical.
  • Disable package lifecycle scripts where compatible with the package and deployment process.
  • Execute the CLI in a sandbox with minimal filesystem, credential, and network access.
  • Establish an update process in which dependency changes are reviewed and tested before deployment.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (5)

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

The manifest references npx firecrawl without version pinning, creating a supply-chain risk at the skill boundary. Since this skill is specifically designed for frequent automated invocation, unpinned execution increases the chance that a future malicious or broken package version is run with file-write capability.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The description includes broad trigger phrases such as 'save for reference' and 'download the site', which can cause the agent to invoke this skill in situations where the user did not explicitly consent to bulk website downloading or local file creation. In context, this is more dangerous because the skill performs potentially large-scale network access and writes many files under .firecrawl/.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding

The skill allows execution via npx firecrawl * without pinning an exact package version. Because npx resolves and runs whatever version is currently published or otherwise selected at execution time, a compromised upstream release or dependency-chain issue could result in arbitrary code execution in the agent environment.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The documentation explicitly says to 'Always pass -y to skip the confirmation prompt' for a command that maps a site and writes many local files. This encourages unattended bulk actions without an explicit warning to the user about network scope, storage impact, or the possibility of downloading unintended content.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
88% confidence
Finding

The option table promotes -y as 'always use in automated flows', which delegates an impactful decision—bulk remote retrieval and local file creation—without a human checkpoint. In this skill's context, autonomous confirmation skipping is more risky because the command can recurse through many pages, include subdomains, and persist content to disk.

Content

Scanner excerpt · SKILL.md (reported line 59)May include surrounding context.

md
| `--include-paths <paths>` | Only download matching paths                             |
| `--exclude-paths <paths>` | Skip matching paths                                      |
| `--allow-subdomains`      | Include subdomain pages                                  |
| `-y`                      | Skip confirmation prompt (always use in automated flows) |

## Scrape options (all work with download)

Static analysis

No suspicious patterns detected.