Back to skill

Security audit

LiteBrowse

Security checks for vulnerabilities and agentic risk

Overview

LiteBrowse has a coherent webpage-research purpose, but its helper can fetch any HTTP(S) URL from the agent host and read unlimited response bodies, so it needs Review before install.

Only install this if you are comfortable with the agent fetching URLs from its own network environment. Use it on trusted public pages or local HTML copies, avoid internal/private/cloud-metadata URLs, and prefer network egress controls or a fixed version that blocks private destinations, validates redirects, and caps download size.

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 (2)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/web_relevance_extract.py:117
Finding

Unrestricted URL Fetching Enables Server-Side Request Forgery

Content
View full analysis
str: parsed = urlparse(source) if parsed.scheme in {"http", "https"}: request = Request( source, headers={ "User-Agent": "Mozilla/5.0 (compatible; web-relevance-extract/1.0)" }, ) try: with urlopen(request, timeout=timeout) as response: charset = response.headers.get_content_charset() or "utf-8" return response.read().decode(charset, errors="replace") except URLError as exc: raise SystemExit(f"Failed to fetch {source}: {exc}") from exc ``` ### Technical Analysis The source validation only checks whether the supplied URL uses the `http` or `https` scheme. It does not validate the destination hostname or resolved IP address. Consequently, the extractor can request: - Loopback services such as `127.0.0.1` or `::1` - RFC1918 private-network services - Link-local addresses - Cloud instance metadata services - Reserved or otherwise non-public IP ranges - Public URLs that redirect to any of the preceding destinations Python's `urlopen` follows HTTP redirects by default. A public attacker-controlled endpoint can therefore redirect the request to an internal destination even if validation of only the original hostname were later added. The fetched response is parsed and relevant portions are emitted through standard output. An attacker can choose or refine the relevance query to target expected words in an internal response. This creates a response-disclosure SSRF path rather than merely a blind request primitive. Fetching public webpages is necessary for the declared functionality. Access to internal and privileged network destinations is not necessary and exceeds ...[truncated 1608 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/web_relevance_extract.py:126
Finding

Unbounded HTTP Response Download Enables Resource Exhaustion

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (1)

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

This code automatically performs network requests when the source argument is an HTTP(S) URL, sending request metadata such as the URL and User-Agent to external systems. Although the CLI help mentions that URLs are accepted, there is no explicit warning, confirmation, or user-facing disclosure that remote network access will occur.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.