Back to skill

Security audit

Firecrawl Web Scraper

Security checks across malware telemetry and agentic risk

Overview

This is a straightforward Firecrawl scraping skill that uses an external API as advertised, with privacy and credit-use considerations users should understand.

Install this only if you intend to use Firecrawl as a third-party scraping service. Do not submit private internal URLs, secrets embedded in URLs, proprietary pages, or regulated data unless sharing them with Firecrawl is acceptable, and start with low crawl/search limits to control credit usage.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (11)

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The skill promotes scraping, crawling, and search through the external Firecrawl API but does not warn users that their target URLs, search queries, and retrieved page content are transmitted to a third party. This omission can lead to inadvertent disclosure of sensitive research targets, internal URLs, proprietary content, or regulated data to an external service.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The script sends user-supplied URLs and search queries, along with scraping/crawling parameters, to the external Firecrawl service without an explicit disclosure or consent mechanism at the point of use. In an agent-skill context, users may assume processing is local, so this can unintentionally expose sensitive URLs, internal targets, or proprietary queries to a third party.

External Transmission

Medium
Category
Data Exfiltration
Content
payload["waitFor"] = wait_for
    
    try:
        response = requests.post(
            "https://api.firecrawl.dev/v1/scrape",
            headers={
                "Content-Type": "application/json",
Confidence
88% confidence
Finding
This duplicate finding identifies the same outbound scrape request that includes a bearer token and user-provided target URL. The primary risk is not token exposure in code, but undisclosed third-party transmission of potentially sensitive target information and resulting content.

External Transmission

Medium
Category
Data Exfiltration
Content
payload["includePaths"] = include_paths
    
    try:
        response = requests.post(
            "https://api.firecrawl.dev/v1/crawl",
            headers={
                "Content-Type": "application/json",
Confidence
88% confidence
Finding
This duplicate finding points to the same crawl API request to Firecrawl using a bearer token and user-supplied crawl target. The danger comes from sending crawl scope and discovered content to a third party without explicit safeguards or user awareness.

External Transmission

Medium
Category
Data Exfiltration
Content
}
    
    try:
        response = requests.post(
            "https://api.firecrawl.dev/v1/search",
            headers={
                "Content-Type": "application/json",
Confidence
88% confidence
Finding
This duplicate finding refers to the same external search request that sends user queries to Firecrawl. The risk remains inadvertent disclosure of sensitive search intent or related scraped content to an external processor.

External Transmission

Medium
Category
Data Exfiltration
Content
payload["waitFor"] = wait_for
    
    try:
        response = requests.post(
            "https://api.firecrawl.dev/v1/scrape",
            headers={
                "Content-Type": "application/json",
Confidence
88% confidence
Finding
This duplicate finding identifies the same outbound scrape request that includes a bearer token and user-provided target URL. The primary risk is not token exposure in code, but undisclosed third-party transmission of potentially sensitive target information and resulting content.

External Transmission

Medium
Category
Data Exfiltration
Content
payload["includePaths"] = include_paths
    
    try:
        response = requests.post(
            "https://api.firecrawl.dev/v1/crawl",
            headers={
                "Content-Type": "application/json",
Confidence
88% confidence
Finding
This duplicate finding points to the same crawl API request to Firecrawl using a bearer token and user-supplied crawl target. The danger comes from sending crawl scope and discovered content to a third party without explicit safeguards or user awareness.

External Transmission

Medium
Category
Data Exfiltration
Content
}
    
    try:
        response = requests.post(
            "https://api.firecrawl.dev/v1/search",
            headers={
                "Content-Type": "application/json",
Confidence
88% confidence
Finding
This duplicate finding refers to the same external search request that sends user queries to Firecrawl. The risk remains inadvertent disclosure of sensitive search intent or related scraped content to an external processor.

External Transmission

Medium
Category
Data Exfiltration
Content
try:
        response = requests.post(
            "https://api.firecrawl.dev/v1/scrape",
            headers={
                "Content-Type": "application/json",
                "Authorization": f"Bearer {api_key}"
Confidence
86% confidence
Finding
This finding highlights the hardcoded external Firecrawl endpoint used for scraping. Using a third-party endpoint is expected for this skill, but it still creates a real data-exposure boundary because user inputs and retrieved content are sent off-system.

External Transmission

Medium
Category
Data Exfiltration
Content
try:
        response = requests.post(
            "https://api.firecrawl.dev/v1/crawl",
            headers={
                "Content-Type": "application/json",
                "Authorization": f"Bearer {api_key}"
Confidence
86% confidence
Finding
This finding points to the external Firecrawl crawl endpoint. In the context of a crawler, sending target sites and crawl-derived content to a remote service is an intended behavior, but still a meaningful security concern when users may provide sensitive or internal domains.

External Transmission

Medium
Category
Data Exfiltration
Content
try:
        response = requests.post(
            "https://api.firecrawl.dev/v1/search",
            headers={
                "Content-Type": "application/json",
                "Authorization": f"Bearer {api_key}"
Confidence
86% confidence
Finding
This finding flags the Firecrawl search endpoint URL itself. As with the other endpoint-only findings, the issue is not the presence of an HTTPS URL, but the fact that sensitive user queries and related content are intentionally sent to a third-party processor without explicit user warning in the tool flow.

VirusTotal

65/65 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

No suspicious patterns detected.