Back to skill

Security audit

airbnb-property-reviews-scraper-api-skill

Security checks for vulnerabilities and agentic risk

Overview

The skill appears to run the advertised Airbnb review scraper, but it gives unsafe guidance to share a BrowserAct API key with the agent and uses broad invocation wording.

Review this skill before installing. Use it only for explicit Airbnb review extraction tasks, and do not paste a BrowserAct API key into chat; configure BROWSERACT_API_KEY through a secure environment variable or secret manager and rotate the key if it was already shared conversationally.

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

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:30
Finding
Insecure Solicitation of BrowserAct API Credentials Through Agent Conversation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:30-33`; `scripts/airbnb_property_reviews_scraper_api.py:104-108` **Vulnerability Type**: Sensitive credential exposure through insecure user guidance **Risk Level**: Medium ### Vulnerable Code `SKILL.md:30-33`: ```markdown ## 🔑 API Key Guide Before running, check the `BROWSERACT_API_KEY` environment variable. If not set, do not take other measures; ask and wait for the user to provide it. **Agent must inform the user**: > "Since you haven't configured the BrowserAct API Key yet, please go to the [BrowserAct Console](https://www.browseract.com/reception/integrations?co-from=airbnb-property-reviews-scraper) to get your Key." ``` `scripts/airbnb_property_reviews_scraper_api.py:104-108`: ```python if not api_key: print("\n[!] ERROR: BrowserAct API Key is missing.", flush=True) print("Please follow these steps:", flush=True) print(f"1. Go to: {API_KEY_URL}", flush=True) print("2. Copy your API Key.", flush=True) print("3. Provide it to me or set it as an environment variable (BROWSERACT_API_KEY).", flush=True) ``` ### Technical Analysis The Skill explicitly instructs the Agent to ask the user for a reusable BrowserAct API key and tells the user that they may “provide it to me.” This encourages disclosure of authentication material through the conversational interface. The script itself only requires access to the `BROWSERACT_API_KEY` environment variable. Therefore, transmitting the key through the Agent conversation is not necessary for the declared scraping functionality and exceeds the minimum information exposure needed to operate the Skill. Credentials entered into a conversation may be retained in chat history, application logs, Agent traces, telemetry, or connected services. Although the implementation does not print the configured API key and sends its Bearer token only to the documented HTTPS BrowserAct endpoint, the credential-collection guidance creates an avoid ...[truncated 1475 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the instruction to ask the user to provide the API key through the conversation. 2. Change the missing-key guidance to require secure local configuration, for example: ```markdown Set `BROWSERACT_API_KEY` through your runtime's secret manager or environment-variable configuration. Do not paste API keys into chat. ``` 3. Update the script message so it never suggests disclosing the key to the Agent: ```python print( "3. Configure BROWSERACT_API_KEY securely in your local environment " "or runtime secret manager. Do not paste the key into chat.", flush=True, ) ``` 4. Prefer a dedicated secret-management facility over shell history or plaintext configuration files. 5. Ensure chat logs, Agent traces, and telemetry apply secret redaction for patterns resembling API credentials. 6. If a key has already been disclosed through a conversation, revoke and rotate it immediately, then review BrowserAct task and billing history for unauthorized activity. 7. Where supported, use narrowly scoped, short-lived credentials and account spending or quota limits to reduce the impact of future exposure. ]]>
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (2)

Lp3

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding
The skill declares only OpenClaw runtime requirements but does not explicitly declare permissions despite requiring environment access and making outbound network calls to BrowserAct. This creates a transparency and policy-enforcement gap: an agent or platform may invoke a skill with broader capabilities than reviewers expect, increasing the risk of secret exposure or ungoverned external data transfer.

Vague Triggers

Medium
Confidence
80% confidence
Finding
The description contains very broad trigger phrases such as dataset enrichment, market research, lead/research list building, and public data extraction, which can cause the skill to be selected for many loosely related requests. Overbroad auto-invocation increases the chance of unintended scraping, unnecessary secret use, and execution in contexts the user did not clearly authorize.

Static analysis

No suspicious patterns detected.