В последно време се наблюдава нарастваща тенденция към атаки по веригата на доставки в софтуерната индустрия, които целят да компрометират широко използвани пакети и библиотеки. Последният такъв случай включва осем пакета в популярния PHP пакетен регистър Packagist, които са били заразени с Linux зловреден код, хостван в GitHub.
Какво се случи?
Според анализ на експерти от Socket, злонамерената кампания е била координирана и е засегнала осем различни пакета в Packagist. Въпреки че всички засегнати пакети са Composer пакети, зловредният код не е бил добавен в стандартния файл composer.json, който обикновено дефинира зависимостите и метаданните на PHP проектите. Вместо това, атакуващите са модифицирали package.json – файл, използван в JavaScript проекти – което показва, че целта са били проекти, които използват JavaScript компоненти.
Зловредният код е проектиран да изтегля и изпълнява Linux бинарен файл от GitHub Releases URL, което позволява на атакуващите да контролират заразените системи или да извършват други злонамерени действия. Тази техника на внедряване на зловреден код е особено опасна, тъй като използва легитимен хостинг на код (GitHub), което затруднява откриването и блокирането на заплахата.
Защо това е важно?
Атаките по веригата на доставки представляват сериозна заплаха за софтуерната индустрия, тъй като компрометират доверените зависимости, които разработчиците използват ежедневно. В случая с Packagist, заразените пакети могат да се използват в множество проекти, което разпространява зловредния код в голям мащаб.
Този инцидент подчертава уязвимостите в процесите за проверка и контрол на качеството на пакетите, особено когато злонамерен код се внедрява чрез по-малко очаквани файлове като package.json. Това също така показва, че атакуващите адаптират методите си, за да заобиколят традиционните механизми за сигурност и да достигнат до по-широка аудитория.
По-широк контекст
В последните години атаките по веригата на доставки на софтуер са се увеличили значително, като примери включват компрометирани npm пакети, злонамерени Ruby Gems и други. Тези атаки използват доверието, което разработчиците имат в популярните библиотеки и инструменти, за да разпространяват зловреден код.
Packagist е основен регистър за PHP пакети, използван от милиони разработчици по света. Затова всяка компрометация на неговите пакети може да има сериозни последици за сигурността на множество уеб приложения и услуги.
Този случай също така подчертава необходимостта от по-строги проверки на пакетите, включително анализ на всички файлове, а не само на основните конфигурационни файлове, както и използването на автоматизирани инструменти за откриване на аномалии и зловреден код.
Какво може да последва?
След разкриването на тази атака, е вероятно Packagist и свързаните с него платформи да засилят мерките за сигурност, включително по-строг контрол на качваните пакети и по-задълбочен анализ на съдържанието им. Разработчиците също трябва да бъдат по-внимателни при използването на външни зависимости и да прилагат допълнителни проверки и мониторинг на сигурността в своите проекти.
В дългосрочен план, индустрията може да се насочи към по-широко използване на технологии като подписване на пакети, автоматизирано сканиране за уязвимости и по-строги политики за управление на веригата на доставки. Това ще помогне за намаляване на риска от подобни атаки и ще повиши общата сигурност на софтуерната екосистема.