Хакерам достаточно полсекунды, чтобы поставить под угрозу безопасность пользователей по всему миру.
Исследователи безопасности обнаружили атаку по времени с использованием NPM-пакетов, которая позволяет злоумышленникам публиковать вредоносные клоны частных пакетов, чтобы заставить разработчиков использовать их.
Согласно отчету Aqua Security, атака основана на небольшой разнице во времени возврата ошибки «404 Not Found» при поиске частного пакета в репозитории. Несмотря на то, что разница во времени отклика составляет всего несколько сотен миллисекунд, этого достаточно, чтобы создать клоны пакетов и провести атаку с олицетворением пакета. Для этого хакеру необходимо обманом заставить сотрудников организаций загрузить и использовать их вредоносные пакеты в программных проектах.
Если разработчики и внутренние тестировщики ПО не обнаружат компрометацию, продукты могут попасть к конечным пользователям, что приведет к компрометации цепочки поставок.
NPM-пакет включает API-интерфейс реестра, который позволяет пользователю загружать существующие пакеты, проверять их наличие и получать информацию обо всех пакетах в определенной области.
При использовании реестра для загрузки несуществующего или частного пакета, веб-сайт вернет код ошибки 404, указывающий, что пакет не может быть найден.
Ошибка 404 в ответ на запрос API
Специалисты Aqua Security использовали этот API и сравнили время отклика ошибок 404 с проверкой API на наличие несуществующих пакетов. Они обнаружили разницу во времени, необходимую npm-пакету для ответа на запрос, что позволяет им определить, является ли пакет частным или несуществующим.
В частности, среднее время отклика при наличии частного пакета составляет 648 миллисекунд, а среднее время при его отсутствии сокращается до 101 миллисекунды. Исследователи предполагают, что это связано с механизмом кэширования и API-архитектурой npm, которая обеспечивает потенциал раскрытия информации.
Хакер может провести «слепую» атаку по словарю или найти шаблоны и комбинации имен в общедоступных пакетах целевой организации, чтобы получить возможные имена частных пакетов.
Кроме того, данные содержат информацию об изменениях пакетов, поэтому злоумышленники могут использовать ее для определения того, какие общедоступные пакеты позже могли стать частными. В этом случае компрометация с помощью клонированного пакета будет незаметной, поскольку старая копия пакета, который раньше был общедоступным, может по-прежнему сохранять достаточную функциональность.
Aqua Security сообщила об ошибке GitHub в марте 2022 года, но представители платформы ответили, что она не будет исправлена из-за ограничений архитектуры.
Исследователи говорят, что организации могут принимать превентивные меры, регулярно выполняя поиск подозрительных пакетов, которые имитируют их частные пакеты с повторяющимися или похожими именами.
Кроме того, компании могут создавать общедоступные пакеты, которые подменяют их частные пакеты в качестве заполнителей, поскольку npm не позволяет загружать пакеты с одинаковыми именами в общедоступные репозитории.
Никаких овечек — только отборные научные факты