Напади во синџирот на снабдување со софтвер 2025 - малициозни пакети - малициозни пакети на Python - малициозни npm пакети

Подетален поглед на нападите врз синџирот на снабдување со софтвер 2025: Споредба на кампањите PyPI и npm

Xygeni неодамна забележа загрижувачки модел во пејзажот на напади врз синџирот на снабдување со софтвер во 2025 година., што се појавува кај два популарни менаџери на пакети: PyPI npmКако дел од нашите тековни напори за разузнавање на заканите,Рано предупредување за малициозен софтвер (MEW) на Xygeni алатката идентификуваше посебна, но методолошки слична инстанца на злонамерен пакет претходно качен во друг регистар. Овој случај истакнува како актерите на заканата се развиваат и ги користат техниките за напад низ екосистемите, особено преку злонамерни пакети на Python малициозни npm пакети, што го зголемува ризикот од малициозни пакети што се инфилтрираат во синџирите на снабдување со отворен код.

Xygeni's MEW: Забележување на сличностите

Алатката MEW на Xygeni е изградена за откривање и означување на злонамерни пакети, особено оние поврзани со напади на синџирот на снабдување со софтвер во 2025 година, веднаш штом ќе бидат објавени во регистри со отворен код. Работи со анализа на нови пакети за сомнително однесување.

Во овој случај, идентификуваше две злонамерни пакети на Python (graphalgo на PyPI) и малициозни npm пакети (express-cookie-parser на npm).

Злонамерни Python и npm пакети во напади на синџирот на снабдување со софтвер (2025)

Да ги истражиме заедничките карактеристики што ги активираа нашите предупредувања:

Тајкуирање

И двајцата се обидоа да се претстават како популарни постоечки пакети.

  • графалго (PyPI)"Пајтон пакет за креирање и манипулирање со графикони и мрежи.„Поставено од корисник по име „ларитек“ На 13 јуни 2025 година, овој пакет се претстави како PyPi алтернатива на оригиналниот незлонамерен проект graphalgo, кој подоцна беше преименуван во graphdict.
  • експрес-парсер-за-колачиња (npm)Овој пакет го имитираше добро познатиот пакет cookie-parser, дури и го отсликуваше неговиот README.md. Таквото лажно претставување е класична тактика за искористување на постоечката доверба.

Замаглувањето како прва линија на одбрана

И двата пакети го прикриле својот злонамерен код во оригиналните датотеки. графалго, замаглениот код беше пронајден во /utils/load_libraries.py. Во случајот на експрес-парсер-за-колачиња, cookie-loader.min.js го содржеше замаглениот товар.

Овој почетен слој на замаглување обично се користи за да се спречи случајна инспекција и статичка анализа. Замаглувањето беше прилично едноставно: повторена ZLib компресија плус Base64 кодирање. Овој тип на замаглување јасно укажува дека софтверот се обидува да го скрие своето однесување. Заедно со други докази, ова му овозможи на Xygeni MEW да ги класифицира пакетите како потенцијален малициозен софтвер. За време на фазата на потврда, нашите рецензенти веднаш подготвија скрипта за дезамаглирање што ја откри очигледно злонамерната фаза на dropper.

Достава на товар во повеќе фази и заедничка точка на потекло

И двата пакети функционираа како почетни „измет„,“ поставувајќи ја сцената за вистинскиот товар. Тие делеа заеднички надворешен „семе„URL на датотека:“
https://raw.githubusercontent.com/johns92/blog_app/refs/heads/main/server/.env.example

Оваа идентична надворешна датотека seed е силен индикатор за споделен актер на закана. Интересно е што содржината на оваа датотека seed се чини дека е едноставна променлива на околината (на пр., JWT_SECRET, PORT), што потенцијално може да доведе до заблуда во однос на нејзината вистинска функција.

Динамичка C2 резолуција со DGA

Софистицирана тактика што се забележува кај овие злонамерни пакети е употребата на алгоритам за генерирање домени (DGA) за динамичко решавање на серверот за команда и контрола (C2). Оваа техника, која често се гледа кај напредните напади на синџирот на снабдување со софтвер во 2025 година, се потпира на SHA256 хаш добиен од содржината на датотеката seed, во комбинација со други тврди кодирани вредности. Со тоа, инфраструктурата C2 често се менува, што го прави традиционалното ставање во црна листа многу помалку ефикасно. Во овој случај, варијантата npm користела фиксна вредност од 496AAC7E како дел од неговата DGA логика.

Воспоставување на упорност

И двајцата напаѓачи се обидоа да воспостават трајно присуство на засегнатите системи. Нивната стратегија вклучуваше бришење на датотека, startup.py (за PyPi) или startup.js (за npm), во вообичаени директориуми со кориснички податоци на Google Chrome низ различни оперативни системи (Windows, Linux, macOS).

Чистење по извршувањето

За да ги минимизираат трагите, обете злонамерни скрипти извршија операции за чистење. Ова вклучуваше бришење на нивните почетни датотеки со dropper (load_libraries.py, cookie-loader.min.js) и модифицирање на легитимни датотеки на пакети (__init__.py, index.js) за да ги отстраните референците до компонентите што сега се избришани.

Индикатори за компромитирање во малициозни пакети на Python и npm

  • PyPI пакет: graphalgo (објавено од larrytech, 13 јуни 2025 година)
  • npm пакет: express-cookie-parser (поточно верзија 1.4.12)
  • Пристап до URL-то за споделување на почетната страница

https://raw.githubusercontent.com/johns92/blog_app/refs/heads/main/server/.env.example

  • Перзистентни имиња на датотеки: startup.py (Пајтон) startup.js (ЈаваСкрипт)
  • Чести перзистентни патеки (зависни од оперативниот систем)Во рамките на корисничките директориуми на Google Chrome (на пр., AppData\Local\Google\Chrome\UserData\Scripts\ на Виндоус, ~/.config/google-chrome/Scripts/ на Linux, итн.).

Како да се одбраните од малициозни пакети во нападите на синџирот на снабдување со софтвер 2025

Препорачан пристап за програмери

Овој инцидент служи како вредна студија на случај во еволутивниот пејзаж на закани од нападите во синџирот на снабдување со софтвер во 2025 година. Тој истакнува како злонамерните пакети на Python и злонамерните npm пакети можат да се протнат во доверливи екосистеми, честопати избегнувајќи откривање сè додека не биде предоцна. Затоа раното откривање, паметните алатки и проактивната хигиена на системот сега се суштински делови од секој безбеден работен тек на DevOps. На програмерите им се препорачува да го земат предвид следново:

Преглед на зависност

Доколку вашите проекти вклучуваат графалго or експрес-парсер-за-колачиња, би било разумно да се продолжи со нивното отстранување.

  • За PyPI: pip uninstall graphalgo
  • За npm: npm uninstall express-cookie-parser

Системска хигиена

Размислете за спроведување на сеопфатно скенирање на системот. Исто така, препорачливо е рачно да ги проверите вообичаените патеки на директориумот со кориснички податоци на Chrome за какви било неочекувани startup.py or startup.js додадени фајлови.

Проактивни безбедносни мерки

  • Проценка на нови зависностиВоспоставете рутина за темелна евалуација на новите пакети пред интеграцијата, фокусирајќи се на оние од непознати издавачи.
  • Интегрирајте безбедносни алаткиАлатки како MEW на Xygeni, заедно со други алатки за анализа на композиција на софтвер (SCA) решенија, можат да обезбедат критичен слој на одбрана преку идентификување на сомнителни однесувања и ранливости.
  • Најмалата привилегијаРаботењето во развојни средини со принципот на најмали привилегии може да помогне во ограничувањето на потенцијалното влијание од компромис.
  • Мрежна свестСледењето на излезниот мрежен сообраќај за необични врски понекогаш може да открие C2 комуникации генерирани од DGA.

Клучни компоненти на load_libraries.py (од графалго)

  • download_remote_content(): Се справува со преземање датотеки од наведени URL-адреси.
  • run_process()Извршува надворешни Python скрипти на одвоен начин, потиснувајќи го излезот за да остане дискретен.
  • get_output_file_path()Ја одредува идеалната системска локација за перзистентната датотека startup.py.
  • remove_self(): Го оркестрира чистењето по извршувањето на почетните малициозни датотеки и модификациите на пакетите.
  • simple_shift_encrypt() / simple_shift_decrypt()Прилагодени криптографски функции за прикривање на комуникациските канали, клучни за имплементацијата на DGA.
  • load_libraries()Централната функција што го координира целиот повеќестепен процес, од почетното преземање до конечното извршување и чистење на товарот.

Последиците

Како и со другите потенцијално малициозни пакети идентификувани од MEW, заштитниот ѕид на зависностите веднаш ги заштити корисниците кои ги вклучија овие малициозни пакети во нивните зависности. По потврдата, ги следевме процедурите за известување за двата регистри, кои по прегледот ги отстранија двата пакети.

алатки-за-анализа-на-композиции-на-sca-алатки
Дајте приоритет, санирајте и обезбедете ги вашите софтверски ризици
Добијте ја вашата бесплатна сметка.
Не е потребна кредитна картичка.

Обезбедете го вашиот развој и испорака на софтвер

со Xygeni Product Suite