T09 · Insecure Skill Coding Practices
- Location
SKILL.md:97- Finding
Apify API Token Exposed in URL Query Parameters
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is purpose-aligned for Twitter/X recruiting, but it needs review because its fallback API examples put the Apify token in URLs and do not clearly warn users about sending candidate/search data to Apify.
Review before installing or using in production. Use a limited Apify token, prefer Authorization headers over token query parameters, avoid pasting tokens into chat or logs, and confirm that your organization is comfortable sending Twitter/X search terms, handles, and profile data to Apify for recruiting analysis.
SKILL.md:97Apify API Token Exposed in URL Query Parameters
The skill instructs sending recruiting queries, Twitter handles, profile URLs, and derived candidate data to Apify-hosted third-party scrapers, but it does not warn the user that this data leaves the local environment and is processed by external services. That omission can cause unintentional disclosure of search intent, candidate-identifying data, and possibly sensitive sourcing activity to a third party, which is a real privacy and transparency issue in a recruiting workflow.
The example hard-codes tweetLanguage: "en" without indicating that this is optional or requiring user opt-in. In a recruiting context, this can silently exclude non-English candidates and bias sourcing results, making the skill materially less fair and less aligned with user intent.
This command sends search terms and authentication material to Apify over an external network call. Even though external API use is the intended function of the skill, it is still a genuine transmission of user data and operational metadata to a third party, which is risky if done without clear consent and secure credential handling.
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": ["Python engineer", "senior Python developer", "built with Python"], "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": ["Python engineer", "senior Python developer", "built with Python"], "maxItems": 300}'
This profile enrichment call sends usernames and authentication material to Apify, exposing candidate identifiers and sourcing activity to a third-party service. In recruiting, that can reveal who is being targeted and create privacy, confidentiality, and compliance concerns if users are not clearly informed.
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 skill requires an APIFY_TOKEN and later demonstrates passing it in a URL query string, but the prerequisites do not warn about secure handling of that credential. Tokens in environment variables are common, but failing to caution against exposing them in shell history, logs, screenshots, or shared commands increases the chance of credential leakage.
No suspicious patterns detected.