Как черные шляпы пользуются открытостью open source ПО

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

  1. Делают то же самое, что и white hats, например занимаются анализом кода и фаззингом (fuzzing), при наличии исходных кодов это делать легче, чем бинарники. Многие OSS-проекты не занимаются этим сами (fuzzing-ом), за них это делают бигтехи, белые и черные шляпы

  2. Пользуются ситуацией, связанной с так называемыми silent patches (см. 1, 2). Это когда уязвимость исправляется, релиз выпускается, но CVE не создается и в changelog тоже не говорится про исправление уязвимостей. По второй ссылке описано как это можно детектировать с хорошей точностью с помощью LLM

  3. Непрерывный анализ коммитов и PR (по аналогии с п.2), зачастую коммит/PR появляется раньше, чем создана запись CVE и/или выпущен релиз. В описании коммита может быть как явно указано что-то типа "fix segfault" (что большой долей вероятности будет являться уязвимостью), либо чуть более завуалировано, например "add additional check for array index". В любом случае, даже простенькая LLM классифирует такой коммит как потенциальную уязвимость для последующего анализа

  4. Анализ сообщений баг-трекера (mailing list), а иногда (если можно заполучить контактные данные) и попытки связаться с автором бага вне трекера, чтобы заполучить дополнительную информацию, например, coredump

  5. От выпуска исправления до попадания этого релиза (или его бэкпорта) в рамках дистрибутива ОС проходит время, пока мейнтенеры дистрибутива интегрируют исправление. Но если какое-то другое ПО "таскает" проблемное ПО(например библиотеку) с собой (в рамках контейнера, статически линкует/как-то еще интегрирует в себя), то надо ждать пока зависимое ПО произведет обновление проблемной зависимости

  6. Злоумышленники могут втереться в доверие, стать мейнтейнерами проекта. В мире OSS, зачастую, разработчики одного проекта не имеют никакого представления о своих "коллегах" с правом на коммит в master (main). Пример с xz уже стал каноническим для этого сценария

Каких-то универсальных способов решения этих проблем нет, но вот о чем стоит задуматься: когда вы затаскиваете в свой проект библиотеку или стороннее ПО типа БД с открытым кодом:

P.S. Данная заметка призывает не отказываться от OSS в своих проектах, а тщательно анализировать свои зависимости и вкладываться в те, которые вы используете, а в случае коммерческой разработки закладывать это на ресурсы.

@svl87
03.09.2025 15:01 UTC
Первоисточник

Комментарии

@David_Osipov
04.09.2025 10:14 UTC
+1

Надеюсь, с распространением LLM, мейнтейнерам станет легче улучшать безопасность проектов своих. Тут куда до фаззинга, когда иногда не найдёшь простых юнит тестов.

@svl87
04.09.2025 10:24 UTC
0

Если мейнтенер работает ради интереса, имени, благодарностей и прочих нематериальных благ, то скорее всего, мало кому будет интересно ревьюить то что LLM предлагает бэкпортировать из апстрима и т.д. нейропомощники это скорее история про коммерческую разработку, в частности когда сопровождение какого-то OSS делаешь за зарплату. Но как известно в OSS очень много популярных проектов где мейнтейнеры не получают прямого и даже косвенного дохода с сопровождения

04.09.2025 13:07 UTC
0

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