Back to skill

Security audit

XCrawl Scraper

Security checks for vulnerabilities and agentic risk

Overview

The skill does what it says, but it stores and exposes the XCrawl API key in ways users should review before installing.

Review before installing. Use this only with URLs and content you are allowed to send to XCrawl, avoid sensitive internal or regulated data unless approved, and prefer a protected secret mechanism or tightly permissioned config file for the API key. Pin and review the `xcrawl` dependency in an isolated environment if using it for important work.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/xcrawl_scraper.py:49
Finding

XCrawl API Key Is Stored in Plaintext and Exposed Through Process Arguments and Console Output

Content
View full analysis
20 else (api_key if api_key else '(not set)') print(f" API Key: {api_key_display}") ``` ```python elif command == 'set-key': if len(sys.argv) < 3: print("用法: python xcrawl_scraper.py set-key ") return set_api_key(sys.argv[2]) ``` ### Technical Analysis The API key is accepted as a command-line argument and then written directly to `scripts/config.json` as plaintext. The `save_config` function does not apply restrictive file permissions, so access depends on the process umask and existing filesystem permissions. Passing a secret through `sys.argv` can expose it through shell history, process inspection utilities, process-accounting systems, diagnostic tooling, or command logging. The `config` command creates another disclosure channel: keys longer than 20 characters reveal their first 20 characters, while keys of 20 characters or fewer are printed in full. Although exploitation normally requires local filesystem, process, t ...[truncated 1492 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:44
Finding

Unpinned XCrawl Dependency Allows Unreviewed Package Updates to Execute with User Privileges

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill advertises executable setup and usage that reads and writes local files, including a configuration file, but does not declare any tool scope or permissions boundary. In an agent environment, this creates an authorization gap where users and orchestrators are not clearly informed that local filesystem access is part of the skill’s behavior.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill description presents scraping, search, sitemap, and crawl features without warning that submitted URLs, search queries, and extracted page content are sent to the external XCrawl service. This can lead users to unknowingly transmit sensitive internal URLs, proprietary content, or regulated data to a third party.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill instructs users to set an API key and later shows a config file containing apiKey, but it does not warn that the credential is stored locally in plaintext configuration. This increases the risk of accidental disclosure through local file access, backups, logs, or repository commits.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill stores the XCrawl API key directly in a local JSON config file via save_config() without warning the user, access controls, or use of a safer secret store. If the working directory is shared, backed up, committed to source control, or readable by other local users/processes, the credential can be exposed and abused to make API calls or incur cost on the user's account.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The search function defaults the language parameter to 'en', which imposes a specific language/locale behavior even when the user has not requested it. This is a natural-language policy concern because the skill does not offer a neutral default or explicit user choice.

Content

No source excerpt is available for this finding.