T09 · Insecure Skill Coding Practices
- Location
scripts/crawlee_http.py:33- Finding
Unrestricted URL Fetching Enables Server-Side Request Forgery
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a disclosed web scraper, but it is explicitly aimed at bypassing bot detection and bulk-fetching arbitrary URLs without clear safety limits.
Install only if you need a scraper in an isolated, least-privileged environment and will use it only on sites you are authorized to access. Avoid feeding it untrusted URL lists, especially in environments with access to internal services or cloud metadata, and prefer pinned dependencies plus outbound network restrictions.
scripts/crawlee_http.py:33Unrestricted URL Fetching Enables Server-Side Request Forgery
SKILL.md:54Unpinned Third-Party Dependency Installation
The skill description claims bot-detection evasion, automatic fallback behavior, and resilient scraping features that the analyzed implementation apparently does not provide. This mismatch can mislead users or downstream agents into relying on security-sensitive behavior that is absent, causing unsafe assumptions, policy bypass attempts, or unintended interaction with protected sites.
The file header explicitly markets the tool for 'bot-detection evasion' and use when sites are blocking requests, which encourages bypassing anti-abuse controls rather than operating within permitted access patterns. In the context of an agent skill, this is dangerous because it operationalizes evasion behavior and can facilitate unauthorized scraping, ToS violations, account/IP blocking, or broader abuse of protected web resources.
The skill exposes capabilities implying file read/write, network access, and shell execution, but the manifest does not declare any tool scope or permission boundaries. In an agent environment, this increases the chance of over-privileged execution and makes it harder to review or constrain what the skill may do before use.
The skill explicitly markets bot-detection evasion and bulk scraping but does not warn about legal, policy, or operational risks to external systems. In this context, omission of those warnings makes misuse more likely, especially because the skill is positioned as a drop-in workaround when ordinary fetching is blocked.
This code performs HTTP requests to user-supplied URLs and retrieves remote content, but the only messaging describes it as a resilient scraper and bot-detection evasion tool. There is no explicit warning in comments, docstrings, or runtime prompts about contacting external systems and fetching potentially sensitive or policy-restricted content.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
def _crawlee_fetch(url):
"""Run crawlee_fetch.py as a subprocess and return a response-like object."""
try:
result = subprocess.run(
[sys.executable, CRAWLEE_SCRIPT, "--url", url, "--extract-text"],
capture_output=True,
text=True,
No suspicious patterns detected.