
GitHub Actions rishfaqen me malware Mini Shai-Hulud
Dy GitHub Actions të komprometuara më parë u riaktivizuan dhe shërbyen të njëjtën ngarkesë të dëmshme për më shumë se një javë, duke vënë në rrezik flukset e punës pasardhëse.
Sulmuesit ringjallën shkurtimisht një kërcënim të zinxhirit të furnizimit javën e kaluar, kur dy GitHub Actions të palëve të treta, të sekuestruara më parë në një fushatë malware të majit, u riaktivizuan me të njëjtin kod të dëmshëm ende të lidhur me etiketat e tyre të versionit. Aksionet, actions-cool/issues-helper dhe actions-cool/maintain-one-comment, u bënë përsëri të aksesueshme më 16 shtator dhe qëndruan aktive deri më 25 shtator, duke lejuar çdo fluks pune që i referohej atyre me anë të një etikete versioni të shkarkonte dhe ekzekutonte në heshtje ngarkesën e vjetër.
Ky incident, i zbuluar nga studiuesit e firmës së sigurisë së aplikacioneve Socket, e ka origjinën te sulmi i zinxhirit të furnizimit Mini Shai-Hulud që infektoi 323 paketa dhe 639 versione paketash në indeksin e Node Package Manager (npm) në maj. Ajo fushatë synoi tokena zhvilluesish, kredenciale dhe sekrete të integrimit dhe dërgimit të vazhdueshëm (CI/CD). Ekipi i sigurisë i GitHub kishte hequr të dy aksionet pas komprometimit fillestar më 18 maj, duke besuar se kërcënimi ishte neutralizuar. Megjithatë, mirëmbajtësi i riaktivizoi më vonë depot pa pastruar më parë etiketat, të cilat ende tregonin për një commit që përmbante një ngarkesë të fshehur brenda skedarit index.js.
Sipas kronologjisë së Socket, ekspozimi filloi midis orës 11:09 dhe 18:16 GMT+2 më 16 shtator. Për nëntë ditë, çdo projekt pasardhës që përdorte aksionet me anë të një etikete versioni të ndryshueshme, në vend të një hash-i commit të fiksuar, do të merrte kodin e infektuar në ekzekutimin e tij të ardhshëm. Këto aksione përdoren zakonisht për mirëmbajtje të automatizuar të çështjeve, që do të thotë se ato ekzekutohen pothuajse çdo ditë në shumë depo. Grafiku i varësive i GitHub liston rreth 15,000 depo që varen vetëm nga issues-helper, megjithëse numri aktual që tërhoqi versionin e dëmshëm është i panjohur, sepse studiuesit nuk mundën të përcaktonin se sa projekte u referohen aksioneve me etiketë kundrejt një commit të kyçur.
Ngarkesa në fjalë është i njëjti skript i fshehur nga maji, i projektuar për të vjedhur sekrete nga tubacioni CI/CD. Në zhvillimin modern të softuerit, një tubacion CI/CD ndërton, teston dhe vendos automatikisht kodin, shpesh me akses në kredenciale të ndjeshme si çelësa API dhe fjalëkalime bazash të dhënash. Kur një aksion i dëmshëm ekzekutohet brenda atij tubacioni, ai mund të thithë në heshtje ato sekrete në një server të kontrolluar nga sulmuesi. Riaktivizimi, edhe pa një kod të ri sulmi, rihapi në mënyrë efektive derën e pasme për çdo fluks pune që nuk ishte përditësuar ose rishikuar që nga pastrimi fillestar.
Më 25 shtator, të dy aksionet u çaktivizuan përsëri në GitHub, duke bërë që flukset e punës që ende u referohen atyre të dështojnë plotësisht në vend që të ekzekutojnë malware-in. Ndërsa një ndërtim i dështuar është shkatërrues, është më i sigurt sesa të eksfiltrosh kredencialet në heshtje. Këshillimi i Socket u bën thirrje zhvilluesve të auditojnë të gjitha referencat ndaj të dy aksioneve, t'i heqin ato ose të fiksojnë një commit të verifikuar si të pastër, të rishikojnë ekzekutimet e fluksit të punës të kryera midis 16 dhe 25 shtatorit dhe të ndërrojnë menjëherë çdo sekret që ato flukse pune mund të aksesonin. Për pronarët e faqeve të internetit që mbështeten në integrime të tilla të automatizuara, një mjedis i menaxhuar hostimi si AEU Hosting ofron skanim të vazhdueshëm malware dhe forcim sigurie, duke ndihmuar në kufizimin e rrezes së dëmit kur varësitë e jashtme komprometohen.
Sulmi Mini Shai-Hulud ilustron se si rreziqet e zinxhirit të furnizimit mund të rishfaqen shumë kohë pas kontrollit fillestar nëse mirëmbajtësit nuk pastrojnë plotësisht depot. Ekosistemi npm, i përdorur gjerësisht nga zhvilluesit JavaScript, është një objektiv i shpeshtë sepse një paketë e vetme e infektuar mund të përhapet në mijëra projekte. Ky rast është një kujtesë se çaktivizimi i një aksioni nuk mjafton; etiketat dhe commit-et vetë duhet të pastrohen nga përmbajtja e dëmshme. Mbrojtësve u këshillohet gjithashtu të adoptojnë praktikën e fiksimit të aksioneve të palëve të treta në një hash specifik dhe të audituar commit, në vend të një etikete lundruese, një masë që do të kishte parandaluar ridepozitimin automatik të malware-it.
Si të Mbroheni
- Kërkojini zhvilluesit tuaj të kontrollojë të gjitha flukset e automatizuara të punës për çdo përdorim të actions-cool/issues-helper ose actions-cool/maintain-one-comment.
- Nëse ato aksione janë përdorur, ndërroni menjëherë çdo fjalëkalim, çelës API ose sekret që ato flukse pune kishin leje të aksesonin.
- Rishikoni regjistrat e vendosjes dhe aktivitetit të faqes suaj për çdo sjellje të pazakontë midis 16 dhe 25 shtatorit 2026.
- Udhëzojeni ekipin tuaj që gjithmonë të lidhet me një hash specifik commit kur përdor GitHub Actions të palëve të treta, në vend të një etikete versioni që mund të ndryshojë.
- Fshini ose bllokoni çdo token ose çelës publik që mund të jetë ekspozuar gjatë periudhës kur malware ishte aktiv.
Termat e Shpjeguar
- GitHub Actions Një veçori që lejon zhvilluesit të ekzekutojnë automatikisht detyra, si testimi i kodit ose vendosja e një faqe interneti, kur ndodhin ngjarje të caktuara.
- supply-chain attack Një sulm kibernetik që synon një mjet ose shërbim të besuar të palëve të treta të përdorur nga shumë njerëz, kështu që malware përhapet kur ai mjet përditësohet ose instalohet.
- npm (Node Package Manager) Një bibliotekë e madhe online ku zhvilluesit ndajnë dhe shkarkojnë copa kodi të gatshme për projektet JavaScript.
- CI/CD secrets Informacione të ndjeshme si fjalëkalime dhe çelësa aksesi që sistemet e automatizuara të ndërtimit dhe vendosjes përdorin për të aksesuar shërbime të sigurta.
- mutable version tag Një etiketë që tregon versionin më të fundit të një pjese kodi, e cila mund të ndryshohet për t'iu referuar kodit të ndryshëm pa e ditur përdoruesi.
- commit hash Një gjurmë unike dhe e pandryshueshme për një version specifik të kodit, e përdorur për të kyçur softuerin në një pamje të besuar.
- obfuscated payload Kod i dëmshëm që është ngatërruar qëllimisht për ta bërë më të vështirë për t'u zbuluar dhe kuptuar.