Здравствуйте, ·, Вы писали:
·>Интересное чтиво о доверии к 3-rd party библиотекам.
Проблема не в 3-rd party библиотеках.
А в том что развесистый граф зависимостей при build собирает по дороге половину интернета.
Плюс нет механизма сертификации компонент как такового.
Но вообще-то, как учили нас классики, "количество переходит в качество". В случае с npm в отсутствие качества как такого.
Т.е. с npm мы никогда не можем гарантировать что код после build нашего сайта легитимный на 100%.
Здравствуйте, c-smile, Вы писали:
CS>·>Интересное чтиво о доверии к 3-rd party библиотекам. CS>Проблема не в 3-rd party библиотеках. CS>А в том что развесистый граф зависимостей при build собирает по дороге половину интернета. CS>Плюс нет механизма сертификации компонент как такового.
А что в общем-то можно сертифицировать в данном случае? Ну сделал Вася новый крутой компонент который всем нравится — кто этот компонент будет сертифицировать и как и кто за это будет платить?
Особенно интересно защищаться не от отдельных хакеров, а от организованных групп, да ещё и с гос-поддержкой.
Единственное, что можно предложить — специальный верифицируемый минификатор, чтобы можно было подтвердить, что myCoolComponent.min.js собран именно из того исходника какой заявлен.
CS>Но вообще-то, как учили нас классики, "количество переходит в качество". В случае с npm в отсутствие качества как такого. CS>Т.е. с npm мы никогда не можем гарантировать что код после build нашего сайта легитимный на 100%.
Мне кажется это ещё сама специфика js-на-клиенте важную роль играет. Тот же трюк, например, с mvnrepository провернуть практически невозможно — хоть он тоже выкачивает пол-интернета при сборке, но java-приложения обычно работают за фронт-енд серверами, внутри ограниченных сетей, за waf-ами и т.п., поэтому любая левая активноть будет сразу же обнаружена.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
·>Единственное, что можно предложить — специальный верифицируемый минификатор, чтобы можно было подтвердить, что myCoolComponent.min.js собран именно из того исходника какой заявлен.
Я вот не хочу с min работать. У меня минификация из ASP.NET, включается и отключается. Нужно что-то другое, какая-то централизованная служба, которой можно доверять.
Здравствуйте, c-smile, Вы писали:
CS>·>Интересное чтиво о доверии к 3-rd party библиотекам.
CS>Проблема не в 3-rd party библиотеках.
CS>А в том что развесистый граф зависимостей при build собирает по дороге половину интернета.
Так это же рай разработчика — максимальный код реюз, минимум ненужных зависимостей.
CS>Плюс нет механизма сертификации компонент как такового.
А где он есть? В Java какой-нибудь спринговый хелло-ворлд тоже потащит с сотню библиотек, например. В жаваскрипте хоть библиотеки маленькие в основном, а в жаве не скупятся всё сувать в кучу на всякий случай.
CS>Но вообще-то, как учили нас классики, "количество переходит в качество". В случае с npm в отсутствие качества как такого. CS>Т.е. с npm мы никогда не можем гарантировать что код после build нашего сайта легитимный на 100%.
Ставишь персональный реестр, ставишь туда проверенный код и всё. А как иначе? Или где что-то по-другому? В Java так же скачивается из интернета. В go так же тянется с github.
Здравствуйте, ·, Вы писали:
·>Единственное, что можно предложить — специальный верифицируемый минификатор, чтобы можно было подтвердить, что myCoolComponent.min.js собран именно из того исходника какой заявлен.
Вот тут согласен и это мне никогда не нравилось — что качаются исходники отдельно, сборка отдельно. В той же жаве (кто о чём, а жавист о жаве) библиотеки собираются достаточно быстро и я не возражал бы, если бы все зависимости по умолчанию качались бы именно в исходном виде и один раз компилировались. Заодно и авторам исходников был бы хороший стимул писать нормальные конфиги для сборки, работающие у всех, а не только у них. Ну или хотя бы на maven central заливались в исходном виде, а он бы их уже компилировал. А сейчас есть байткод (в котором может быть что угодно), есть исходники и как они друг с другом соотносятся — совершенно непонятно.
Здравствуйте, ·, Вы писали:
.>Осталось завести базу незамеченных уязвимостей и проблема решена!
Это как везде в open source — как только уязвимость найдена, сразу кем-нибудь заносится в базу, т.к. спорить тут нечего, что ресурс популярный ( говорят, что 80% трафика — это npm install )
·>А какие ещё ушли в релиз у кого-нибудь?
Как у кого дела я не проверял, но сам предпринимал меры, чтобы избавиться от уязвимых пакетов.
Дело в том, что npm, по -моему с 6-Й версии, кричит красным цветом, если нашла что-то из зависимостей в базе — проигнорировать тяжело
Здравствуйте, Doom100500, Вы писали:
D> .>Осталось завести базу незамеченных уязвимостей и проблема решена! D> Это как везде в open source — как только уязвимость найдена, сразу кем-нибудь заносится в базу, т.к. спорить тут нечего, что ресурс популярный ( говорят, что 80% трафика — это npm install )
Да причём тут опенсорс. npm насколько я знаю первый достиг этого. Что-то не так в королевстве.
D> ·>А какие ещё ушли в релиз у кого-нибудь? D> Как у кого дела я не проверял, но сам предпринимал меры, чтобы избавиться от уязвимых пакетов. D> Дело в том, что npm, по -моему с 6-Й версии, кричит красным цветом, если нашла что-то из зависимостей в базе — проигнорировать тяжело
Прям антивирус какой-то. Бессмысленный и беспощадный, главное красного побольше и орать что спас от всех бед.
Здравствуйте, ·, Вы писали:
·>Здравствуйте, Doom100500, Вы писали:
·>Прям антивирус какой-то. Бессмысленный и беспощадный, главное красного побольше и орать что спас от всех бед.
Да, антивирус, только вместо сканера — коллективный разум, Не идеал, конечно, и не избавляет от самостоятельного слежения за новостями, но тем не менее, — это хоть какое-то, но средство.
Здравствуйте, Sharov, Вы писали:
S>·>Интересное чтиво о доверии к 3-rd party библиотекам. S>·>https://hackernoon.com/im-harvesting-credit-card-numbers-and-passwords-from-your-site-here-s-how-9a8cb347c5b5 S>А как образом оне, хакеры, код патчат? И патчат ли вообще? Или там минификатор хакнутый?
В смысле? В статье вроде довольно подробно описано.
Самый простой способ — собрать минифицированный артефакт из хакнутой версии кода, а в публичный репозиторий выложить чистый исходник.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай