1.1, Аноним (1), 12:24, 14/10/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Осталось узнать как техникой перебора узнать какие пакеты есть в приватном репозитории.
| |
1.2, Аноним (2), 12:26, 14/10/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> сервер возвращает ошибку с кодом "404"
Автор, какой сервер? Этих npm-серверов...
| |
1.3, Аноним (3), 12:28, 14/10/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
>Проблема вызвана разным временем реакции при запросе существующего и несуществующего пакета сторонним пользователем
Сразу подумал, как прочитал заголовок.
| |
|
2.11, Аноним (11), 13:40, 14/10/2022 [^] [^^] [^^^] [ответить]
| +/– |
Задержка - это ещё ладно. Главное - в другом:
> пакетный менеджер npm посчитает более приоритетным публичный репозиторий и загрузит подготовленный атакующим пакет.
О_о... Привет всяким карго!
> GitHub был уведомлен о проблеме в марте, но отказался добавлять защиту от атаки.
Отказался закрыть дырищщу?! Это кто же заказал её?
| |
|
3.24, Адмирал Майкл Роджерс (?), 16:40, 14/10/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Это кто же заказал её?
Насколько я могу судить на основании своего прошлого опыта, информация такого рода, как правило, не разглашается.
| |
3.28, Бывалый смузихлёб (?), 17:29, 14/10/2022 [^] [^^] [^^^] [ответить]
| –2 +/– |
Если какой-то балда додумался ссылаться к собственным пакетам просто по именам, то очевидно что система будет по возможности лезть в сеть и тянуть последнюю актуальную версию где бы та ни находилась если в правилах к пакету указано "тянуть свежайшую версию"
Для каких-то сильно внутренних пакетов есть много других вариантов - вплоть до просто прямой ссылки на пакет
Это не столько баг, сколько забивание гвоздей монитором с последующим невероятным удивлением что ему пришёл конец
| |
|
4.29, Аноним (11), 17:32, 14/10/2022 [^] [^^] [^^^] [ответить]
| +2 +/– |
> очевидно что система будет по возможности лезть в сеть
Для какой балды это очевидно?
| |
|
5.48, Бывалый смузихлёб (?), 08:18, 15/10/2022 [^] [^^] [^^^] [ответить]
| +/– |
Итак, есть система, заточенная на работу с глобальным репозиторием в первую очередь
Есть «просто пакет», у него есть просто название и версия
Где, по возможности, подобная система будет искать «просто пакет» с просто версией, тем более что названия внутренних и внешних пакетов запросто могут пересекаться ?
Если нужны какие-то исключительно локальные пакеты, то там нередко идёт прямая ссылка на пакет( будь то гит например или даже локально, на каталог пакета ) во избежание множества чудес и улучшения переносимости проекта( если какие-то мелкие пакеты были допилены исключительно под конкретный проект, то их нередко и в рамках проекта держат, из проекта же они и ставятся по ссылке )
| |
|
6.51, Аноним (11), 05:32, 18/10/2022 [^] [^^] [^^^] [ответить]
| +/– |
А потом удивляемся дырам из-за таких смузихлёбов. Дыры by design.
| |
|
|
|
|
|
1.5, Аноним (3), 12:39, 14/10/2022 [ответить] [﹢﹢﹢] [ · · · ]
| –3 +/– |
>GitHub был уведомлен о проблеме в марте, но отказался добавлять защиту от атаки, сославшись на архитектурные ограничения.
Вообще очень непросто защититься от такого. Это вся стандартная архитектура с базами данных сразу становится неприемлима, и возникает необходимость в специализированной дополнительной базе данных на основе иерархической хеш-таблицы с 4 операциями: запросить таблицу по ключу, безопасно проверить наличие значения в таблице по ключу, удалить значение в таблице, удалить таблицу по ключу. Получается что-то вроде реестра Windows.
| |
|
2.6, Аноним (3), 12:42, 14/10/2022 [^] [^^] [^^^] [ответить]
| +/– |
>Вообще очень непросто защититься от такого.
А вообще - просто. Нужно просто на сервере измерять время операций и замедлять слишком быстрые. Подход универсален, совместим с любыми базами с поддержкой транзакций, легко интегрируется в любые базы путём добавления одного поля метаданных с верхней границей времени.
| |
|
|
|
5.41, Аноним (3), 20:04, 14/10/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
Thread.Sleep(4); // chosen by fair dice roll, guaranteed to be random
тогда
| |
|
|
|
2.12, Аноним (11), 13:43, 14/10/2022 [^] [^^] [^^^] [ответить]
| +1 +/– |
Очень просто: поменять приоритет публичных и локальных репов.
| |
|
3.40, Аноним (3), 20:02, 14/10/2022 [^] [^^] [^^^] [ответить]
| +/– |
Проблема в том, что само название пакета и его существование может быть коммерческой тайной.
| |
|
2.50, Аноним (50), 10:43, 15/10/2022 [^] [^^] [^^^] [ответить]
| +/– |
>Вообще очень непросто защититься от такого
Конечно, это очень непросто проверить наличие у юзера прав доступа до поиска а не после.
| |
|
1.14, Аноним (14), 14:16, 14/10/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Надо просто взять все популярные имена зависимостей и разместить, да и все, зачем все выяснять? :) Раз оно такое тупое, что вытянет самое новое откуда угодно.
| |
1.27, Аноним (27), 16:57, 14/10/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Но ведь сначала должны проверяться права доступа. Как тогда доходит до проверки наличия или отсутствия файлов? 🤔
| |
1.33, AKTEON (?), 18:11, 14/10/2022 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
А может быть просто не надо тянуть свежие версии из публичных репозиториев без аудита ??
| |
1.38, Igraine (ok), 19:27, 14/10/2022 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
В npm можно свой user-scope или organization-scope создать тогда никто не сможет загрузить пакеты с вашим именем.
Или просто загрузить пакеты с тем же именем
| |
|