Back to skill

Security audit

company-career-page-finder-api-skill

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly coherent for running a BrowserAct career-page lookup, but it tells users to provide an API key through chat if the environment variable is missing.

Review before installing. Use this only if you are comfortable sending the target company website and task metadata to BrowserAct. Configure BROWSERACT_API_KEY locally through a secure environment or secret manager, and do not paste the API key into chat; rotate the key if it has already been shared.

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:23
Finding
API Key Disclosure Through Agent Conversation<![CDATA[ ## Vulnerability Details **File Locations**: - `SKILL.md:23-27` - `scripts/company_career_page_finder_api.py:93-98` **Vulnerability Type**: Sensitive credential exposure through an insecure collection channel **Risk Level**: Medium ### Vulnerable Code `SKILL.md:23-27`: ```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=company-career-page-finder) to get your Key." ``` `scripts/company_career_page_finder_api.py:93-98`: ```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) sys.exit(1) ``` ### Technical Analysis The Skill explicitly directs the agent to ask the user for a BrowserAct API key and wait for the user to provide it. The executable helper reinforces this behavior by presenting disclosure to the agent as an alternative to configuring the environment variable. An API key is an authentication secret and should not be transmitted through a conversational interface. Conversation messages may be retained in chat history, operational logs, telemetry, or other processing systems. Consequently, asking the user to paste the key exposes it to systems and personnel that do not need access to it. This behavior exceeds minimum privilege. The script only requires the key to be available through `BROWSERACT_API_KEY`; the agent does not need to read, receive, store, or relay the credential. The script otherwise sends the Bearer token only to the decl ...[truncated 1374 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove all instructions asking users to provide API keys to the agent or through conversation. 2. Change `SKILL.md` to instruct users to configure `BROWSERACT_API_KEY` locally using an environment variable or an approved secret manager. 3. Replace the script message with wording such as: ```python print( "Set BROWSERACT_API_KEY securely in the local environment, then run the command again. " "Do not paste the API key into chat.", flush=True, ) ``` 4. Permit the agent to check only whether the variable exists; it must not print, inspect, repeat, store, or request the value. 5. Document secure configuration examples that avoid shell-history exposure, such as deployment-platform secret settings or an operating-system credential store. 6. If a key has already been shared through a conversation, instruct the user to revoke or rotate it and remove retained copies where possible. 7. Apply least-privilege restrictions, usage limits, and rotation policies to BrowserAct API credentials where supported. ]]>
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
84% confidence
Finding
The skill declares runtime requirements for an API key and Python execution and instructs the agent to call an external BrowserAct API, but it does not expose a clear permission model for network and environment access. This creates a transparency and consent gap: users may trigger code that reads secrets from the environment and sends user-supplied data to a third-party service without an explicit permission declaration.

Vague Triggers

Medium
Confidence
89% confidence
Finding
The description contains broad trigger phrases such as collecting data, scraping results, exporting public records, enriching datasets, and monitoring public web data, which can cause the skill to be invoked for many generic data-collection requests outside its narrow purpose. Overbroad invocation increases the chance of unintended execution, unnecessary data transfer to the external API, and user surprise about what tool is being used.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill instructs the agent to find career pages using a third-party BrowserAct workflow but does not clearly warn users that supplied company website data will be transmitted to an external service. This is a meaningful disclosure failure because even public targets can encode sensitive research intent, and users may not expect their queries and results processing to leave the local agent environment.

Static analysis

No suspicious patterns detected.