KodyWiremane
@KodyWiremane
Пони, Debian, LEMP, LAN, любитель

Как найти библиотеки/софт, которому можно доверять (особо: PHP, JS)?

В настоящее время меня в основном интересует PHP на бэке и JS на фронте, поэтому в первую очередь вопрос задан в рамках этих двух языковых сред.

Сегодня ряд ЯП имеет репозитории и менеджеры пакетов. Для указанных двух это Packagist/Composer и NPM. Насколько я понимаю, аудит безопасности там носит характер пост-модерации, то есть удаление вредоносных пакетов происходит на основании репортов. В принципе, логично, кто будет за так анализировать мегатонны кода.

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

1. Писать и знать весь код самому — идеал, к которому можно стремиться;
2. Читать и знать весь код самому;
3. Следовать выбору доверенных авторитетов, использующих подход не хуже №2 (мб №3, главное рекурсию разорвать) — выбирать то же, что и эксперты, и молиться;
4. Следовать выбору большинства и выбирать популярные библиотеки — смотреть на счётчик скачиваний и молиться;
5.1. Просто использовать то, что подходит, и молиться;
5.2. Просто использовать то, что подходит, и не молиться.

Сложность №1 и №2 растёт пропорционально размерам кодовой базы, №3 требует умелого выбора экспертов и чёткого определения их доверия к конкретным библиотекам, №4 полагается больше на статистику и удачу, чем на более научные методы, №№5.х — по сути, отсутствие политики.

Соответственно, для меня №3 выглядит наиболее сбалансированным, для себя примерно накидал (→GitHub…), как это может выглядеть. Экспертами в данном случае взяты такие глыбы, как производители популярных операционных систем, веб-браузеров, регуляторы интернетов и известные веб-компании.

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

Спасибо за внимание.

upd: Как справедливо заметили, может быть две шкалы доверия: в отношении нечаянных уязвимостей (мастерство) и умышленных бэкдоров (порядочность)
  • Вопрос задан
  • 442 просмотра
Пригласить эксперта
Ответы на вопрос 6
fomenkogregory
@fomenkogregory
Юниор софтварный инженер
Много звёзд на гитхабе/npm установок - надёжный пакет. Всё :) но как ты верно заметил в любом случае надо
молиться
Ответ написан
@SODINNER
С чего ты взял что твой код будет лучше и безопаснее? Обычно даже наоборот. Библиотеки - подддерживают десятки или сотни программистов, улучшают, фиксят баги и уязвимости.
Тебе надо самому тестировать свой продукт, идеальной системы без дыр, которую невозможно взломать, просто несуществует. Дело лишь в том, как много усилий и затрат надо потратить на взлом проекта и будет ли оно того стоит, чтобы за это кто-то взялся.
Ответ написан
@rPman
Надежность бывает разная - кто то говорит об отсутствии ошибок в коде, а кому то нужна надежность от бекдоров.

Только аудит кода, личный или наемный сторонний специалист/компания, могут дать хоть какие то гарантии, все остальное:
молиться


Напоминаю пример - проект криптокошелька (кажется расширения для браузера, если не ошибаюсь для EOS) был атакован одним из разработчиков используемой библиотеки, т.е. пока проект разрабатывался все было ок, как только стал использоваться - злоумышленник добавил в код воровство приватников и после того как разработчики расширения в очередной раз выпустили обновление - потырил кучу денег.
Ответ написан
Robur
@Robur
Знаю больше чем это необходимо
Про js и npm, другие области не знаю.
Это большая серьезная проблема у которой нет простого решения.

Если вам важно отсутствие бекдоров - то единственный выход - свой репозиторй в котором весь код доверенный.
Иначе даже если вы поставите модуль с 10к звезд, у него в зависимости 20-го уровня вложенности будет какой-нибудь left-pad, в который возьмут и положат бекдор.

Посмотрите на штуки типа https://snyk.io/. Я не знаю до какой степени они делают аудит модулей.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
и чьё мнение можно считать экспертным.
ни чьё, даже если Вы сами с "нуля" написали свой код от начала и до конца.

Есть много уровней защиты от "чужих": аудит исходного кода, профилирование важных участков кода и поиск утечек, сканер уязвимостей кода оффлайн и в момент исполнения, контроль среды исполнения, контроль сетевой активности.

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

Простое решение: "проксирование" запросов между вашим и чужим кодом в обоих направлениях и контроль данных регулярками.
Ответ написан
@caballero
для того и тестируется счистема чтобы выявить ошибки. а выявится в процуессе эксплуатации исправится ничего страшного. вы решаете проблему которая яйца выеденного не стоит.
Большинство ошимбокк будет в вашем коде а не коде используемых библиотек
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы