Недавнее исследование компании JFrog обнаружило более 800 пакетов в реестре npm, которые имеют расхождения между информацией, указанной в самом пакете, с их фактическим содержимым. Часть из них использует технику Manifest Confusion, чтобы обмануть разработчиков и спрятать в пакете вредоносный код.
Вредоносная техника Manifest Confusion или же “путаница в манифестах” была впервые задокументирована в июне 2023 года, когда исследователь безопасности Дарси Кларк обнаружил, что несоответствия между манифестом и метаданными пакета могут быть использованы для атак на цепочку поставок программного обеспечения.
Проблема заключается в том, что реестр npm не проверяет, совпадает ли файл манифеста в архиве (package.json) с данными манифеста, предоставленными серверу npm в процессе публикации пакета.
В результате злоумышленник может использовать этот недостаток для подмены манифеста, содержащего скрытые зависимости, которые будут установлены во время инсталляции пакета, тем самым незаметно внедряя вредоносные зависимости в систему разработчика.
JFrog сообщает об обнаружении своими специалистами более 800 пакетов с расхождениями между манифестом в реестре npm и файлом package.json внутри архива. Несмотря на то, что многие из этих несоответствий являются результатом различий в спецификациях протоколов или вариациях в секции скриптов, 18 из них, как утверждается, были разработаны с чёткой целью злонамеренного использования.
Так, один из примечательных пакетов под названием “yatai-web-ui” предназначен для отправки HTTP-запроса на сервер с информацией об IP-адресе машины, на которую был установлен этот пакет.
Результаты исследования показывают, что данный вектор атаки ещё не использовался злоумышленниками для проведения киберопераций с подменой данных. Тем не менее, крайне важно, чтобы разработчики проявляли особую бдительность для обеспечения своей безопасности и защиты цепочки поставок.
Как сообщают исследователи JFrog, доверие к пакетам, основанное только на их внешнем виде на платформе npm, может быть рискованным. Организациям следует в обязательном порядке внедрить процедуры проверки безопасности всех пакетов, используемых их командами разработчиков, в частности, для выявления скрытых зависимостей.