T09 · Insecure Skill Coding Practices
- Location
scripts/fetch_trends.py:99- Finding
GitHub Token Exposure Through Command-Line Arguments
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill coherently fetches GitHub AI repository trends, but users should be careful with optional GitHub tokens and untrusted repository text rendered in the report.
Install only if you are comfortable with the skill making GitHub API requests. Prefer running without a token, or use a fine-grained short-lived GitHub token via environment variable rather than --token. Treat repository descriptions and links in the generated leaderboard as untrusted GitHub content.
scripts/fetch_trends.py:99GitHub Token Exposure Through Command-Line Arguments
scripts/fetch_trends.py:76Untrusted GitHub Repository Metadata Rendered as Unsanitized Markdown
The skill instructs the agent to run a local script that performs network access to GitHub and may consume a GitHub token from the environment, but the skill does not declare any tool scope or permission boundaries. This creates an undeclared capability mismatch: an agent or reviewer cannot tell from the manifest that network and environment access are required, increasing the risk of over-privileged execution and unintended secret exposure.
The manifest says to use the skill when the user asks for "AI project trends," "GitHub trending," "AI leaderboard," or "wants to see popular AI repos." Several of these are broad natural-language descriptions rather than narrowly scoped invocation phrases, which may cause unintended activation for general discussion requests. The file also does not provide exclusion conditions or negative examples to clarify when the skill should not trigger.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
params = urllib.parse.urlencode({
"q": query, "sort": sort, "order": order, "per_page": per_page
})
url = f"https://api.github.com/search/repositories?{params}"
headers = {"Accept": "application/vnd.github+json", "User-Agent": "github-ai-trends"}
if token:
headers["Authorization"] = f"Bearer {token}"
The script hard-codes Chinese output strings such as period labels, which imposes a specific language on users by default. This is a natural-language locale policy concern because there is no user opt-in, configuration flag, or justification that the skill is intended only for a Chinese-speaking context.
User-facing strings like the leaderboard title and generation time text are fixed in Chinese, so the script enforces a specific language choice on all users. Because there is no alternative locale setting or documented justification, this matches the language/locale policy violation category.
No suspicious patterns detected.