Нова атака по веригата за доставки в npm превърна доверени софтуерни пакети в канал за кражба на идентификационни данни.
Кампанията стартира, след като атакуващи компрометираха профила на разработчика, поддържащ широко използваната библиотека Keyv, и след това използваха този достъп, за да публикуват версии със злонамерен код в нарастващ брой проекти.
Инцидентът е важен, тъй като npm пакетите рутинно се инсталират автоматично по време на разработка и изграждане на софтуер. Поради тази причина заразена зависимост може да достигне до лаптопи, сървъри и автоматизирани тръбопроводи (pipelines), без служител изобщо да е посещавал подозрителен уебсайт или да е отварял злонамерен прикачен файл.
Microsoft и Socket идентифицираха активността като действаща кампания на Mini Shai-Hulud – саморазпространяваща се операция със злонамерен код, създадена за кражба на токени за достъп и повторната им употреба. В доклади, споделени с Cyber Security News (CSN), те посочват, че атакуващите изглежда използват множество откраднати токени за публикуване.
Мащабът се разрасна бързо. Socket съобщи за 2234 засегнати версии на пакети в 444 уникални пакета, докато активността все още се разпространяваше. Това показва как един-единствен компрометиран разработчик може да създаде огромен риск по веригата за екипи по целия свят, които разчитат на код с отворен код.
Начало на атаката
Атаката започна с компрометиране на доверения акаунт, свързан с Keyv – популярна библиотека за съхранение на данни от тип „ключ-стойност“. След като атакуващите получиха достъп за публикуване, те успяха да издадат променени пакети, които изглеждаха като обикновени актуализации и бяха достъпни чрез стандартния процес на инсталиране в npm. Тази първоначална позиция осигури на кампанията необичайно голяма аудитория поради огромния брой седмични изтегляния на Keyv.
Версиите със злонамерен код използват инструкция по време на инсталиране, за да стартират атаката още преди разработчикът да е използвал пакета. Вместо да спре до една машина, той търси идентификационни данни, които да му позволят да публикува променени версии от името на други разработчици, създавайки верижна реакция в регистъра.
Това поведение отличава инцидента от еднократно заразяване на пакет. Заплахата е проектирана да се движи през връзките за публикуване на софтуер, което означава, че всеки откраднат токен отваря нов път към разработчици, системи за компрометиране на билдове и организации.
След стартиране злонамереният код търси идентификационни данни, свързани с npm, платформи за хостване на код, облачни услуги и системи за непрекъсната интеграция (CI/CD). Откраднатата информация се изпраща извън средата на жертвата, след което достъпът за публикуване се използва за промяна на архивите на пакетите, увеличаване на номера на версията им и повторно пускане.
Препоръки за защита
Екипите трябва да третират всяка инсталация на посочена компрометирана версия като потенциално изтичане на пароли и ключове, а не просто като грешна зависимост. Засегнатите версии трябва да бъдат премахнати, конфигурационните файлове за зависимости (lockfiles) да се генерират наново от доверени източници, а скорошните промени в пакетите да се прегледат преди възобновяване на автоматичните внедрявания.
Ротацията на идентификационните данни е изключително важна. Токените за npm, достъпът до платформи за код, облачните ключове и тайните в CI/CD системите на засегнатите хостове трябва да бъдат анулирани и подменени. Организациите могат да намалят бъдещия риск чрез изискване на многофакторно удостоверяване (MFA) за профилите за публикуване, използване на краткотрайни автоматизирани данни и разделяне на правата за компилация от тези за пускане в експлоатация.