2025. március 14-én fény derült egy jelentős ellátási lánc támadásra, amely a GitHub Actions egyik népszerű modulját, a „tj-actions/changed-files”-t érintette. A támadás eredetileg célzott akciónak indult a Coinbase egyik nyílt forráskódú projektje ellen, ám rövid időn belül nagyszabású incidenssé terebélyesedett.
A támadás háttere
A Palo Alto Networks Unit 42 jelentése szerint a támadók elsődleges célpontja a Coinbase „agentkit” nevű projektje volt. A támadók célja feltehetően az volt, hogy a projekt folyamatait kihasználva további kompromittálásokat hajtsanak végre, azonban nem sikerült hozzáférniük a Coinbase érzékeny titkaihoz, és nem tudtak rosszindulatú csomagokat publikálni.
Az „tj-actions/changed-files” GitHub Action modul manipulálásával a támadók képesek voltak kódot injektálni, amely érzékeny adatok – például CI/CD folyamatokhoz tartozó titkos kulcsok – kiszivárogtatását eredményezte. A sebezhetőség a CVE-2025-30066 azonosítót kapta, és a CVSS skálán 8.6-os súlyossági pontszámot ért el.
Az Endor Labs becslései szerint legalább 218 GitHub repository titkai szivároghattak ki, köztük olyan hozzáférési adatok, mint DockerHub, npm és Amazon Web Services (AWS) kulcsok, valamint GitHub hozzáférési tokenek. Bár elsőre ijesztőnek tűnt az incidens mérete, a szakértők szerint a tényleges hatás korlátozott volt: többségében csak rövid élettartamú GITHUB_TOKEN kulcsok szivárogtak, amelyek a workflow lefutása után automatikusan lejárnak.
További fertőzött komponensek és módszerek
A vizsgálat során kiderült, hogy egy másik GitHub Action, a „reviewdog/action-setup” – amelyre a „tj-actions/changed-files” függőségi szinten épít – szintén kompromittálódott. Ez a támadás a CVE-2025-30154 azonosítót kapta, szintén 8.6-os CVSS értékkel.
A támadók úgynevezett dangling commit technikával dolgoztak: forkoltak egy repót, abba rosszindulatú módosítást vittek be, majd pull requesttel visszaküldték az eredeti projektbe. A támadás során több ideiglenes GitHub-fiókot használtak, valamint a naplófájlok obfuszkálásával próbálták elrejteni a nyomaikat – különösen a Coinbase elleni kezdeti támadás során.
A támadó konkrétan a Coinbase projektjeit célozta meg – például az „onchainkit”, „agentkit” és „x402” repókat –, és ezekben próbált módosításokat eszközölni, például a „changelog.yml” fájlokat átirányítani a rosszindulatú változatra.
Érdekesség, hogy a támadók különböző payloadokat használtak attól függően, hogy épp egy célzott vagy egy szélesebb körű támadást hajtottak végre. A Coinbase elleni támadás például csak akkor aktiválta a kódot, ha a repó valóban a Coinbase-hez tartozott.
Pénzügyi motiváció sejthető
Bár a végső cél nem ismert, a Palo Alto Networks kutatói szerint nagy valószínűséggel kriptovaluta-lopás lehetett a támadás mögött álló szándék. A Coinbase időben észlelte és elhárította a támadást, de ezután a támadók gyorsan kiterjesztették a kampányt más repókra – talán attól tartva, hogy elveszítik a hozzáférést az általuk kompromittált GitHub Action modulhoz.
A GitHub szerint nincs bizonyíték arra, hogy a saját rendszereik kompromittálódtak volna, mivel az érintett projektek felhasználók által karbantartott open-source repók voltak. A platform vizsgálja az esetet, és figyelmezteti a felhasználókat: mindig ellenőrizzék a GitHub Action modulokat és más csomagokat, mielőtt frissítik őket.
A kriptomagazin.hu oldalon található információk és elemzések a szerzők magánvéleményét tükrözik. A jelen oldalon megjelenő írások, cikkek nem valósítanak meg a 2007. évi CXXXVIII. törvény (Bszt.) 4. § (2). bek 8. pontja szerinti befektetési elemzést és a 9. pont szerinti befektetési tanácsadást. Bármely befektetési döntés meghozatala során az adott befektetés megfelelőségét csak az adott befektető személyére szabott vizsgálattal lehet megállapítani, melyre a jelen oldal nem vállalkozik és nem is alkalmas. Az egyes befektetési döntések előtt éppen ezért tájékozódjon részletesen és több forrásból, szükség esetén konzultáljon befektetési tanácsadóval!
A cikkekben megjelenő esetleges hibákért téves információkból eredendő anyagi károkért a kriptomagazin.hu felelősséget nem vállal.