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’re excited to announce that we’re actively working on NervesHub 2.0, an improved version of our IoT device firmware update and managem...
New
zachdaniel
Hey folks! I’ll be teasing some interesting bits going into Ash 3.0 while I work on it, and this is post #1! You can follow along with t...
New
zachdaniel
Ash Framework 3.0: Release Candidates! The day is finally here! This is the culmination of years of work from the Ash team and community ...
New
mat-hek
Hi everyone, I’d like to share with you a new library from the Membrane team - Boombox. It’s a simple streaming tool built on top of Mem...
New
bartblast
Hologram v0.6.0 is here, bringing production-ready features to the full-stack Elixir web framework! This release focuses on enhanced secu...
New
bartblast
Great news for Hologram: the Erlang Ecosystem Foundation has awarded a stipend to support key development milestones! I’m deeply gratefu...
New
sorenone
Today we’re releasing Oban for Python. Not an Oban client in Python. Not a pythonx wrapper embedded in Elixir. Nope, it’s a fully operati...
New

Other popular topics Top

vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New

We're in Beta

About us Mission Statement