Атаки срещу веригата за доставки на софтуер през 2025 г. - злонамерени пакети - злонамерени пакети на Python - злонамерени NPM пакети

По-подробен поглед върху атаките срещу веригата за доставки на софтуер през 2025 г.: Сравнение на PyPI и npm кампании

Xygeni наскоро наблюдава обезпокоителна тенденция в атаките срещу веригата за доставки на софтуер през 2025 г., появявайки се в два популярни мениджъра на пакети: PyPI намлява NPMКато част от нашите текущи усилия за разузнаване на заплахите,Ранно предупреждение за зловреден софтуер (MEW) на Xygeni Инструментът идентифицира отделен, но методологично подобен случай на злонамерен пакет, качен в друг регистър преди това. Този случай подчертава как злонамерените лица развиват и използват повторно техники за атака в различни екосистеми, особено чрез злонамерени Python пакети намлява злонамерени npm пакети, което увеличава риска от проникване на злонамерени пакети във веригите за доставки на продукти с отворен код.

MEW на Xygeni: Откриване на прилики

Инструментът MEW на Xygeni е създаден за откриване и маркиране на злонамерени пакети, особено тези, свързани с атаки срещу веригата за доставки на софтуер през 2025 г., веднага щом бъдат публикувани в регистри с отворен код. Той работи, като анализира нови пакети за подозрително поведение.

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

Злонамерени Python и npm пакети при атаки срещу веригата за доставки на софтуер (2025)

Нека разгледаме споделените характеристики, които са задействали нашите сигнали:

Типоскват

И двамата се опитаха да се представят за популярни съществуващи пакети.

  • графалго (PyPI): "Python пакет за създаване и манипулиране на графи и мрежи.„Качено от потребител с име „Ларитек“ На 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 (Python) startup.js (JavaScript)
  • Често срещани постоянни пътища (зависими от операционната система)В директориите с потребителски данни на Google Chrome (напр. AppData\Local\Google\Chrome\UserData\Scripts\ на Windows, ~/.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) решения, могат да осигурят критичен слой защита чрез идентифициране на подозрителни поведения и уязвимости.
  • Най-малка привилегияРаботата със среди за разработка с принципа на най-малките привилегии може да помогне за ограничаване на потенциалното въздействие на компрометиране.
  • Мрежова осведоменостМониторингът на изходящия мрежов трафик за необичайни връзки понякога може да разкрие генерирани от DGA C2 комуникации.

Ключови компоненти на 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 Tools
Приоритизирайте, отстранете и защитете софтуерните си рискове
Вземете своя безплатен акаунт.
Не е необходима кредитна карта.

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

с продуктовия пакет Xygeni