Киберпреступники нашли способ внедрить свой вредоносный код в пакеты npm, не меняя исходный код. Они использовали S3-бакеты AWS, которые были заброшены их владельцами, и заменили в них бинарные файлы, необходимые для работы пакетов.
Атака была обнаружена специалистами компании Checkmarx, которые изучили случай компрометации пакета “bignum”. Этот пакет распространял вредоносный бинарный файл, который похищал личные данные пользователей и отправлял их в захваченный S3-бакет.
Checkmarx также нашла десятки других пакетов npm, которые подвержены такой же угрозе. Это свидетельствует о растущем интересе киберпреступников к цепочке поставок ПО, которая позволяет им быстро достичь большого числа потенциальных жертв.
S3-бакеты AWS – это облачные хранилища данных, которые могут использоваться для хостинга веб-сайтов или резервного копирования данных. Бакеты доступны по уникальным URL-адресам, но их владельцы могут забыть о хранилище или перестать им пользоваться. Тогда киберпреступник может захватить бакет и изменить его содержимое.
Пакет “bignum” использовал инструмент node-gyp для загрузки бинарного файла из S3-бакета. Когда бакет стал недоступен, злоумышленник захватил его и поместил туда свой вредоносный бинарный файл. А когда пользователи загружали или переустанавливали пакет bignum, они также загружали файл злоумышленника.
Вредоносный бинарный файл, написанный на C++ работал так же, как и оригинальный, но также собирал учётные данные пользователей и отправлял их в скомпрометированный S3-бакет.
Атака показывает, как важно следить за безопасностью своих S3-бакетов и не оставлять их без присмотра. Также рекомендуется проверять источник бинарных файлов, которые загружаются из пакетов npm. Пользователи npm могут использовать специальные инструменты, такие как npm audit или snyk, для обнаружения уязвимостей в своих зависимостях.