Back to skill

Security audit

Clickbank Scraper

Security checks for vulnerabilities and agentic risk

Overview

This is a disclosed ClickBank/CBTrends scraper that writes local JSON and affiliate links, with dependency and retention caveats users should review.

Install only if you are comfortable with a public web scraper that stores local JSON files and may write your ClickBank affiliate nickname into those files. Before automated or scheduled use, update/audit npm dependencies, consider pinning direct dependency versions, remove unused dependencies, and periodically clean the output archives.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (10)

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The declared purpose understates important behaviors: generating affiliate hoplinks, writing persistent local files, and only supporting a narrower hardcoded scrape target than implied. Description-to-behavior mismatches are risky because users and orchestrators may authorize the skill for simple scraping while overlooking monetization, persistence, and operational limitations that affect trust and downstream automation safety.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: undici==7.22.0 — 16 advisory(ies): CVE-2026-1525 (Undici has an HTTP Request/Response Smuggling issue); CVE-2026-6733 (undici vulnerable to HTTP response queue poisoning via keep-alive socket reuse); CVE-2026-1527 (Undici has CRLF Injection in undici via `upgrade` option) +13 more

High
Category
Supply Chain
Confidence
93% confidence
Finding

This lockfile pins transitive dependency undici to 7.22.0, and the provided advisory set indicates multiple known HIGH-severity issues including request/response smuggling, response queue poisoning, and CRLF injection. Even though this is a dependency manifest rather than executable code, the skill is a web scraper that performs outbound HTTP requests and parses remote content, so vulnerable HTTP client behavior is relevant and could be triggered by malicious or unexpected upstream servers or intermediaries.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill advertises behavior that uses environment variables and network access, but it does not declare any tool scope or permissions boundaries. In agent environments, this weakens least-privilege controls and can allow a workflow to invoke networked scraping and consume sensitive env data without explicit operator review.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The manifest describes scraping top ClickBank products by category, which implies broader category support. In code, the only configured source is a single CBTrends URL for the Health & Fitness category, so the implemented behavior is materially narrower than the stated capability.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

This markdown file documents that the skill writes multiple JSON files, including an always-current snapshot and dated archives, but it does not include any warning that running the scraper will create and retain local output files. For markdown files, SQP-2 applies when the skill description omits warnings about behaviors that could affect user data or system state; persistent file creation is such a behavior.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill states that it writes persistent output files but does not warn about local data storage, overwrite behavior, or retention. While the scraped data is not especially sensitive by itself, silent persistence can leak affiliate identifiers in hoplinks, create stale data risks, and surprise users in shared or automated environments.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
93% confidence
Finding

The dependency uses a caret range (^1.2.0), which permits automatic installation of newer minor/patch releases. This creates supply-chain risk because a compromised or breaking upstream release could be pulled in without explicit review, which is relevant for an automation scraper that may run unattended in marketing pipelines.

Content

Scanner excerpt · package.json (reported line 15)May include surrounding context.

json
"license": "ISC",
  "type": "commonjs",
  "dependencies": {
    "cheerio": "^1.2.0",
    "node-fetch": "^2.7.0"
  }
}

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
93% confidence
Finding

The dependency uses a caret range (^2.7.0), allowing newer compatible releases to be resolved at install time. That increases exposure to supply-chain compromise or unexpected behavior changes, especially in a scraper that fetches remote content and may be part of an automated affiliate workflow.

Content

Scanner excerpt · package.json (reported line 16)May include surrounding context.

json
"type": "commonjs",
  "dependencies": {
    "cheerio": "^1.2.0",
    "node-fetch": "^2.7.0"
  }
}

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The code documentation and implementation show that data is fetched from CBTrends.com rather than directly from ClickBank. While related to the stated purpose, this is still a semantic mismatch because the data source and estimation basis differ from a plain description of scraping ClickBank products.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

The top-level comment states that the scraper gets top Health & Fitness products, suggesting a limited result set. In practice, the parser collects all matched products from the page, persists the full dataset, and only derives a top-10 subset afterward, so the documentation overstates how selective the scraping step is.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.env_credential_access

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
scraper.js:11