T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:137- Finding
Mutable Third-Party Skill Loaded from an External Repository
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This scraping skill is mostly aligned with its stated purpose, but it asks users to load an unaudited external skill and handles local credentials and file writes too loosely.
Review before installing. Use it only in an isolated environment or virtualenv, avoid --break-system-packages, do not load the external GitHub skill unless you separately trust and review it, and treat the saved Qichacha cookie file as a session credential that should be protected or deleted after use.
SKILL.md:137Mutable Third-Party Skill Loaded from an External Repository
scripts/qichacha_scraper.py:38Reusable Authentication Cookies Stored Without Enforced Access Controls
scripts/wecom_docs_scraper.py:229User-Controlled Category Path Allows Writes Outside the Knowledge-Base Directory
SKILL.md:236Unpinned Dependencies Installed into the Host Python Environment
The skill claims broad dual-engine generic scraping and anti-bot capability, but the described implementation appears narrower and domain-specific, especially around Enterprise WeChat docs. Such over-claiming is a security concern because it obscures the real operational boundary of the skill and can mislead reviewers into granting broader trust or access than the implementation actually needs.
The skill claims broad dual-engine generic scraping and anti-bot capability, but the described implementation appears narrower and domain-specific, especially around Enterprise WeChat docs. Such over-claiming is a security concern because it obscures the real operational boundary of the skill and can mislead reviewers into granting broader trust or access than the implementation actually needs.
The skill documents capabilities that involve network access, reading local files, and writing local files, but it does not declare an explicit tool scope such as permissions or allowed-tools. In an agent environment, missing scope declarations increases the chance of over-broad execution and makes it harder for operators to understand or constrain what the skill may do.
The skill instructs users to save authenticated Qichacha cookies to a local file for later reuse, but it does not prominently warn that these cookies are sensitive session credentials. If the file is exposed through weak filesystem permissions, backups, logs, or other local compromise, an attacker may hijack the authenticated session and access account-linked data.
The script persists authenticated Qichacha session cookies to a predictable file under the user's home directory without warning the user, setting restrictive file permissions, encrypting the contents, or limiting lifetime. Anyone with local access to the account, backups, synced dotfiles/cache data, or another process running as the same user could reuse those cookies to hijack the authenticated session and access account-scoped data.
The module docstrings and user-facing argument descriptions are written only in Chinese, which imposes a locale/language choice without opt-in or explanation. The policy requires either offering language choice or clearly documenting a justified region-specific constraint.
This code initiates outbound browser-based network requests to arbitrary user-supplied URLs via Playwright, but provides no confirmation prompt and no explicit user-facing warning beyond the generic tool description. For code-file warning checks, external network access that may transmit system/browser metadata should be disclosed unless clearly communicated to the user.
The manifest/module documentation says the tool supports "stealth模式", and the CLI exposes a --stealth flag at L078. However, the parsed flag is never referenced afterward, and scrape_with_playwright is always called without any stealth-related configuration, so the documentation and exposed interface imply behavior that the code does not implement.
The natural-language instructions throughout the file force a single language/locale without any opt-in or alternative. Under the stated policy, a skill should not impose a specific language unless it explicitly offers choice or documents a justified locale constraint.
This file embeds its primary documentation, CLI descriptions, and interaction prompts in Chinese only, which imposes a specific language on users. The policy allows locale constraints only when documented and justified or when users are offered a choice, neither of which appears here.
The script writes scraped documents and a generated README into a fixed location under the user's home directory without prominently warning the operator in CLI help or requiring explicit confirmation. In an agent-skill context, this can unexpectedly create or overwrite local knowledge-base files, which is risky because the scraped content is remote-controlled and file creation happens automatically.
No suspicious patterns detected.