Back to skill

Security audit

web-utilities-research

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed Crawlora API wrapper for public web research, with expected third-party transmission and no evidence of hidden persistence, privilege escalation, or destructive behavior.

Install only if you are comfortable sending the URLs, domains, addresses, and schemas you provide to Crawlora. Do not use it with secrets, private/internal URLs, confidential company data, or sensitive personal information unless that disclosure is acceptable under your policies.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (12)

Lp3

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding
The skill invokes a shell helper (`scripts/crawlora.sh`) but does not declare any tool scope or allowed-tools constraints. That means an agent may gain broader shell execution than the skill actually needs, increasing the chance of command misuse, unsafe argument handling, or unexpected local side effects when fulfilling generic web-research requests.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The description defines a very broad, general-purpose utility skill covering many unrelated web-intelligence tasks without strong invocation boundaries. Overly broad scope increases the chance the agent will route arbitrary requests through this skill, causing unnecessary external data transmission, use of shell-backed helpers in unanticipated contexts, and reduced policy enforcement around what destinations and data types are acceptable.

Vague Triggers

Medium
Confidence
90% confidence
Finding
Describing the skill as a 'grab-bag' of lookups without non-applicable cases or guardrails makes invocation policy ambiguous. In practice this can let user-controlled prompts steer the agent into broad web queries, scraping, or third-party lookups that were not carefully reviewed for data sensitivity, legal constraints, or SSRF-style URL abuse in scrape endpoints.

External Transmission

Medium
Category
Data Exfiltration
Content
- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).
- Set `CRAWLORA_API_KEY` in the environment before running the helper.
- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.

## How it works
Confidence
80% confidence
Finding
The skill explicitly transmits user-supplied URLs, domains, addresses, and related query data to an external third-party API (`api.crawlora.net`). While external transmission is expected for this integration, it is still security-relevant because sensitive prompts or internal targets could be exfiltrated to the provider, especially given the scraping and enrichment endpoints accept arbitrary user-controlled targets.

External Transmission

Medium
Category
Data Exfiltration
Content
#!/usr/bin/env bash
# Crawlora REST helper — minimal, dependency-free (curl only).
# Calls https://api.crawlora.net/api/v1 with your Crawlora API key.
# Get a free key (2,000 credits/mo, no card) at https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills.
#
Confidence
70% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
#!/usr/bin/env bash
# Crawlora REST helper — minimal, dependency-free (curl only).
# Calls https://api.crawlora.net/api/v1 with your Crawlora API key.
# Get a free key (2,000 credits/mo, no card) at https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills.
#
# Usage:
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
#!/usr/bin/env bash
# Crawlora REST helper — minimal, dependency-free (curl only).
# Calls https://api.crawlora.net/api/v1 with your Crawlora API key.
# Get a free key (2,000 credits/mo, no card) at https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills.
#
# Usage:
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
#!/usr/bin/env bash
# Crawlora REST helper — minimal, dependency-free (curl only).
# Calls https://api.crawlora.net/api/v1 with your Crawlora API key.
# Get a free key (2,000 credits/mo, no card) at https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills.
#
# Usage:
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
# Keep the API key out of the curl process command line. A private temporary
# config supplies the header and is removed automatically on exit.
curl_config="$(mktemp "${TMPDIR:-/tmp}/crawlora-curl.XXXXXX")"
chmod 600 "$curl_config"
trap 'rm -f "$curl_config"' EXIT
printf 'header = "x-api-key: %s"\n' "$CRAWLORA_API_KEY" >"$curl_config"
auth=(--config "$curl_config")
Confidence
80% confidence
Finding
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

External Transmission

Medium
Category
Data Exfiltration
Content
[ -n "$body" ] || body='{}'
  # Stream the body on stdin so curl never interprets a user value as its
  # @file shorthand (and cannot read local files supplied in a request body).
  printf '%s' "$body" | curl -fsS -X "$method" "${auth[@]}" \
    -H "Content-Type: application/json" --data-binary @- "${base}${path}"
fi
Confidence
70% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Natural-Language Policy Violations

Low
Confidence
91% confidence
Finding
The parameter description `force_language` indicates the skill can force a specific language or locale behavior. Under the policy, locale constraints should either be user-selectable with clear opt-in or explicitly justified as region-specific; this reference provides neither.

Missing User Warnings

Low
Confidence
87% confidence
Finding
This shell script sends query parameters and JSON request bodies to the Crawlora API over the network. While the header comments say it calls the API, they do not explicitly warn that any supplied search terms, URLs, or body content will be transmitted to a third-party service and printed back to stdout.

Static analysis

No suspicious patterns detected.