T08 · Insecure Dependencies
- Location
SKILL.md:56- Finding
Unpinned Third-Party Dependency Installation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill fetches GitHub repository rankings and README summaries; its risks are ordinary for that purpose but should be handled carefully.
Install only if you want a GitHub-focused lookup skill that may make outbound requests to GitHub. Use no token or a minimally scoped GitHub token, and treat README summaries as untrusted repository-authored content rather than instructions for the agent.
SKILL.md:56Unpinned Third-Party Dependency Installation
src/readme_fetcher.py:41Untrusted Repository README Content Enters the Agent Summarization Workflow
The skill is described primarily as fetching GitHub topic trending repositories, but the documentation also includes README fetching and summarization for arbitrary repositories. That broader content-retrieval behavior is not fully captured by the top-level description, which can mislead users and reviewers about the real data flows and network access performed by the skill.
The skill is described primarily as fetching GitHub topic trending repositories, but the documentation also includes README fetching and summarization for arbitrary repositories. That broader content-retrieval behavior is not fully captured by the top-level description, which can mislead users and reviewers about the real data flows and network access performed by the skill.
The entire file identifies the package as an AI news generator rather than a GitHub trending/topics skill, creating a strong mismatch between advertised capability and embedded code metadata. In a security context, such discrepancies raise supply-chain and trust concerns because a mislabeled skill can hide unauthorized behavior, bypass expected review, or cause an agent to invoke code outside the intended domain.
The module docstring states this skill is an AI news daily generator that fetches content from smol.ai and uses Claude, which conflicts with the declared skill purpose of fetching GitHub topic trending repositories. This kind of identity/function mismatch is dangerous because it can mislead reviewers and users about the code’s real purpose, conceal unrelated behavior, and indicate the package may be mislabeled, repurposed, or incomplete.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
初始化
Args:
token: GitHub Personal Access Token
"""
self.token = token or GITHUB_TOKEN
self.api_base = GITHUB_API_BASE
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
初始化
Args:
token: GitHub Personal Access Token
"""
self.token = token or GITHUB_TOKEN
self.api_base = GITHUB_API_BASE
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
初始化
Args:
token: GitHub Personal Access Token
"""
self.token = token or GITHUB_TOKEN
self.api_base = GITHUB_API_BASE
The skill invokes Python scripts and documents use of environment variables and external network access, but it does not declare any tool scope such as permissions or allowed-tools. That creates an authorization gap where the runtime may permit broader-than-expected capabilities, reducing reviewability and increasing the risk of unintended data access or outbound requests.
The manifest says the skill should be used for questions about 'open source projects,' which is much broader than GitHub topic trending lookups. This can cause the skill to intercept general software questions and perform network operations outside the narrow user intent implied by the skill name.
Most invocation examples and query patterns are written only in Chinese, such as "热门仓库" and "这个仓库是做什么的", while the document does not state that the skill is intentionally Chinese-only or offer alternative language support. This can amount to a language/locale policy issue because it implicitly constrains usage to a specific language without user opt-in or justification.
Very generic triggers like '热门仓库' and 'Top 10' can activate the skill in conversations that are not actually requesting GitHub data. Over-broad activation increases the chance of unintended network calls, unnecessary token use, and confusing behavior in unrelated contexts.
The documentation encourages use of a GitHub personal access token but does not clearly disclose that the token will be presented to GitHub over network requests. Users may provide a credential without understanding where it is sent, how it is scoped, or what minimum permissions are needed.
This Python file contains natural-language documentation and runtime print messages exclusively in Chinese, indicating a fixed language choice for the skill experience. The policy requires not forcing a specific language or locale without user opt-in, and there is no visible option or justification for the language restriction in this file.
The manifest says this skill is for fetching GitHub topic trending repositories, but this file implements repository README retrieval, markdown stripping, summarization, and raw-content fallback fetching. Those are materially broader behaviors than listing or retrieving trending repositories and represent an additional content-ingestion capability not described in the manifest.
This Python file contains the module docstring, class docstrings, and argument descriptions entirely in Chinese, which imposes a specific language on operators or users of the skill. The file does not provide any opt-in, alternative locale, or justification that the skill is intentionally region-specific, so it fits the language/locale policy violation category.
The module docstring describes the skill entirely in Chinese, including its title and behavior, which suggests a fixed language/locale presentation. There is no indication that users can choose another language or that the Chinese-only behavior is a documented, justified locale constraint.
The module docstring and function docstrings/comments are written in Chinese, which imposes a specific language on maintainers or users reading generated help text. The file does not offer any language choice or explain a justified region-specific requirement, matching the locale-policy violation criteria.
The code imports and uses a GitHub personal access token to authorize requests, but the manifested purpose is simply fetching trending/topic repositories, which is typically achievable with public unauthenticated requests. Accessing credentials introduces a capability not clearly justified by the skill's stated narrow purpose.
No suspicious patterns detected.