// 1 ZERO-DAY IN THE LAST 24H→
Two GitHub Actions compromised in May came back online on September 16, 2026 with malicious tags intact, automatically executing payloads in CI/CD pipelines.

On September 16, 2026, between 11:09 and 18:16 Italian time, two GitHub Actions compromised in the Mini Shai-Hulud campaign became accessible again. Their release tags still pointed to the malicious content from May 18. Downstream workflows referencing them by mutable version tag automatically resumed downloading and executing the payload, without the attacker taking any new action. This is the first documented case where an incident response — the temporary disabling of repositories — created a time bomb triggered by the mere restoration of access.

Key Takeaways
  • GitHub disabled the actions-cool/issues-helper and actions-cool/maintain-one-comment repositories on May 19, 2026; they came back online on September 16 with malicious tags uncleaned
  • Workflows with mutable tag references automatically executed the Mini Shai-Hulud payload, identical to the one from May
  • The GitHub dependency graph lists approximately 15,000 repositories dependent on issues-helper alone; how many used tags versus SHA pinning is not quantified
  • Both repositories were disabled again by GitHub on September 25, 2026, nine days after re-enablement

How the Attack Works: The Fragility of Mutable Tags

GitHub Actions allows referencing an action via semantic tags: uses: owner/repo@tag. These tags are mutable. A maintainer can move them from one commit to another without the downstream workflow being informed. On May 18, 2026, in the Mini Shai-Hulud campaign, this mechanism was exploited to point tags v2.2.1 and later to the malicious commit a0c53dd42fc842d2f9276c5a1d4f9a26abe8713d.

The payload, contained in an obfuscated index.js, installs the Bun runtime via oven-sh/setup-bun and uses it to execute the malicious code with access to the workflow context. Logs analyzed by Socket show a sharp transition: before re-enablement, runs failed in 5–8 seconds with a repository unavailable error; after, they lasted 9 minutes and 34 seconds on average, with full payload execution. A specific run, #1850, took 11 minutes and 25 seconds.

Exfiltrated data reached the domain t.m-kosche[.]com, already observed in the Mini Shai-Hulud campaign on npm packages under the @antv scope. The infrastructure overlap confirms the threat cluster, not a separate incident.

The Security Regression: When Containment Generates New Risk

The standard response to a compromised repository is disabling: it blocks access, stops the spread, and buys time for analysis. But in this case the disabling left the malicious tags intact. Upon re-enablement, any workflow with a tag reference automatically resolved to the new — actually, the old — commit and executed the payload.

Karlo Zanki, a researcher at Socket, documented the dynamic: "Most supply chain incidents involve something new: a newly published malicious version, a newly hijacked account, or a newly injected workflow. This one did not. No new code was published and no configuration was changed". The threat actor did not have to publish new exploits, new infrastructure, or additional compromises. The malicious code had been in place since May 18; the only variable that changed was repository availability.

This pattern — security regression re-activation — is not documented in literature as a systematic vector. The Mini Shai-Hulud case constitutes the first verified instance in software supply chain.

"Any workflow that references either action by a version tag resumed downloading and executing the payload on its next run."
— Karlo Zanki, Socket researcher

The Exposure Window and the Limits of Visibility

Nine days of re-enablement, from September 16 to 25, 2026. The exact window of active execution remains partially opaque: Socket detected the re-enablement and documented logs from some runs, but the total number of workflows executed with the payload in that span is not quantified. Similarly, it is not known how many of the approximately 15,000 repositories dependent on issues-helper used mutable tags versus SHA pinning; only the latter were immune, since they point to a specific pre-May 18 commit that the tag cannot redirect.

The reason for the re-enablement is unknown. It could stem from a legitimate maintainer request, an automated GitHub process, or an operational error. The dossier does not specify it and none of the sources determine it. What is documented is the absence of prior notification to downstream maintainers: the repositories became accessible again without warning that the malicious tags persisted.

Philipp Burckhardt, head of threat intelligence at Socket, confirmed the link to the Mini Shai-Hulud cluster: "That points to the same Mini Shai-Hulud activity cluster, not a separate npm-only incident". The full identity of the actor remains unattributed.

What to Do Now

For maintainers using GitHub Actions in their own workflows:

  • Immediately verify whether workflows reference the actions actions-cool/issues-helper or actions-cool/maintain-one-comment, even transitively in third-party composite actions
  • Replace tag references with SHA pinning: the commit uses: owner/repo@sha prevents dynamic resolution to malicious content
  • Review workflow execution logs between September 16 and 25, 2026 to identify runs with anomalous duration (over 9 minutes vs the typical 5–8 seconds for an uncompromised action) or the presence of oven-sh/setup-bun not explicitly requested
  • If exposure is confirmed, consider rotating GITHUB_TOKEN and any secrets potentially accessible in the context of those workflows, checking logs for any connections to t.m-kosche[.]com

Why This Case Changes the Containment Paradigm

The lesson of Mini Shai-Hulud is not about a new type of malware, but a new way in which persisted malware can reactivate. Repository disabling, a consolidated defensive practice, here assumes an emergent property: it becomes a re-attack vector if tags are not cleaned. Containment now requires a post-containment phase — verification of the state of mutable references — that precedes any re-enablement.

For GitHub, the case raises a process question: re-enablement of repositories previously disabled for ToS violations should include an automatic check on release tags and, in case of anomalies, a notification to downstream dependents. The platform has not publicly communicated the reason for the re-enablement nor the review criteria applied.

The CI/CD sector has built an ecosystem on a trade-off: tags offer convenience, SHAs offer integrity. Mini Shai-Hulud demonstrates that the trade-off, when it intersects with partial defensive interventions, can generate greater damage than the original. The convenience of the mutable tag is no longer an acceptable compromise without awareness of the regression risk.

Frequently Asked Questions

Why didn't the re-enablement require attacker action?

The payload was already in place since May 18, 2026 in the tags. The May 19 disabling had only made the repository unreachable; upon restoration of access, workflows with tag references automatically downloaded and executed the available content. No new compromise was necessary.

What is SHA pinning and why would it have protected?

SHA pinning consists of referencing an action via the full commit hash (40 hexadecimal characters) instead of a tag. The tag can be moved from one commit to another; the hash is immutable. Workflows that used pre-May 18 SHAs were unaffected because they pointed to a legitimate commit unaltered by the Mini Shai-Hulud campaign.

How many repositories were actually compromised?

It is not quantified. The GitHub dependency graph shows approximately 15,000 repositories dependent on issues-helper, but the number of workflows that used mutable tags and actually executed in that window is not available in the sources. The figure concerns potential exposure, not verified impact.

Sources

Information has been verified against cited sources and updated at time of publication.

Sources


Sources and references
  1. thehackernews.com
  2. socket.dev
  3. nuclearcoffee.org
  4. guardianmssp.com
  5. blog.netmanageit.com