Secrets Scoping Partially Effective But Bypassable Via Shared Caches
Sources: 1 • Confidence: High • Updated: 2026-04-13 03:56
Key takeaways
- GitHub Actions caches can share the same name across different workflows, and Cline used the same cache key for node_modules in both the issue triage workflow and the nightly release workflow.
- Cline ran an AI-powered issue triage workflow that invoked anthropics/claude-code-action@v1 with tool access (including Bash, Read, and Write) whenever any user opened an issue.
- A malicious issue title could instruct the agent to run an npm install of a GitHub-hosted package as part of the triage workflow, introducing attacker-controlled code into the workflow environment.
- The published compromised package reportedly only added OpenClaw installation and did not take more destructive actions.
- Because the triage prompt included the issue title, an attacker could craft an issue title intended to coerce Claude into executing arbitrary commands.
Sections
Secrets Scoping Partially Effective But Bypassable Via Shared Caches
- GitHub Actions caches can share the same name across different workflows, and Cline used the same cache key for node_modules in both the issue triage workflow and the nightly release workflow.
- A prompt injection against the issue triage workflow could poison the shared cache and lead the nightly release workflow to load it, enabling theft of npm publishing secrets used by the release workflow.
- The issue triage workflow did not have access to key secrets such as those used to publish releases to npm.
- GitHub evicts Actions caches that grow beyond 10GB, and the cacheract package exploited this by forcing cache eviction and then caching new files containing a secret-stealing mechanism.
Untrusted Issue Metadata As Agent Execution Vector
- Cline ran an AI-powered issue triage workflow that invoked anthropics/claude-code-action@v1 with tool access (including Bash, Read, and Write) whenever any user opened an issue.
- Because the triage prompt included the issue title, an attacker could craft an issue title intended to coerce Claude into executing arbitrary commands.
- The attack chain against the Cline GitHub repository began with a prompt injection embedded in the title of a newly opened GitHub issue.
Prompt Injection To Dependency Execution Supply Chain Bridge
- A malicious issue title could instruct the agent to run an npm install of a GitHub-hosted package as part of the triage workflow, introducing attacker-controlled code into the workflow environment.
- An installed npm package can execute arbitrary code via a preinstall script defined in its package.json.
Observed Payload Reportedly Limited Despite High Capability
- The published compromised package reportedly only added OpenClaw installation and did not take more destructive actions.
Unknowns
- What exact commands (if any) were executed by the tool-enabled agent during the issue triage runs, and are there complete logs that confirm execution paths?
- What were the precise GitHub Actions permissions (GITHUB_TOKEN scopes, repository permissions) granted to the issue triage workflow at the time of the incident?
- Is there definitive evidence that caches were successfully poisoned and then consumed by the nightly release workflow in the described manner?
- What were the exact cache keys and cache restore/save steps in both the issue triage and nightly release workflows, and did they include workflow identity or trust-level separation?
- Was npm publishing credential exfiltration confirmed, and were tokens rotated after the incident?