Back to skill

Security audit

Web Scraper

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a disclosed web-scraping helper, but it includes instructions to reveal soft-paywalled content and can send scraped text to OpenRouter without a clear per-use consent gate.

Install only if you are comfortable supervising its use: avoid using it to reveal or collect paywalled content, do not enable the OpenRouter entity-extraction stage for private/authenticated/sensitive pages without explicit approval, and prefer pinned dependencies in an isolated environment.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (3)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:599
Finding

Scraped Content Is Transmitted to a Third-Party LLM Without Sensitivity Controls

Content
View full analysis
dict: """Extracts entities from a news article using LLM.""" text_sample = text[:4000] if len(text) > 4000 else text prompt = f"""You are a news entity extractor. Analyze the text below and extract: TITLE: {metadata.get('title', 'N/A')} DATE: {metadata.get('date', 'N/A')} TEXT: {text_sample} Respond ONLY with valid JSON, no markdown, in this format: {{ "people": [ {{"name": "Full Name", "role": "Role/Title", "context": "One sentence about their role in the article"}} ], "organizations": [ {{"name": "Org Name", "type": "company|government|ngo|other", "context": "role in article"}} ], "locations": [ {{"name": "Location Name", "type": "city|state|country|address", "context": "mention"}} ], "events": [ {{"name": "Event", "date": "date if available", "description": "brief description"}} ], "relationships": [ {{"subject": "Entity A", "relation": "relation type", "object": "Entity B"}} ] }}""" try: response = req.post( OPENROUTER_ENDPOINT, headers={ "Authorization": f"Bearer {OPENROUTER_API_KEY}", "Content-Type": "application/json", }, json={ "model": "google/gemini-2.5-flash-lite", "messages": [{"role": "user", "content": prompt}], "max_tokens": 2000, "temperature": 0.1, }, timeout=30, ) ``` ### Technical Analysis The optional entity-extraction stage includes the article title, publication date, and up to 4,000 characters of scraped tex ...[truncated 1776 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:580
Finding

Instructions Encourage Circumvention of Soft Paywall Controls

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
SKILL.md:813
Finding

Dependency and Browser Installation Commands Are Not Reproducibly Pinned

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (6)

Rp1

Medium
Category
MCP Rug Pull
Confidence
79% confidence
Finding

The skill instructs checking Playwright availability via npx playwright install --dry-run without pinning a version, which can pull whatever package/version is current in the environment or registry. In an agent context this weakens supply-chain integrity and reproducibility, especially when commands may be run automatically on developer machines or CI.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The hard-coded Accept-Language: pt-BR,pt;q=0.9,en-US;q=0.8 forces a locale preference without user consent. This can alter returned content, bias extraction results, and unintentionally disclose regional preferences in requests, which is a data-handling and correctness concern rather than a direct code-execution issue.

Content

No source excerpt is available for this finding.

Ssd 4

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

By distinguishing hard versus soft paywalls and then recommending DOM manipulation for the latter, the skill normalizes a bypass workflow and lowers the barrier for misuse. In the context of a general-purpose scraping agent, that guidance is especially dangerous because it turns ambiguous policy edges into a concrete circumvention recipe.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill explicitly includes a method for exposing paywalled content already present in the DOM, which is a circumvention capability not necessary for ordinary scraping. In a user-invocable scraping skill, this meaningfully increases misuse potential by operationalizing access to restricted publisher content.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The paywall-handling section tells the agent to use Playwright to remove soft-paywall overlays and reveal hidden paragraphs, while the safety rules say not to bypass hard paywalls. Even if framed as 'soft' only, this is still bypass-oriented guidance that encourages accessing content the publisher attempted to restrict, creating legal, policy, and abuse risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill sends scraped article text and metadata to OpenRouter-backed LLM APIs but does not require a clear user-facing disclosure or consent step before external transmission. In scraping workflows, extracted text may include copyrighted, sensitive, or contractually restricted material, so silent onward transfer to a third party creates privacy, compliance, and data-governance risk.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.