Как стать автором
Обновить

Комментарии 42

НЛО прилетело и опубликовало эту надпись здесь
Где заразится информационной безопасностью?
НЛО прилетело и опубликовало эту надпись здесь

Специалисты считают, что такого рода атаки направлены в первую очередь на экспертов в области информационной безопасности.

А кто может подсказать, навык скачивания с github непонятно чего и его запуск на компе, за безопасностью которого ты отвечаешь - это обязательно требование к "эксперту в области информационной безопасности"?

Это явно не к экспертам, а нацелены на script-kiddies, которые запускают всё подряд.

Увы мы все сейчас в таком дурацком положении. Библиотечки часто пользуют тонну сторонних библиотек и "быстренько посмотреть" не подсунут ли чего веселого - представляется мало возможным.

Хотя бы есть автоматический сканнер по известным уязвимостям в пакетах проекта (фронтенд). Жаль он не различает пакеты, которые идут на прод и пакеты, которые отвечают за разработку...

Меня всегда радовали заявления программистов на GO - на гитхабе для любого кейса найдется модуль а так же JSеры тащущие в проект пакеты для тривиальных операций - вроде odd и even.

В раст своя помоечка с библиотеками назревает.

Вообще инциденты за последние 2 года недвусмысленно намекают, что пора делать репозитории с валидацией библиотек.

Автор Node даже новую штуку сделал Deno в которой как раз упор на безопасность. Но как-то пока оно вроде не сильно популярно. Там просто даются права на всё, чтобы систему не сломало.

А тут вообще нужно валидировать весь код. Весь вопрос кто их будет валидировать. Автоматическая валидация не даёт 100% гарантии. А для ручной нужны люди.

Я и говорю про ручную. Deno эту проблему со своей печочницей не решает - ее просто будут отключать. А библиотеки опять будут раскиданы хз где.

Проблема, на мой взгляд не решаема. Каждую библиотеку вручную не проверишь. Просто нет рук.

НЛО прилетело и опубликовало эту надпись здесь

И как эти сервисы определяют ok или нет? Автоматически?

известные библиотеки тянуть или доверенных авторов. Институт репутации здесь важен как нигде.

Как бы иной раз это не спасает.

НЛО прилетело и опубликовало эту надпись здесь

Вы консолидируете от них, они - ещё от кого-то. Так кто в итоге то проверяет? Скрипт?

НЛО прилетело и опубликовало эту надпись здесь

Скрипт не сможет найти все уязвимости. Так что толку от такой проверки не особо много.

На любую валидацию найдётся свой отбитый меинтейнер node-ipc.

Разве что поднимать репо локально и самому проверять каждую библиотеку перед добавлением\обновлением.

Ну так я и говорю про ПОВЕРСИОННУЮ валидацию. Чтобы в случае если майнтейнеру какой либо библиотеки отбило мозги(или как вариант силой заставили) - это не просочилось в хранилище отвалидированных артифактов.

Так ведь и сейчас никто не мешает явно зафиксировать версию зависимости в проекте и обновлять её только после всех проверок, а не сидеть на :latest в ожидании сюрпризов.

В Go так вообще можно импортировать пакет по версии из конкретного коммита даже, а не по тэгу/релизу.

Другой вопрос, что, скорее всего, все эти «пакеты» по факту мало проверены.

Поискал что ему за это было. И ...ничего не нашел. Т.е. получается он всё сделал в рамках закона. Сами виноваты что скачали.

Т.е. распространять вредоносный таким образом - нормально и законно.

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

Да да, сейчас придут адепты NPM и будут доказывать, что в 2021 это прям Ъ и только так и нужно, но...

И что в нпм и что в мавене одна и таже беда. Вернее в нас пользователях. Когда кучу внешних порой больших библиотек тащат для тривиальных операций.(строки массивы и тд.)

Знаешь, я осознал всю глубину и масштабность этой проблемы после новости с пакетом в NPM, где чел добавил код, печатающий что-то на тему СВО, в либу, которая используется не в одной тысяче проектов. Причем ЕМНИП там проекты были не уровня наколеночных поделок, а глобальные.

Я тогда ужаснулся, если честно: все эти разработки используют по сути непроверенный код из помойки, где любой дурак может запихать туда что угодно.

Но, судя по поведению людей вокруг и комментариям на форумах — «это норма», «щас так принято, облака-бла-бла» и так далее.

Я ее осознал в 2014 когда пришлось плотно поработать с нодой, и орать с кода многих npm пакетов. А еще с кода коллег которые для прохода по массиву, перебору полей объекта, работы со строками, проверки четности/нечетности пользовали не то что УЖЕ есть в ноде, а россыпь внешних библиотек. И такой же ад творился в опубликованных npm, когда уже тогда очень много пакетов тянули за собой спагетти из не всегда нужных пакетов ради пары тройки тривиальных функций.

У меня всегда было понимание, что универсальная библиотека для разных нужд должна быть более менее компактная и с минимумом зависимостей.

Тогда это правда было все не такое распухшее, и мы таки валидировали то, что добавляли в проект. Но понимание что там может лежать что угодно, видя КТО и КАК это пишет - было уже тогда.

Казалось бы что Мавен с фиксацией всего навсегда давно придуман и используется. Зачем делать что-то новое?

Популярная массово используемая библиотека + хотя бы пара месяцев с момента релиза дают достаточную для любого разумного использования гарантию что там сознательно треш какой-то не внесен. Для срочных фиксов безопасности хотя бы наискосок дифф просмотреть придется. Он обычно небольшой.

Так всегда можно поставить таймер на срабатывания. Прошло пару месяцев и тут оно взрывается и начинает гадить. Так что "пару месяцев" тоже не вариант.

Вероятность что такое кто-то найдёт и поднимет шум в популярном пакете за пару месяцев стремится к 100%. Вероятность rce допущенного по глупости выше.

Если это НАМЕРЕННЫЙ зловред, то логично не запускать деструктивную функцию как можно больше. А специально искать вряд ли кто будет. Так что вероятность что кто-то найдет зловред до часа X стремится скорее к 0, чем к 100%

Вы сильно недооцениваете человеческое любопытство и количество глаз. На практике оно прям совсем невероятно. Вы же берете на себя риск бага в библиотеке? Вот и этот возьмете. Он точно меньше.

НЛО прилетело и опубликовало эту надпись здесь

надеются друг на друга

О, это классика :) «Вот я нашел косяк... Но чет лень, его и без меня пофиксят, пофиг!» Причем не только в программировании.

Экстраполируйте количество таких уязвимостей на количество массово используемого кода. В общем выходит довольно надежно. Я бы сказал что надежнее чем средний энтерпрайз код и средняя инфраструктура.

В мире нет ничего абсолютного. Есть управление рисками. Я не могу представить себе проект для которого использование только популярных Мавен библиотек с отставанием 2 месяца несло бы повышение риска появления уязвимостей в проекте. Для чего-то супер критичного отставание можно увеличивать до года. И ставить на них только отревьюенные обновления безопасности. Их довольно мало на таких сроках. Объем работы терпимый.

Риск бага всё-таки гораздо меньше чем зловред. Потому что делаются хоть какие-то проверки правильности работы (даже если вообще тесты не пишутся). Тот же node-ipc всё-таки нанес вред несмотря на "множество глаз".

Багов вы я думаю много знаете. В том числе долго необнаруживаемых. А сколько случаев сознательного внедрения делающего что-то не то кода в популярный опенсорс вы знаете? Таких чтобы этот код не был обнаружен хотя бы за месяц. Второй месяц оставим запасом. Я ни одного не знаю, но допускаю что я что-то упустил.

Пока вроде такого не было. Однако это не значит что такого не может быть. Тем более что автор node-ipc, как я понял, никакого наказания за намеренную порчу не понес.

Я чуть выше писал про вероятности и управление рисками.

Вы уже взяли на себя риск наличия критического бага в любой используемой вами библиотеке. Такие баги бывают и известны в природе. В том числе в старых проверенных библиотеках.

Вы так же в дополнение берете на себя риск сознательного вредительства. Случаи которого в дикой природе еще не разу не остались незаметными дольше чем предложенный мной карантинный период.

Почему вы второй риск считаете выше первого я так и не понял. Какие способы вы предлагаете для его минимизации я тоже не понял. Система оценки рисков без каких-то хотя бы относительно достоверных исходных данных и действий по уменьшению этих рисков исходя из этих данных не работает.

 Какие способы вы предлагаете для его минимизации я тоже не понял. 

В том то и дело что никаких. Потому что на мой взгляд нет никакой 100% гарантии. При таком обилии библиотек ручная проверка просто невозможна, а автоматическая не сможет всё найти.

Т.е. всё сводится к банальному - повезет/не повезет.

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

Т.е. пока эиим пользуются не так много народу, то оно работает. Станет правилом - перестанет работать.

Почему вы опять говорите про гарантии? Вы уже доказали весь свой код?

Почему вы говорите про какое-то везение? Есть обычное управление рисками. Никакого везения не существует. Почему вы отказываетесь использовать стандартную и работающую практику?

Почему вы опять рассматриваете гипотетическую и никогда не встречавшуюся ситуацию как реальную? Почему вероятность этой ситуации вы принимаете выше эпсилон?

Я не понимаю.

Почему вы говорите про какое-то везение?

<везение> = 1 - <риск>

Почему вы опять рассматриваете гипотетическую и никогда не встречавшуюся ситуацию как реальную?

Потому что любая ситуация гипотетическая пока она не случилась

 Вы уже доказали весь свой код?

Кому мне свой код доказывать?

Судя по описанию, BlueKeep до конца запустит только очень любознательный человек.

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Другие новости

Истории