Back to skill

Security audit

ebay-product-details-scraper-api-skill

Security checks for vulnerabilities and agentic risk

Overview

The skill is an eBay scraping integration with BrowserAct, but it needs review because it asks users to provide an API key in chat and uses broad triggers that could send inputs to a third-party service unexpectedly.

Install only if you are comfortable using BrowserAct for eBay product scraping. Set BROWSERACT_API_KEY locally through an environment variable or secret manager, do not paste it into chat, and invoke the skill only for explicit eBay product URL scraping tasks where sharing the URLs and task parameters with BrowserAct is acceptable.

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:26
Finding
API Key Solicitation Through Conversational Context<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:26-30`; `scripts/ebay_product_details_scraper_api.py:97-101` **Vulnerability Type**: Sensitive credential exposure through chat or agent context **Risk Level**: Medium ### Vulnerable Code `SKILL.md:26-30`: ```markdown ## API Key Guide Before running, check the `BROWSERACT_API_KEY` environment variable. If it is not set, do not take other measures; ask and wait for the user to provide it. Agent must tell 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=ebay-product-details-scraper) to get your Key." ``` `scripts/ebay_product_details_scraper_api.py:97-101`: ```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 the BrowserAct API key, while the executable helper tells the user to “Provide it to me.” This encourages disclosure of a reusable secret through conversational input. Secrets pasted into a conversation may be retained in model context, conversation history, platform telemetry, debugging records, or other service logs. This expands exposure beyond the local process that needs the credential. Conversational disclosure is not necessary for the declared functionality because the implementation already supports reading the key from the `BROWSERACT_API_KEY` environment variable. The script legitimately sends the key as an HTTPS Bearer token only to the declared BrowserAct API. The relevant network operation is: ```python headers = {"Authorization": f"Bearer {api_key}"} response = requests.post( ...[truncated 1943 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove all instructions asking users to provide or paste API keys into the conversation. 2. Replace the affected instruction in `SKILL.md` with guidance that requires local secret configuration, for example: ```markdown If `BROWSERACT_API_KEY` is not configured, stop and instruct the user to set it locally through a protected environment variable or secret manager. Never ask the user to paste the key into chat. ``` 3. Replace the script's prompt with non-conversational configuration guidance: ```python if not api_key: print("[!] ERROR: BROWSERACT_API_KEY is not configured.", flush=True) print( "Set it locally using a protected environment variable or secret manager. " "Do not paste API keys into chat or command-line arguments.", flush=True, ) sys.exit(1) ``` 4. Recommend a platform-provided secret store where available, with the key injected into the process environment only when the Skill executes. 5. Do not accept the key through command-line arguments because process listings and shell history can expose it. 6. Ensure application, proxy, telemetry, and exception logs never record authorization headers or environment-variable values. 7. Use a narrowly scoped BrowserAct credential if the service supports scoped keys, and rotate any key previously disclosed through a conversation. 8. Document revocation and rotation procedures so users can promptly invalidate potentially exposed credentials. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (3)

Lp3

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding
The skill invokes a Python script that uses an environment-provided API key and communicates with an external BrowserAct service, yet the skill declares no explicit permissions. This mismatch can hide the real execution and data-exfiltration surface from reviewers and users, making unsafe activation or deployment more likely.

Vague Triggers

Medium
Confidence
83% confidence
Finding
The description is broad enough to match generic requests like exporting public records, enriching datasets, or monitoring public web data, which could cause the agent to invoke this skill outside a narrow eBay-specific context. Unintended activation can send user-provided data or URLs to a third-party service and trigger external actions the user did not specifically request.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill explains onboarding for the BrowserAct API key and external workflow execution but does not clearly warn that requested product URLs and related inputs will be transmitted to BrowserAct. This lack of disclosure weakens informed consent and can lead to unintentional sharing of user-supplied data with a third party.

Static analysis

No suspicious patterns detected.