Back to skill

Security audit

Python Crawler Architect

Security checks for vulnerabilities and agentic risk

Overview

This crawler-design skill is mostly transparent, but it teaches under-scoped anti-bot evasion patterns and includes a proxy template that could expose proxy credentials.

Review this skill before installing if you plan to use it against third-party sites. Use it only for authorized, terms-compliant collection of public data, and change generated proxy code to avoid HTTP authenticated proxies, credential-bearing URLs, third-party health checks, and unredacted proxy logging.

Vulnerability Patterns
  • 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
  • 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)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:333
Finding

Authenticated proxy credentials may be exposed through plaintext transport and logging

Content
View full analysis
str: auth = "" if self.username and self.password: auth = f"{self.username}:{self.password}@" return f"{self.protocol}://{auth}{self.host}:{self.port}" ``` ```python def __init__( self, max_fail_count: int = 3, check_interval: int = 300, test_url: str = "http://httpbin.org/ip" ): ``` ```python async with aiohttp.ClientSession() as session: async with session.get( self.test_url, proxy=proxy.url, timeout=aiohttp.ClientTimeout(total=timeout) ) as resp: return resp.status == 200 ``` The guidance at line 710 additionally instructs generated crawlers to record the proxy used for each request, together with status and duration. It does not require credential redaction. ### Technical Analysis The `Proxy.url` property places the proxy username and password directly in a URL. That credential-bearing URL is subsequently passed to `aiohttp` and may also be propagated to logs, exception messages, debugging output, monitoring tools, or application state. The default proxy protocol is `http`, and the default health-check destination is also an unencrypted HTTP endpoint. When an authenticated HTTP proxy is used, proxy authentication traverses the client-to-proxy connection without transport-layer encryption. An observer on that network path, or infrastructure capable of inspecting the connection, may capture reusable proxy credentials. The hardcoded health-check endpoint also unnecessarily discloses the proxy exit IP and request metadata to a third-party service. The reviewed template does not explicitly transmit environment variables, local files, API keys, or proxy credentia ...[truncated 2019 chars]
Remediation
View remediation
str: return f"{proxy.protocol}://{proxy.host}:{proxy.port}" ``` 6. Prohibit logging complete proxy URLs, authentication headers, cookies, tokens, or exception objects that may contain credentials. 7. Store proxy credentials in environment variables or a secret manager, restrict their lifetime and scope, and avoid persisting them in crawler state files. 8. Reuse a controlled `ClientSession` with explicit TLS and timeout settings rather than creating one session per proxy check. 9. Add automated tests that verify credentials are absent from logs, exceptions, serialized state, and monitoring events. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Tp2

High
Category
MCP Tool Poisoning
Confidence
85% confidence
Finding

Mixing characters from multiple Unicode scripts in a single identifier is a common technique to create visually ambiguous tool names.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The file explicitly requires '详细的中文注释和 Docstrings', which imposes a specific language choice on all generated code artifacts. This is a natural-language locale policy issue because the skill does not provide opt-in, alternatives, or a user-selectable language preference.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The instruction '使用中文编写详细的 Docstrings' requires a fixed language regardless of user preference or context. Because the file does not present this as optional or region-specific, it constitutes a language policy violation under the natural-language rules.

Content

No source excerpt is available for this finding.

Ssd 4

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill explicitly operationalizes anti-detection and anti-defense evasion techniques for web scraping, including proxy rotation, header masquerading, cookie persistence, CAPTCHA handling hooks, and resumable collection. In the context of a crawler-design skill, this makes misuse materially easier by guiding users toward bypassing target protections rather than limiting automation to compliant, openly permitted access patterns.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.