maennchen

maennchen

Hackerbot-claw: Active GitHub Actions Exploitation

OpenSSF Siren published a TLP:CLEAR advisory (March 1, 2026) about an ongoing attack campaign called “hackerbot-claw”. This is being exploited in the wild right now.

Advisory:

What they’re doing

Attackers are scanning public repositories for weak GitHub Actions setups and chaining together common CI mistakes, for example:

  • Misusing pull_request_target
  • Checking out and running fork code in privileged workflows
  • Modifying scripts in PRs that later get executed by CI
  • Injecting shell via untrusted expressions like ${{ github.event.pull_request.title }}
  • Sneaking commands through branch names or file paths

A simple but dangerous example:

run: echo "${{ github.event.pull_request.title }}" | sh

If you interpolate untrusted ${{ }} values directly into run: steps, you’re effectively handing the shell attacker-controlled input.

The underlying issues are not new. The security community has warned about these patterns for years. What’s different now is automation. This campaign appears to use AI to scan and exploit repositories at scale. Weak configurations don’t stay unnoticed anymore.

What I’d recommend

  • Avoid pull_request_target unless you really need it
  • Never run untrusted fork code in privileged workflows
  • Don’t expand untrusted ${{ }} expressions directly in shell commands
  • Explicitly restrict GITHUB_TOKEN permissions (default to contents: read)
  • Require review for changes under .github/workflows/*
  • Pin third-party actions by commit SHA
  • Rotate secrets if you’re unsure what may have run

It’s also worth adding automated checks:

We recently enabled zizmor in Elixir:
https://github.com/elixir-lang/elixir/pull/15114

If you maintain BEAM projects, it’s a good moment to re-check your workflows.

Where Next?

Popular in News & Updates Top

fhunleth
We recently released Nerves 1.4.0 and an update to the Nerves new project generator, nerves_bootstrap. The biggest change is support for ...
New
sorentwo
Many months ago when I originally announced Oban I mentioned that a LiveView powered UI would be available for it soon. Well, the “soon” ...
New
zachdaniel
The second video from the Ash Primers series is out! https://www.youtube.com/watch?v=GtsL_lIis4Q This one is about the migration generato...
New
fhunleth
It looks like it’s finally safe to announce that Nerves supports Erlang/OTP 26 and Elixir 1.15! We’ve updated dozens of Nerves and close...
New
zachdaniel
Hey folks! We’re starting a new weekly newsletter with the goings on of the various Ash packages and other interesting news from myself a...
New
bartblast
Hi friends, I wanted to share an update on Hologram that’s been on my mind lately. After nearly 3 years of full-time work on Hologram, ...
New
bartblast
Hologram v0.8.0 is out! This release brings JavaScript interoperability - the most requested feature since the project’s inception. You c...
New

Other popular topics Top

New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New

We're in Beta

About us Mission Statement