Õàêåðû ïðîòèâ ïðîãðàììèñòîâ
Îäíà èç ñàìûõ ïîïóëÿðíûõ áèáëèîòåê JavaScript, ïàêåò Axios, áûëà àòàêîâàíà õàêåðàìè. Êàê ïèøåò Tom’s Hardware, êèáåðïðåñòóïíèêè âçëîìàëè ëè÷íûé ïðîôèëü îäíîãî èç ìåéíòåéíåðîâ ýòîãî ïðîåêòà è îïóáëèêîâàëè îò åãî èìåíè âðåäîíîñíûå âåðñèè ýòîé áèáëèîòåêè â ðåïîçèòîðèè npm.
Ïîä óãðîçîé äåñÿòêè ìèëëèîíîâ ïðîãðàììèñòîâ. Ñîãëàñíî ðåéòèíãó Tiobe çà ìàðò 2026 ã., JavaScript íàõîäèòñÿ íà øåñòîì ìåñòå ñðåäè ñàìûõ ïîïóëÿðíûõ ÿçûêîâ ïðîãðàììèðîâàíèÿ. ×òî êàñàåòñÿ áèáëèîòåêè Axios, òî â ìåíåäæåðå ïàêåòîâ npm ó íåå îêîëî 100 ìëí çàãðóçîê â íåäåëþ.
Õàêåðû âûëîæèëè ñðàçó äâà çàðàæåííûõ ðåëèçà ýòî ïàêåòà – axios@1.14.1 è axios@0.30.4.  êàæäûé èõ íèõ áûëà âíåäðåíà ñêðûòàÿ çàâèñèìîñòü, êîòîðàÿ íåçàìåòíî óñòàíàâëèâàåò êðîññïëàòôîðìåííûé òðîÿí óäàëåííîãî äîñòóïà íà ìàøèíû ðàçðàáîò÷èêîâ ïîä óïðàâëåíèåì macOS, Windows è Linux.
Îáå âðåäîíîñíûå âåðñèè äîáàâèëè â ìàíèôåñò ïàêåòà îäíó íîâóþ çàâèñèìîñòü: plain-crypto-js@4.2.1, ñïåöèàëüíî ñîçäàííûé òðîÿí, çàìàñêèðîâàííûé ïîä ëåãèòèìíóþ áèáëèîòåêó crypto-js. Ýòîò ïàêåò íèêîãäà íå èìïîðòèðîâàëñÿ è íå óïîìèíàëñÿ íèãäå â èñõîäíîì êîäå Axios. Åãî åäèíñòâåííàÿ ôóíêöèÿ çàêëþ÷àëàñü â âûïîëíåíèè ñêðèïòà postinstall, êîòîðûé ñâÿçûâàëñÿ ñ ñåðâåðîì óïðàâëåíèÿ è êîíòðîëÿ ïî àäðåñó sfrclak.com, çàãðóæàë âðåäîíîñíîå ÏÎ, à çàòåì óíè÷òîæàë âñå ñëåäû ñâîåãî âûïîëíåíèÿ.
Êàê òàê âûøëî
Àòàêó íà Axios âûÿâèëè ñïåöèàëèñòû StepSecurity – ïëàòôîðìû äëÿ çàùèòû öåïî÷êè ïîñòàâîê ïðîãðàììíîãî îáåñïå÷åíèÿ îò àòàê. Îíè îáíàðóæèëè, ÷òî õàêåðàì íå ïðèøëîñü âçëàìûâàòü ïðîôèëü ñàìîãî ïðîåêòà íà GitHub – îíè âëåçëè â àêêàóíò îäíîãî è ãëàâíûõ ñîïðîâîæäàþùèõ ïðîåêòà è âûëîæèëè çàðàæåííûå ñáîðêè áèáëèîòåêè îò åãî èìåíè.
Ýòîò øàã áûë ïðåäïðèíÿò, ïî âñåé âèäèìîñòè, íàìåðåííî. Ïðîíèêíîâåíèå â ïðîåêò ÷åðåç ïðîôèëü îäíîãî èç ìåéíòåéíåðîâ óñûïèëî áäèòåëüíîñòü àëãîðèòìîâ áåçîïàñíîñòè äëÿ ïðîâåðêè ïóáëèêàöèé. Õàêåðû ïîëó÷èëè âñå ïðàâà ñîïðîâîæäàþùåãî ïðîåêòà, êîòîðûé ìîæåò âûêëàäûâàòü ñáîðêè ñàìîñòîÿòåëüíî, òàê êàê ÿâëÿåòñÿ äîâåðåííûì ó÷àñòíèêîì.
Ñëîâíî íèíäçÿ
Çàðàæåííàÿ áèáëèîòåêà ïîñëå çàïóñêà ñêà÷èâàåò íà êîìïüþòåð æåðòâû âðåäîíîñíîå ÏÎ, à ïîñëå âûïîëíÿåò ðÿä äåéñòâèé, ÷òîáû íèêòî íå äîãàäàëñÿ î òîì, ÷òî áèáëèîòåêà Axios çàðàæåíà. Ñêðèïò óäàëÿåò âñå ñëåäû ñâîåé àêòèâíîñòè è äàæå âíåäðÿåò ÷èñòûé ôàéë package.json, áóäòî íè÷åãî è íå áûëî.
Ñïåöèàëèñòû StepSecurity âûÿâèëè, òî çàðàæåííàÿ áèáëèîòåêà – ýòî êëàäåçü òåõíîëîãèé ìàñêèðîâêè âðåäîíîñíîãî ÏÎ.  ÷àñòíîñòè, íåîáõîäèìûå êîìïîíåíòû îíà ñêðûâàåò â ïàïêàõ, ïðåäíàçíà÷åííûõ äëÿ âðåìåííûõ ôàéëîâ, à òðåáóåìûå êîìàíäû âûïîëíÿåò íå íà óñòðîéñòâå, à íà õîñòå. Ïîìèìî ýòîãî, äåîáôóñêàöèÿ êîäà ïðèìåíÿåòñÿ èñêëþ÷èòåëüíî âî âðåìÿ âûïîëíåíèÿ ñêðèïòà.
Ê ìîìåíòó âûõîäà ìàòåðèàëà íå áûëî äîñòîâåðíî èçâåñòíî, ñêîëüêî ÷åëîâåê çàïóñòèëè íà ñâîèõ ÏÊ çàðàæåííóþ áèáëèîòåêó. Êàê ïèøåò Tom’s Hardware, âðåäîíîñíûå âåðñèè Axios îñòàâàëèñü àêòèâíûìè ïðèìåðíî äâà-òðè ÷àñà ïîñëå ïóáëèêàöèè, à çàòåì npm óäàëèë èõ.
Íå ïåðâûé ðàç
Õàêåðû, ïî-âèäèìîìó, õîòÿò íàñîëèòü êàê ìîæíî áîëüøåìó ÷èñëó ðàçðàáîò÷èêîâ íà JavaScript, ïîñêîëüêó ðåãóëÿðíî óñòðàèâàþò àòàêè íà íèõ.  èþíå 2025 ã. CNews îñâåùàë èñòîðèþ âíåäðåíèÿ âðåäîíîñíîãî ÏÎ ñðàçó â íåñêîëüêî ïàêåòîâ â ðåïîçèòîðèè npm.
Çàðàæåíû áûëè ïàêåòû Gluestack @react-native-aria ñ îáùèì êîëè÷åñòâîì åæåíåäåëüíûõ ñêà÷èâàíèé - ñâûøå 1 ìëí. Ñàìûìè ïîïóëÿðíûìè ÿâëÿþòñÿ interactions, utils (aria) è focus – îò 100 äî 125 òûñ. ñêà÷èâàíèé.
Íà÷àëîñü âñå 6 èþíÿ 2025 ã., êîãäà â npm áûëà ïîäãðóæåíà íîâàÿ âåðñèÿ ïàêåòà @react-native-aria/focus. Ïîñëå ýòîãî 17 èç 20 ïàêåòîâ Gluestack áûëè ñêîìïðîìåòèðîâàíû â òå÷åíèå äâóõ ñóòîê.



