T09 · Insecure Skill Coding Practices
- Location
SKILL.md:187- Finding
Generated repository reports are pushed over the network despite local-only security claims
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:187-199
Vulnerability Type: Undisclosed network transmission and repository modification
Risk Level: HighThe documented CI workflow commits generated analysis reports and pushes them to the configured Git remote. It then invokes an external Slack action:
yaml - name: 提交报告到文档库 run: | git config user.name "Analysis Bot" email "bot@example.com" git add reports/ git commit -m "chore: weekly repo analysis report [skip ci]" || true git push # ... - name: 通知团队 uses: slackapi/slack-github-action@v1 with: slack-message: "本周仓库协作分析报告已生成,详见 reports/repo-analysis/"This behavior conflicts with the declarations at
SKILL.md:351andSKILL.md:412that processing involves no network, no writes, and no Git remote operations.Technical Analysis
The core repository-analysis function only requires read access to local Git metadata. The example workflow instead performs the following additional operations:
- Writes generated analytics under
reports/. - Creates a new Git commit.
- Uses CI credentials to transmit that commit to a remote repository.
- Executes a third-party Slack integration.
Generated reports may contain repository activity statistics, workflow observations, author names, file-level risk information, and other metadata derived from private commit history. Even if the destination repository is legitimate, transmitting these reports without an accurate disclosure or explicit opt-in violates the documented trust boundary.
The Slack message shown does not itself contain report contents or credentials. However, executing the external action still introduces a network operation and gives third-party action code access according to the workflow's token, secret, and workspace permissions.
Attack Path
- A user adopts the supplied scheduled CI workflow based o ...[truncated 1398 chars]
- Writes generated analytics under
- Remediation
View remediation
Remediation Suggestions
- Make local, read-only report generation the default behavior.
- Place report publication and Slack notification behind separate, explicit opt-in settings.
- Require user confirmation before adding, committing, or pushing generated files.
- Correct the security documentation to disclose all filesystem writes, network destinations, third-party services, and required credentials.
- Clearly document which report fields may include author names, file paths, commit-derived metadata, or other sensitive information.
- Redact names, sensitive paths, commit-message contents, credentials, and internal identifiers before publication.
- Configure explicit minimal GitHub Actions permissions. Grant
contents: writeonly to the publication job and only when publication is enabled. - Separate analysis and publication into different jobs so the analysis job has no write token or notification secret.
- Restrict publication to a designated branch or artifact store with appropriate retention and access controls.
- Validate the destination remote before pushing and protect against publishing reports from untrusted pull-request contexts.
- Provide a fully local workflow variant that performs no package download, remote action invocation, commit, push, or notification.
