URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 128669
[ Назад ]

Исходное сообщение
"Атака на NPM, позволяющая определить наличие пакетов в приватных репозиториях"

Отправлено opennews , 14-Окт-22 12:24 
В NPM выявлена недоработка, позволяющая определить существование пакетов в закрытых репозиториях. Проблема вызвана разным временем реакции при запросе существующего и несуществующего пакета сторонним пользователем, не имеющего доступа к репозиторию. При отсутствии доступа для любых пакетов в приватных репозиториях сервер возвращает ошибку с кодом "404", но в случае существования пакета с запрошенным именем ошибка выдаётся с ощутимой задержкой. Атакующий может использовать данную особенность для определения наличия пакета при подборе имён пакетов по словарям...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=57918


Содержание

Сообщения в этом обсуждении
"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 12:24 
Осталось узнать как техникой перебора узнать какие пакеты есть в приватном репозитории.

"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 12:26 
> сервер возвращает ошибку с кодом "404"

Автор, какой сервер? Этих npm-серверов...


"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 18:40 
Не знаю.

"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 15-Окт-22 01:51 
https://registry.npmjs.org/

Скопировал из первой ссылки в новости, хотя это и так было очевидно


"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 12:28 
>Проблема вызвана разным временем реакции при запросе существующего и несуществующего пакета сторонним пользователем

Сразу подумал, как прочитал заголовок.


"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 13:40 
Задержка - это ещё ладно. Главное - в другом:

> пакетный менеджер npm посчитает более приоритетным публичный репозиторий и загрузит подготовленный атакующим пакет.

О_о... Привет всяким карго!

> GitHub был уведомлен о проблеме в марте, но отказался добавлять защиту от атаки.

Отказался закрыть дырищщу?! Это кто же заказал её?


"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Адмирал Майкл Роджерс , 14-Окт-22 16:40 
> Это кто же заказал её?

Насколько я могу судить на основании своего прошлого опыта, информация такого рода, как правило, не разглашается.


"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Бывалый смузихлёб , 14-Окт-22 17:29 
Если какой-то балда додумался ссылаться к собственным пакетам просто по именам, то очевидно что система будет по возможности лезть в сеть и тянуть последнюю актуальную версию где бы та ни находилась если в правилах к пакету указано "тянуть свежайшую версию"
Для каких-то сильно внутренних пакетов есть много других вариантов - вплоть до просто прямой ссылки на пакет

Это не столько баг, сколько забивание гвоздей монитором с последующим невероятным удивлением что ему пришёл конец


"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 17:32 
> очевидно что система будет по возможности лезть в сеть

Для какой балды это очевидно?


"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Бывалый смузихлёб , 15-Окт-22 08:18 
Итак, есть система, заточенная на работу с глобальным репозиторием в первую очередь

Есть «просто пакет», у него есть просто название и версия

Где, по возможности, подобная система будет искать «просто пакет» с просто версией, тем более что названия внутренних и внешних пакетов запросто могут пересекаться ?

Если нужны какие-то исключительно локальные пакеты, то там нередко идёт прямая ссылка на пакет( будь то гит например или даже локально, на каталог пакета ) во избежание множества чудес и улучшения переносимости проекта( если какие-то мелкие пакеты были допилены исключительно под конкретный проект, то их нередко и в рамках проекта держат, из проекта же они и ставятся по ссылке )


"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 18-Окт-22 05:32 
А потом удивляемся дырам из-за таких смузихлёбов. Дыры by design.

"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 12:39 
>GitHub был уведомлен о проблеме в марте, но отказался добавлять защиту от атаки, сославшись на архитектурные ограничения.

Вообще очень непросто защититься от такого. Это вся стандартная архитектура с базами данных сразу становится неприемлима, и возникает необходимость в специализированной дополнительной базе данных на основе иерархической хеш-таблицы с 4 операциями: запросить таблицу по ключу, безопасно проверить наличие значения в таблице по ключу, удалить значение в таблице, удалить таблицу по ключу. Получается что-то вроде реестра Windows.


"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 12:42 
>Вообще очень непросто защититься от такого.

А вообще - просто. Нужно просто на сервере измерять время операций и замедлять слишком быстрые. Подход универсален, совместим с любыми базами с поддержкой транзакций, легко интегрируется в любые базы путём добавления одного поля метаданных с верхней границей времени.


"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 12:44 
Кто-нибудь, запилите фичу для популярных баз.

"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 18:29 
Thread.Sleep(Math.Random(500));
В продакшен!

"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 20:04 
Thread.Sleep(4); // chosen by fair dice roll, guaranteed to be random
тогда

"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 13:43 
Очень просто: поменять приоритет публичных и локальных репов.

"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 20:02 
Проблема в том, что само название пакета и его существование может быть коммерческой тайной.

"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 15-Окт-22 10:43 
>Вообще очень непросто защититься от такого

Конечно, это очень непросто проверить наличие у юзера прав доступа до поиска а не после.


"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 13:38 
Просто комитить зависимости

"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 14:16 
Надо просто взять все популярные имена зависимостей и разместить, да и все, зачем все выяснять? :) Раз оно такое тупое, что вытянет самое новое откуда угодно.

"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 14:52 
Он упадет если нет депендесни. Надо сначала проверить.

"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 16:57 
Но ведь сначала должны проверяться права доступа. Как тогда доходит до проверки наличия или отсутствия файлов? 🤔

"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 17:34 
они всё наоборот делают.

"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 18:04 
> В NPM выявлена недоработка...

Да ладно, серьёзно!?


"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено AKTEON , 14-Окт-22 18:11 
А может быть просто не надо тянуть свежие версии из публичных репозиториев без аудита ??

"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Igraine , 14-Окт-22 19:27 
В npm можно свой user-scope или organization-scope создать тогда никто не сможет загрузить пакеты с вашим именем.
Или просто загрузить пакеты с тем же именем

"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено pashev.ru , 14-Окт-22 19:38 
Какое дело честному человеку до левых репозиториев?

"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено Аноним , 14-Окт-22 21:15 
Какое дело честному человеку до репозиториев?

"Атака на NPM, позволяющая определить наличие пакетов в прива..."
Отправлено darkshvein , 14-Окт-22 23:33 
нет NPM, нет и атак