T09 · Insecure Skill Coding Practices
- Location
scripts/find_contacts.py:130- Finding
Prompt Injection Through Untrusted Search Result Content
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This contact-finding skill is purpose-aligned, but it needs Review because it sends personal/professional lookup data to third parties and has weak safeguards around result integrity and API-key logging.
Install only if you are comfortable sending lookup targets and search snippets to SerpAPI or Brave and OpenAI. Treat returned emails as leads, not verified contacts; independently confirm addresses before use, avoid entering sensitive targets without a lawful basis, use a virtual environment with pinned dependencies, and remove API-key prefixes from logs before operational use.
scripts/find_contacts.py:130Prompt Injection Through Untrusted Search Result Content
SKILL.md:40Unpinned Third-Party Dependencies in Installation Instructions
scripts/find_contacts.py:90Partial Brave API Key Disclosure in Error Logs
scripts/find_contacts.py:205Unsafe Substring-Based Email Domain Validation
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
"engine": "google"
}
try:
resp = requests.get(url, params=params, timeout=15)
resp.raise_for_status()
data = resp.json()
return data.get("organic_results", [])
The skill declares no explicit tool scope even though its documented behavior requires network access and use of environment-provided API keys. Without clear permissions or allowed-tools constraints, an agent platform may grant broader capabilities than users expect, increasing the risk of unintended external requests or misuse of secrets during execution.
The skill is designed to search for, infer, and transmit professional contact information to third-party services including SerpAPI and OpenAI, but it does not warn users that personal/professional data may be sent off-platform. This creates privacy, compliance, and user-consent risks, especially when searching named individuals or generating guessed email addresses that may constitute personal data processing.
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
## Notes
- Always verify emails before sending (use SMTP check or verification API)
- GDPR: Only use publicly available data; do not store without consent
- Rate limit: SerpAPI free = 100 searches/month; paid plans available
The script transmits search queries containing a person's name, company, and domain to external search providers, which can expose investigative intent and personal data to third parties. In this skill's context, the behavior is core to functionality, but it is still a genuine privacy issue because users are not clearly warned that this identifying information leaves the local environment.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
for key in BRAVE_API_KEYS:
try:
resp = requests.get(
"https://api.search.brave.com/res/v1/web/search",
params={"q": query, "count": 10},
headers={"Accept": "application/json", "X-Subscription-Token": key.strip()},
timeout=15
Search snippets may contain personal data, employer details, email addresses, and profile information, and the code forwards up to 15 snippets to OpenAI without consent gating, minimization, or a clear privacy notice. This creates a real data-sharing risk because third-party model providers receive potentially sensitive personal or company-related information during processing.
No suspicious patterns detected.