logoalt Hacker News

Rial_Labstoday at 1:35 AM1 replyview on HN

Two things combined.

First: Git tags are not immutable. When you write actions/[email protected] in your pipeline you are not pinning to a fixed commit. The tag is just a pointer and whoever controls the repo can silently move it to point to different code. Most teams assume a version tag means a fixed version. It does not.

Second: Git does not verify who makes a commit. Anyone can set their name to any Aqua Security developer they want. The malicious commit looked like it came from a trusted author because Git has no identity enforcement at all.

The practical fix for the first problem is pinning to a full commit hash instead of a tag name. That hash cannot be moved.

Almost nobody does this by default which is why the attack worked at scale. its very common supply chain failure pattern.


Replies

OutOfHeretoday at 1:46 AM

> The practical fix for the first problem is pinning to a full commit hash instead of a tag name

If the underlying project in turn uses named tags, i.e. if the hash pinning doesn't apply transitively, then the protection appears incomplete, doesn't it?

show 1 reply