Компания GitHub раскрыла информацию о двух инцидентах в инфраструктуре репозитория пакетов NPM. 2 ноября сторонние исследователи безопасности (Kajetan Grzybowski и Maciej Piechota) в рамках программы Bug Bounty сообщили о наличии в репозитории NPM уязвимости, позволяющей опубликовать новую версию любого пакета, используя для этого неавторизированную учётную запись. Проблема была устранена через 6 часов после появления информации об уязвимости...Подробнее: https://www.opennet.ru/opennews/art.shtml?num=56167
> уязвимости, позволяющей опубликовать новую версию любого пакетаСнова, говорите? Нет, такого ещё не было. Никогда ещё $@#&%© не был таким полным.
>Никогда ещё $@#&%© не был таким полным.О чём ты? Он всегда таким был.
А по моему нет, он заметно пополнел. Любая версия любого пакета.
(Хакер и солонка)^(90% прода на этой хрени)В JS просто последние годы начали крутится привлекательные бабки - от него так просто с учётом всего стека уже не отказаться, так что такие уязвимости будут всплывать регулярно. Да, и такие полные. Смиритесь. Даже в хрустике - дело-то в самом подходе к формированию environment.
Что-то NPM часто светиться в новостях начал, никогда такого не было и вот опять!
Нашли дыру в NPM: никогда такого не было и вот опять! ужас! кошмар! веб-макаки!Нашли дыру в ядре Linux: это другое! смотрите, как здорово, ищут, исправляют!
Не веб-макаки, а копирасты.
Уязвимости есть много где, почти везде в программах, IT состоит из дыр, но NPM - зачастило.
Сравни частоту новостей про то и то. И это я ещё не предлагаю сравнить нужность того и другого.
Но вообще это насколько я понимаю это дыра в github, который сделал сервис автопубликации в npm из git
Искатели уязвимостей внезапно обнаружили в уязвимостях NPM.
> GitHub утверждает, что следов совершения атак с использованием данной уязвимости с сентября 2020 года не зафиксировано.
Вынепонимаетеэтодругое!
Проблема не столько в инфраструктуре, сколько в самой концепции NPM: "мы за вас будем и управлять всей структурой пакетов, и отгрузим вам то, что вам нужно по своему усмотрению, ни о чём не заботьтесь". Реальный профит либо в рекламе, либо в коллекции информации.На тех же принципах сделали r..st. И пытаются протащить это же в C++ modules.
То ли дело репозитории дистров линукса, вот там-то точно всё хорошо, ведь мейнтейнеры святые люди.Сама по себе концепция репозиториев - замечательно.
ЯП без дефолт менеджера - плохой язык. Модули в C++ - чудесно, текущая система с препроцессором - мрак. Но пока на них перейдут, будет уже какой-нибудь 2030.А npm - какая-то пожизненная кривая хрень, тут да.
Они может и не святые, но пока на троянском пакете в редхат-дебиан-генту никто не попался.Наверное тысчегласс смотрит только в npm!
Яп не таскающий неведомую херню со всего интернета в хомяк разработчику, а использующий установленные глобально в систему библиотеки - хороший и правильный язык, не позволяющий вот так запросто превратить всю систему в помойку потому что макаке восхотелось распоследней версии ненужного лефтпада.
Дык, мейнтейнеры редхата-дебиана-генту - конкретные люди с конкретными публично известными ФИО. Залить кто попало в редхат-дебиан-генту пакет не может.
Достаточно взломать аккуант этого ФИО
А здесь даже и аккаунт ломать не надо.
Да ладно? Ты сканы паспортов чтоль проверял? Так усы и подделать можно. А на самом деле половина из них - рептилоиды (а вторая - агенты).Но их в принципе в разы меньше, да и технология работы с репо не позволяет на коленке быстро-быстро новую версию фигак-в-продакшн, как показала история с багом в бубунте - даже если на самом деле срочно надо.
Ну и входной барьер. Имбецилы по квотам пока дальше CoC.md не проходят.
Понятно, что это только временно.
> Яп не таскающий неведомую херню со всего интернета в хомяк разработчикуnpm грузит пакеты в локальную директорию, а не /home
В репах дистров хотя бы мейнтейнеры есть.
А npm - сборище васянов, каждый из которых может быть не васян, а его сосед-школохакер.
> ЯП без дефолт менеджера - плохой язык.В корне неверная информация.
ЯП со своим велосипедом - плохой язык.
>сколько в самой концепции NPMЭто обычная концепция со времён cpan перла конца 90стых.
Надо сказать, шпан - это то, из-за чего перл и выкидывася из системы на самых ранних стадиях.
Ну да, ну да - что еще от рукожопиков ждать-то.Cpan, в отличие от гнездилища лефтпадов, прекрасно интегрировался с системными пакетными менеджерами - такая фича была предусмотрена изначально. Но, разумеется, л@п4тым оно было слишком сложно, а разработчики за них не захотели - они вообще были олдскульщики и не любили гепеле поделку.
Чё? Перл выкидывался из системы linux? Он практически с самого начала в базовой поставке, наверно, всех дистров. шпан это главная инновация перла, которую в том или ином виде сейчас повторяют все от ноды и пистона до java с хрустом.
Вы сейчас разом столько сортов г-на назвали, что я прямо таки чуть не захлебнулся.
Единственное что, java мимо.
Да. И ещё pip."Ты, главное, только не волнуйся, дурак, всё так хорошо, всё так отлично, и наука к твоим услугам, дурак, и литература, чтобы тебе было весело, дурак, и ни о чём не надо думать… А всяких там вредно влияющих хулиганов и скептиков мы с тобой, дурак, разнесём (с тобой, да не разнести!)…" (C).
>GitHub приняла решение ввести обязательную двухфакторную аутентификациюШли бы они в задницу со своими требованиями привязать телефон.
Это неплохая _дополнительная_ авторизация
Там нет никаких телефоном или TOTP или 2FA токен. Для всего этого есть опенсурсные приложения не десктоп/телефон и аппаратные токены.
Ввёл на телефоне пароль, на нём же сгенерировал TOTP токен и ввёл его в GitHub. И то и другое спёр бэкдор, идущий в комплекте. Потом телефон накрылся, и ты остался без аккаунта. Д - двухfuckторность.
> Ввёл на телефоне пароль, на нём же сгенерировал TOTPВот тут ошибка. Надо было пароль вводить на одном устройстве, а TOTP использовать на другом.
Например входить с компа, а аутентификатор устанавливать на телефон.
Если все яйца у вас лежат в одной корзине, то от двухфакторки толку мало.Хотя даже тут всё равно будет какая-никакая защита - если пароль просто отбрутфорсят или возьмут из какой-нибудь слитой базы данных, то зайти они не смогут. Собственно про это в новости и написано - про простые пароли, а не про взлом устройств разрабов.
> Потом телефон накрылся, и ты остался без аккаунта.
Про гитхаб не знаю, но почти везде можно указать способ восстановления аккаунта - по e-mail, по кодам восстановления или по злосчастному смс.
Это по-сути ещё один фактор, который тоже надо "хранить" отдельно от остальных, если подходить по-умному.
Микрософта без зондов не бывает.
Вы морды этих SJW разрабатывающих npm виделы?
Ну что ты, Петька, это рожи у них такие!
(Присмотревшись - а, нет, правда сраками пьют. Впрочем, они ими похоже еще много чего могут. Код писать, вот...)
Ну да. В паразитории с вредоносным по снова обнаружили вредоносное по. Да и пиво разряботчики скорее всего пьют теплое и srаками.
> Напомним, что в соответствии с проведённым в 2020 году исследованием, лишь 9.27% мэйнтенеров пакетов используют для защиты доступа двухфакторную аутентификацию, а в 13.37% случаев при регистрации новых учётных записей разработчики пытались повторно использовать скомпрометированные пароли, фигурирующие в известных утечках паролей.Это диагноз. Тут двухфакторная авторизация не поможет. Этим людям просто наплевать на всех, такие пакеты надо удалять, а пользователей банить. Даёшь социальный рейтинг!
- Э, слышь, админ, вот тебе конвертик, десяток борзых щенков, адресок того урода, называвшего тво. маму - женщиной с пониженной социальной ответственностью и звонок, после которого полицаи резко перестают тебя видеть, только накрути мне рейтинга до ★★★★★, а?
- Э, слышь, сисоп при суперкомпе, вот тебе по рылу р-р-р-раз, по яйцам - д-д-два, и маме с сестренкой по видеосвязи пару раз по лицу. Отстану, не пищи, только накрути мне рейтинга до ★★★★★, а?
- Э, слышь, кодерок базы, вот тебе, еще доза ультакакоина, а следущая...а следующая - не бесплатно! Оставь мне бекдорчик, рейтинг мне подкрутить до ★★★★★, а там я тебе еще ширева подгоню?
- Эй, пап, привет, я возьму твою учётку старшего зама руководителя ГБ на полчаса? Мне тут какой-то плебей рейтинг понизил по беспределу, хочу откатить ему до ★ и себе до ★★★★★.Хрень, на самом деле, твой социальный рейтинг. Наоборот, увеличивающий простор для злоупотреблений.
у людей часто так: кто-то хочет как лучше и делает лучше, но потом приходят 95% и извращают все хорошие, годные стороны себе в угоду
Осталось понять какое отношение все написанное имеет дело к сопровождению пакетов...
Непосредственное
Идея пакетного менеджера - хорошая
Реализация npm - такое себе
Пользователи npm - такие себе, средненькиеВот и получается, что нужная и полезная идея реализована небрежно, используется неряхами и общий результат - гавно
Ну, т.е. идея отличная, а вот с народом нам не повезло. Так, что ли?
Самое что ни на есть прямое.
Человек же выше писал, что в онлайне, в том числе около js-стеков сегодня крутятся некислые бабки.Введение социального рейтинга не улучшит ситуации - все равно будет уязвима *сама ранжирующая система* и её операторы. Которые люди... Которые уязвимы для социального инжиниринга и прямых воздействий, вроде подкупа и шантажа...
Не удивлюсь, что и эта, кхг-м, недоработка, была оставлена по просьбе заинтересованных лиц - к какому-нибудь Dan Kuhelmeyer просто пришло несколько человек в штатском, поговорили о погоде и попросили при ревью не заметить пару строчек за скромное вознаграждение, взяв в негласные заложники маму Dan'а.
> а пользователей банитьА оно тут же новую учётку заведёт и будет из неё любой пакет модифицировать как хочет:
> опубликовать новую версию любого пакета, используя для этого свою учётную запись, не авторизированную для выполнения подобных обновлений.
Это смешно "обязательная двухфакторная аутентификация". А где вы раньше были?Именно из-за вас её и пришлось отключить, потому что нельзя публиковать пакеты автоматически из GitHub / CI / CD.
Сами обос..лись, сами в заслугу себе ставят.
Как определить реальную необходимость и важность технологии в мире на выбранный момент, не впадая в когнитивные искажения, репрезентативно и беспристрастно?Количество уязвимостей, найденных и поправленных в единицу времени.
А если все поголовно уязвимостей создают на порядки больше чем потом находят, как с сабжем?
А NPM это что? Мне надо волноваться?
Если не в курсе - значит точно надо.
NPM --- система удобного подтягивания троян^W замечательных js-пакетов, на которой сидят почти все js-frameworks, на которых сделан современный web и которые выполняются на вашей машине через современный браузер. Так что можно [уже] не беспокоиться.
>>> С учётом загрузки модулей по цепочке зависимостей, компрометация ненадёжных учётных записей могла поразить в сумме до 52% от всех модулей в NPM.and nothing of value would be lost
серьезно, нефильтруемое репо с очень важными пакетами is-even и is-odd (с зависимостью от пакета is-number) будет дырявой помойкой по умолчанию, хоть ты стофакторную аутентификацию туда впили.
хотя есть и нужные пакеты, вот, например:
https://www.npmjs.com/package/code-of-conduct-path
Get the path to the Code of Conduct (contributor covenent) file in a local repository.
> and nothing of value would be lostso true
> Уязвимость была вызвана некорректной проверкой полномочий в коде микросервисов, обрабатывающих запросы к NPM. Сервис авторизации выполнял проверку прав доступа к пакетам на основе данных, передаваемых в запросе, но другой сервис, загружающий обновление в репозиторий, определял пакет для публикации на основе содержимого метаданных в загруженном пакетеПравая рука не знает, что делает левая. Зато микросервисы - стильно, модно, молодёжно. Можно постоянно допиливать и непрерывно-интегрировать/непрерывно-развёртывать любой микросервис независимо от остальных по принципу "кто в лес, кто по дрова".
Проблема не в микро, а в низком пороге входа и валом валят халтурщики. Которые молодые, но нужны деньги. И дальше начинается... поиск людей на развитие и рост полученных от них продуктов труда.Тут что макро, что микро - один результат - беспорядок.
А они закрыли исходники npm сервера? Раньше вроде он был доступен в репозитории https://github.com/npm/www, а сейчас открыт только npm/cli.
мильены бандерлогов в процессе дальнейшего ухудшения качества Web просмотрели очередной баг
Слава богу мне node.js не зашла, постоянные баги с ней
Короче, добавляете в проект .npmrc опцию strict=true, комитете package-lock.json и не обновляете пакеты, если нет необходимости.