T08 · Insecure Dependencies
- Location
SKILL.md:204- Finding
Mutable Third-Party GitHub Action Creates a CI Supply-Chain Risk
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a repository analytics guide, but it gives examples that write files, push commits, use tokens, and notify Slack while also claiming no network and no writes.
Review this skill carefully before installing. Use it only if you are comfortable with an agent generating reports, writing files, potentially committing and pushing repository artifacts, and using Slack or repository tokens. Prefer a local read-only workflow unless you explicitly approve CI publication and notification, and pin any dependencies or GitHub Actions before adopting the examples.
SKILL.md:204Mutable Third-Party GitHub Action Creates a CI Supply-Chain Risk
SKILL.md:382Unpinned Python Package Installation Permits Unreviewed Dependency Changes
SKILL.md:196Network and Write Operations Contradict the Skill's Local-Only Security Contract
The skill chains checkout of full repository history, privileged package installation, execution of local scripts, report generation, commit/push, and external notification into a single workflow. In agentic use, this kind of end-to-end chaining increases blast radius: a simple analysis request can become environment modification, repository mutation, and external disclosure without strong intermediate consent gates.
fetch-depth: 0
# ...
- name: 安装依赖
run: |
sudo apt-get update
sudo apt-get install -y jq
# ...
The custom metrics feature is defined around executable query strings, which effectively opens a command-execution surface in a skill that otherwise presents itself as constrained repository analytics. Even if the document claims whitelist validation, the examples normalize arbitrary shell-like command payloads, increasing the risk of command injection, policy bypass, or unintended access beyond read-only git analysis.
The skill explicitly claims a strict security contract of 'no network' and 'read-only git commands', yet elsewhere documents git push, Slack notifications, package installation, and report generation. This mismatch is dangerous because users and downstream agents may trust the declared constraints and approve execution of actions that exfiltrate data, modify repositories, or expand the runtime environment.
The availability section states 'all data local, no network, no writes', but the skill earlier instructs users to create reports, commit/push artifacts, and send Slack notifications. Such contradictory safety claims can cause operators or policy engines to misclassify the skill as harmless while it performs state-changing and networked actions.
Claiming 'all data local, no network, no writes' while the same document describes token use, webhook use, file creation, commits, pushes, and notifications is a materially misleading safety statement. In an agent setting, this can directly undermine safety policy decisions and lead to unexpected external data flows or repository modifications.
The top-level description emphasizes privacy-preserving local repository analysis, but the documented workflow includes outward communication and remote publishing capabilities. This creates a trust-boundary violation: a user selecting a 'local analysis' skill may unknowingly enable network transmission of repository-derived reports or metadata.
The activation/scope language is broad, keyword-driven, and maps many generic repository-analysis phrases to the skill. In agentic environments, overbroad triggering can cause the skill to activate in contexts where the user did not intend CI changes, report generation, or broader repository inspection, increasing the chance of unsafe or surprising actions.
The examples include writing reports, committing and pushing to a repository, and sending Slack notifications, but the skill does not present a clear up-front warning that these are modifying and networked actions. This is dangerous because users may treat examples as safe defaults and unintentionally run workflows that change state or disclose repository-derived information externally.
The CI example invokes sudo apt-get update, introducing privileged execution into a skill that is ostensibly about repository analysis. While common in CI, privileged package-management steps expand the attack surface, can alter the runner environment, and become risky if reused outside tightly controlled ephemeral runners.
# ...
- name: 安装依赖
run: |
sudo apt-get update
sudo apt-get install -y jq
# ...
- name: 执行仓库分析
The sudo apt-get install -y jq step performs privileged package installation, which is inconsistent with a supposedly low-risk analysis skill. In less controlled environments, this can modify the host, introduce supply-chain risk, and normalize running elevated commands copied from documentation.
- name: 安装依赖
run: |
sudo apt-get update
sudo apt-get install -y jq
# ...
- name: 执行仓库分析
run: |
No suspicious patterns detected.