T09 · Insecure Skill Coding Practices
- Location
SKILL.md:90- Finding
Apify API Token Exposed in Tweet Scraper Request URL
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill matches its recruiting purpose, but it needs review because it sends recruiting searches and candidate handles to Apify and its REST examples put the Apify token in URL query strings.
Review before installing. Use this only when you intend to send recruiting search criteria and candidate handles to Apify. Prefer an Apify MCP or API method that keeps the token in an Authorization header, use a least-privilege token, set explicit maxItems limits, and avoid scraping or storing more candidate data than needed.
SKILL.md:90Apify API Token Exposed in Tweet Scraper Request URL
SKILL.md:108Apify API Token Exposed in User Scraper Request URL
The trigger description enumerates many loosely related recruiting intents and social-search scenarios without clear activation constraints. Overbroad triggers can cause the skill to activate on ambiguous user requests and initiate external social-media scraping or candidate profiling when the user did not clearly intend that behavior.
The documentation instructs sending search terms and usernames to Apify actors, but it does not require an explicit disclosure or consent step before transmitting potentially sensitive search criteria or personal identifiers to a third party. In a recruiting context, this can expose hiring intentions, targeted individuals, or internal sourcing criteria to an external service without informed user approval.
This command sends search terms directly to an external Apify endpoint, creating a clear outbound data flow to a third party. In this skill's recruiting context, the transmitted queries can reveal sensitive business intent such as active hiring plans, target roles, or sourcing strategy, and the documentation does not require prior user consent or data minimization.
REST API fallback:
curl -X POST \
"https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchTerms": ["growth marketer", "VP Marketing", "marketing open to work", "content marketing jobs"], "maxItems": 300}'
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
REST API fallback:
curl -X POST \
"https://api.apify.com/v2/acts/apidojo~tweet-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchTerms": ["growth marketer", "VP Marketing", "marketing open to work", "content marketing jobs"], "maxItems": 300}'
This API example transmits a list of usernames to a third-party service for profile enrichment. Even though the usernames are public identifiers, sending targeted candidate lists to an external processor can disclose recruitment targets and create privacy/compliance concerns, especially when combined with profile scoring and open-to-work inference.
REST API fallback:
curl -X POST \
"https://api.apify.com/v2/acts/apidojo~twitter-user-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"usernames": ["handle1", "handle2"]}'
The example input sets "tweetLanguage": "en", which enforces an English-only search scope. The document does not present this as optional or offer the user a language choice, creating a locale/language policy concern.
No suspicious patterns detected.