Back to skill

Security audit

Yandex Archive Scraper

Security checks for vulnerabilities and agentic risk

Overview

This is a disclosed Yandex.Archive scraper, but it explicitly uses stealth tooling to bypass bot protection without clear authorization or rate-limit guardrails.

Review this before installing. Use it only where you have authorization to access and scrape the target service, set conservative page limits and delays, and respect applicable terms and robots/rate-limit expectations. Install dependencies in a dedicated virtual environment or container because the package list and browser download are not pinned or hash-verified.

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
README.md:19
Finding
Unpinned Third-Party Dependencies and Browser Artifacts<![CDATA[ ## Vulnerability Details **File Location**: `README.md:19-20` (duplicated at `README.md:64-65`) **Vulnerability Type**: Uncontrolled third-party dependency installation **Risk Level**: Medium ### Vulnerable Code ```bash pip install scrapling playwright curl_cffi patchright msgspec browserforge playwright install chromium ``` ### Technical Analysis The installation instructions retrieve six third-party Python packages without version constraints, cryptographic hashes, or a lockfile. Consequently, package resolution depends on whichever releases the configured Python package index serves at installation time. The subsequent Playwright command also downloads and installs a Chromium browser artifact without a project-controlled integrity policy. The repository does not provide a hash-locked requirements file or other reproducible dependency manifest. This creates a supply-chain exposure. If a package release, maintainer account, configured package index, transitive dependency, or browser distribution channel is compromised, following the documented installation procedure could introduce attacker-controlled code. Source distributions may execute build logic during installation, while malicious wheels or dependencies can execute when imported or invoked by the Skill. The audit found no evidence that the currently named dependencies are malicious. The vulnerability is the lack of controls ensuring that users install the same reviewed artifacts over time. ### Attack Path 1. An attacker compromises an upstream dependency, maintainer account, package index, transitive dependency, or relevant browser artifact distribution channel. 2. The attacker publishes or serves a malicious release under one of the dependency names used by the project. 3. A user follows the README instructions and runs the unpinned `pip install` command. 4. Package resolution selects the attacker-controlled release because no approved version or hash is enforced. 5. Malicious code ...[truncated 819 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Create a reviewed dependency manifest with exact versions for every direct dependency. 2. Generate a transitive lockfile containing cryptographic hashes, such as a hash-locked `requirements.txt`. 3. Install with hash verification enabled: ```bash python -m pip install --require-hashes -r requirements.txt ``` 4. Pin and verify Playwright and its compatible Chromium revision. Document the expected browser artifact source and integrity verification process. 5. Configure trusted package indexes explicitly and prohibit unreviewed extra indexes to reduce dependency-confusion risk. 6. Perform installation inside a dedicated virtual environment, container, or other least-privilege sandbox. Do not install the dependencies as an administrator or root user. 7. Add automated dependency scanning and controlled update review. Regenerate hashes only after reviewing new package and browser releases. 8. Consolidate the duplicated installation instructions so both language sections reference the same secured, reproducible installation process. ]]>
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The README explicitly promotes use of Scrapling/StealthyFetcher to bypass bot protection and Cloudflare Turnstile, which is a capability associated with evading access controls rather than normal interoperability. In an agent skill context, this increases the chance the tool will be deployed for unauthorized large-scale scraping or policy-violating access without any warning, restrictions, or compliance guidance.

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The skill advertises network-enabled scraping behavior but does not declare any explicit tool scope or allowed-tools boundary. That omission weakens least-privilege controls and makes it harder for reviewers and runtime policy to constrain what the skill is permitted to access over the network.

Missing User Warnings

Medium
Confidence
98% confidence
Finding
The skill explicitly promotes bypassing bot protection and Cloudflare Turnstile without any warning about legal, contractual, detection, or account-ban consequences. In context, this is more dangerous because the core purpose of the skill is evasive scraping, which can facilitate unauthorized access patterns and expose operators to compliance and abuse risks.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
This code emits all user-facing status and result messages in Russian, including the main progress, error, and summary output. The file does not offer a language selection mechanism or explain that the skill is intentionally Russian-only, which violates the policy against forcing a specific language without user opt-in.

Natural-Language Policy Violations

Low
Confidence
54% confidence
Finding
The usage examples and target service context are entirely Russian-language focused, and the skill does not state whether users may choose another language or locale. Because SQP-3 covers language/locale policy violations, this may be a concern if the skill implicitly constrains users to Russian without opt-in.

Natural-Language Policy Violations

Low
Confidence
66% confidence
Finding
The documentation presents the service as Yandex.Archive and gives query examples only in Russian/Cyrillic, which can imply a locale-specific expectation. Because there is no explicit statement that users may choose their preferred language or that Russian is required for a justified region-specific reason, this may conflict with the language/locale policy guidance.

Static analysis

No suspicious patterns detected.