Back to skill

Security audit

restaurant-food-delivery-research

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed Crawlora client for food, restaurant, and grocery research, with expected location-sharing privacy considerations but no evidence of hidden persistence, local data theft, or destructive behavior.

Install only if you are comfortable sending restaurant/grocery searches, addresses, postal codes, coordinates, and a Crawlora API key-authenticated request to Crawlora. Prefer coarse locations when exact delivery availability is not needed, and do not provide payment details or private account credentials because the skill is intended for public listing/menu/review data only.

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
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (16)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The declared description presents a narrow restaurant/food-delivery research use case, but the file references a broader endpoint catalog and implies access to additional restaurant, grocery, and chain-specific data beyond the named services. This mismatch is dangerous because reviewers and users may underestimate what data can be queried or exfiltrated, weakening consent, oversight, and policy enforcement.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill invokes shell-based helper commands (scripts/crawlora.sh) but does not declare any tool scope or allowed-tools restrictions. That increases the blast radius because an agent may be permitted to run shell commands more broadly than intended, making outbound requests and local command execution possible without explicit limitation.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
93% confidence
Finding

This skill is explicitly designed to transmit user queries and often precise location/address data to an external service at api.crawlora.net, which is a genuine external data flow. In context this is expected functionality, but it remains security-relevant because the transmitted data can include sensitive location and preference information and may then be forwarded to numerous upstream platforms.

Content

Scanner excerpt · reference/endpoints.md (reported line 7)May include surrounding context.

md
Endpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).

All paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.

**285 endpoints across 40 platform group(s).**

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The documentation instructs callers to send precise latitude/longitude, postal codes, and full addresses to a third-party API but provides no privacy notice, minimization guidance, or consent expectations. This creates a real risk of transmitting sensitive location data without users understanding where it goes or why, especially since many endpoints require exact delivery addresses.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The endpoint inventory is far broader than the skill's stated purpose of restaurant/food-delivery research, exposing hundreds of capabilities across many unrelated vendors and workflows. This increases attack surface and makes it easier for an agent to over-collect data, invoke unintended services, or be repurposed beyond the principle of least privilege.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Including loyalty, rewards, coupon, and promotion-catalog endpoints is not clearly necessary for restaurant/menu/review research and expands the skill into adjacent commercial and account-like domains. Even if the current endpoints are public, this scope creep can normalize broader data access and create confusion about what user authorization and purpose limitation apply.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/crawlora.sh (reported line 2)May include surrounding context.

sh
#!/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.
#

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 24)May include surrounding context.

md
#!/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:

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/crawlora.sh (reported line 3)May include surrounding context.

sh
#!/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:

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/crawlora.sh (reported line 24)May include surrounding context.

sh
#!/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:

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The manifest says this skill researches restaurants and grocery/food delivery via Yelp reviews, OpenTable reservations, DoorDash and Uber Eats restaurant search/menus, and Instacart grocery search. The code instead allows a much broader catalog of endpoints across dozens of additional services and chains, such as 7now, Deliveroo, Grubhub, Kroger, Wolt, Zomato, and many branded fast-food APIs, which materially exceeds the described scope.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
80% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · scripts/crawlora.sh (reported line 676)May include surrounding context.

sh
# config supplies the header and is removed automatically on exit.
umask 077
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")

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This shell script performs outbound HTTP requests to the Crawlora API and sends both user-supplied request data and an API key, but it provides no runtime confirmation, print/log disclosure, or explicit user-facing warning immediately around the transmission. Although the header comments describe usage, they do not warn that supplied query parameters or JSON bodies will be sent to a remote third-party service.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/crawlora.sh (reported line 702)May include surrounding context.

sh
[ -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 -q -fsS -X "$method" "${auth[@]}" \
    -H "Content-Type: application/json" --data-binary @- "${base}${path}"
fi

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The usage comments show examples for unrelated endpoints like /amazon/search, /youtube/transcript, /google/search, and /google/trends, presenting the helper as a general Crawlora client. In this skill context, that documented behavior does not match the manifest’s narrow restaurant and food-delivery research purpose, even though the runtime route checks later restrict actual requests.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The comments say the script can be used for generic GET/POST calls to endpoints such as Amazon, YouTube, and Google. However, the implementation later enforces a restaurant-food-delivery-specific route allowlist and rejects non-catalog paths, so the documentation actively misstates what this file actually permits.

Content

No source excerpt is available for this finding.