Back to skill

Security audit

amazon-best-sellers-scraper-api-skill

Security checks across malware telemetry and agentic risk

Overview

The skill performs its stated BrowserAct Amazon scraping function, but it asks users to provide a bearer API key through the agent chat, which creates an avoidable credential exposure risk.

Review before installing. Use this skill only if you are comfortable sending the selected Amazon category, requested count, task metadata, and results to BrowserAct. Do not paste your BrowserAct API key into the agent conversation; configure BROWSERACT_API_KEY through your runtime environment or secret manager, and rotate the key if it was previously shared in chat.

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
Bearer API Key Solicited Through Agent Conversation## Vulnerability Details **File Location**: `SKILL.md:30-33` and `scripts/amazon_best_sellers_scraper_api.py:101-106` **Vulnerability Type**: Sensitive credential exposure through insecure instructions **Risk Level**: Medium **Affected code in `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=amazon-best-sellers-scraper) to get your Key." ``` **Affected code in `scripts/amazon_best_sellers_scraper_api.py:101-106`:** ```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 `BROWSERACT_API_KEY` is a bearer credential used to authorize requests to the BrowserAct service. The Skill instructions direct the Agent to ask the user to provide this credential, while the script explicitly offers “Provide it to me” as a configuration method. Supplying a bearer credential through an Agent conversation can expose it to conversation history, application telemetry, execution traces, support records, or other systems that retain prompts and responses. This disclosure is unnecessary because the script already supports reading the key from the `BROWSERACT_API_KEY` environment variable. The actual network use of the credential is consistent with the declared functionality: it is placed in an authorization header and sent over HTTPS to the fixed BrowserAct API endpoint. No evidence was ...[truncated 1533 chars]
Remediation
## Remediation Suggestions 1. Remove every instruction telling users to provide or paste the API key into the Agent conversation. 2. Replace the affected `SKILL.md` guidance with an instruction to configure the credential outside the conversation, such as: ```markdown If `BROWSERACT_API_KEY` is not configured, stop execution and ask the user to set it through the runtime's secret manager or local environment. Never ask the user to paste the key into chat. ``` 3. Replace the script message with: ```python print( "Configure BROWSERACT_API_KEY through your environment or secret manager. " "Do not paste the key into chat or command-line arguments.", flush=True, ) ``` 4. Prefer a platform-provided secret manager over persistent shell configuration where available. 5. Ensure the API key is never included in command-line arguments, status messages, exceptions, debug output, telemetry, or serialized results. 6. Redact authorization headers from HTTP and application logs. 7. Document a key-rotation procedure and advise users to revoke and replace any key previously disclosed in a conversation. 8. Where supported by BrowserAct, use a narrowly scoped credential with spending, task, and concurrency limits to reduce the effect of accidental disclosure.
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 (5)

Lp3

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding
The skill clearly requires environment access to read BROWSERACT_API_KEY and makes external API calls, but it does not declare permissions in a way that transparently communicates those capabilities. This creates a trust and review gap: users or policy systems may underestimate that input data and results are sent to a third-party service and that secrets from the environment are needed for operation.

Vague Triggers

Medium
Confidence
80% confidence
Finding
The description uses very broad activation language such as general research, enrichment, monitoring, and reporting tasks, which can cause the agent to invoke this external-data skill in contexts broader than users expect. That increases the chance of unintended third-party data transfer and tool use without sufficiently specific user intent.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill does not prominently warn that request parameters and retrieved data are sent to an external third-party service, despite being an API wrapper around BrowserAct. In privacy- or compliance-sensitive contexts, this can lead to unintentional disclosure of user queries, target categories, or extracted data to an external processor without informed consent.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The function sends user-supplied parameters to a third-party API service without any user-facing disclosure or consent prompt. In an agent skill context, users may reasonably believe the tool operates locally, so silently transmitting inputs to BrowserAct creates a privacy and transparency risk even if the data appears low sensitivity here.

External Transmission

Medium
Category
Data Exfiltration
Content
# 1. Start Task
    print("Start Task", flush=True)
    try:
        res = requests.post(
            f"{API_BASE_URL}/templates/{TEMPLATE_ID}/runs",
            json=payload, headers=headers, timeout=30
        ).json()
Confidence
92% confidence
Finding
This POST request transmits input data and an API-authenticated request to an external service, which is expected for the skill's functionality but still constitutes a real data egress point. In an agent setting, this becomes security-relevant if users are not clearly informed that their supplied values are being sent off-platform to BrowserAct.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.