Компания Aqua Security, занимающаяся безопасностью контейнерных и облачных приложений, предупреждает, что существование приватных пакетов npm может быть раскрыто путем выполнения атак по времени (timing attack). Обнаружив существование частного пакета, злоумышленник может организовать атаку на цепочку поставок: создать общедоступные пакеты, которые будут выдавать себя за легитимные и приватные, и обманом заставить пользователей загрузить их.
Новая атака, предложенная специалистами, использует API-интерфейс реестра npm и получила имя Scoped Confusion. Она основывается на анализе временных промежутков, необходимых API npm (registry.npmjs.org) для возврата сообщения об ошибке 404 при запросе приватного пакета. Время получения ответов измеряется и сопоставляется с временем получения ответов для действительно несуществующих пакетов.
«В среднем требуется меньше времени, чтобы получить ответ для приватного пакета, которого не существует, по сравнению с приватным пакетом, который существует», — объясняют эксперты.
Идея заключается в том, чтобы обнаружить и идентифицировать пакеты, используемые внутри компаний. Злоумышленники могут использовать эту информацию для создания общедоступных и вредоносных версий тех же пакетов, чтобы попытаться осуществить цепочку поставок. В сущности, это может дать атакующим преимущество при организации атак типа dependency confusion («путаница зависимостей»).
Эксперты Aqua Security пишут, что сообщили об ошибке разработчикам GitHub 8 марта 2022 года. К сожалению, в компании ответили, что проблему, связанную с атаками по времени, невозможно исправить из-за неких архитектурных ограничений.