Detalle de la noticia

Malware

Worm armed 42 GitHub repos by hiding a payload too big to fail

Fuente: The Register - Security Publicado: 26/10/2026 · 22:29 UTC
Compartir:
Malware Worm armed 42 GitHub repos by hiding a payload too big to fail
Imagen: The Register - Security

A new Mias­ma-fa­mily npm worm, ori­gi­nally be­lie­ved to be just a test with no vic­tims, se­cretly armed 42 real GitHub re­po­si­to­ries from 11 ow­ners, hi­jac­king ac­counts as early as July and using a stealthy pay­load built to stay hid­den from GitHub and au­to­ma­ted scan­ners, ac­cor­ding to JFrog re­sear­chers. Th­reat hun­ters at Sa­fe­Dep, an open sour­ce supply chain se­cu­rity firm, first spot­ted the “test­me­test” npm cam­paign last week, iden­tif­ying 18 pac­ka­ges lin­ked to the same ope­ra­tor bet­ween Oc­to­ber 19 and Oc­to­ber 25, in­clu­ding re­lea­ses con­tai­ning cre­den­tial-stea­ling malwa­re. As with ear­lier npm worms, the malwa­re is self-re­pli­ca­ting, steals cre­den­tials, and ins­talls a wiper that de­le­tes the home di­rec­tory when the vic­tim re­vo­kes the sto­len GitHub token, the se­cu­rity re­sear­chers noted. The new npm worm sha­res code with June’s Mias­ma Phan­tom Gyp worm, and adds Mini Shai-Hulud’s token-re­vo­ca­tion wiper. As of Oc­to­ber 22, ho­we­ver, Sa­fe­Dep had found no com­pro­mi­sed third-party pac­ka­ges or vic­tims. “All ob­ser­ved ac­ti­vity be­longs to the ope­ra­tor’s own test ac­counts,” the team wrote. As with most happy-en­ding se­cu­rity sto­ries, that pro­ved too good to be true. In a Mon­day re­port, supply chain se­cu­rity com­pany JFrog said its analy­sis pro­ved other­wi­se, and found the test­me­test cam­paign ope­ra­tor “had al­ready armed real re­po­si­to­ries be­lon­ging to es­ta­blished de­ve­lo­pers and or­ga­ni­za­tions.” This isn’t just about ti­ming, either, ac­cor­ding to JFrog re­sear­chers Guy Ko­ro­levs­ki and Yair Be­na­mou. “The pay­load blobs were large enough to evade the GitHub search and API paths nor­mally used to find this kind of com­pro­mi­se,” they wrote. How the at­tacks wor­ked The at­tac­kers plan­ted execu­tion hooks for AI co­ding as­sis­tants and de­ve­lop­ment tools, in­clu­ding Clau­de, Ge­mi­ni, Cur­sor, and VS Code, along­si­de poly­morphic wrap­pers mea­su­ring 12.9 to 13.7 MB that de­co­de a hid­den CI-pu­blisher pay­load. Se­pa­ra­tely, the npm worm steals cre­den­tials, mo­di­fies re­po­si­to­ries and CI con­fi­gu­ra­tions, and spreads th­rough npm pac­ka­ges. The malwa­re also uses a com­pi­led na­ti­ve add-on to decrypt and launch a se­pa­ra­te pay­load. Be­fo­re execu­ting, the loa­der checks for CI run­ners, con­tai­ners, sand­bo­xes, de­bug­gers, and other signs of au­to­ma­ted analy­sis, exiting si­lently when it de­tects them to re­du­ce the li­ke­lihood of de­tec­tion by se­cu­rity scan­ners. The re­sear­chers also found a se­cond build that skips the encry­pted file. “It forks, de­ta­ches and runs a hard-coded com­mand that pulls a loa­der from a re­po­si­tory on the ope­ra­tor's own GitHub ac­count,” they wrote. That ac­count – Ce­ment­BeetleS­tee­ple – hos­ted 17 cam­paign re­po­si­to­ries in total. JFrog con­nec­ted this ac­count to a shell­pa­nel scan­ner, pre­viously do­cu­men­ted by Soc­ket in a large-scale cam­paign that abu­sed GitHub Ac­tions in com­pro­mi­sed re­po­si­to­ries to ex­ploit CVE-2026-41940 and steal ser­ver cre­den­tials. CVE-2026-41940 is an authen­ti­ca­tion by­pass af­fec­ting cPa­nel and WHM. CISA added it to its Known Ex­ploi­ted Vul­ne­ra­bi­li­ties ca­ta­log in April, and cPa­nel has since pu­blished pat­ched ver­sions. “C2 in­fras­truc­tu­re were pre­viously re­por­ted by Soc­ket; our fin­dings con­nect them to the test­me­test GitHub vic­tim clus­ter th­rough ar­ti­facts and work­flows on the same hi­jac­ked ow­ners,” the JFrog re­sear­chers wrote. They added that while they found 42 armed GitHub re­po­si­to­ries and at­tem­pted in­ter­net-wide ex­ploi­ta­tion, they did not con­firm any downs­tream cPa­nel com­pro­mi­ses.®…