🐧 Принесу вам из чатика интересное...
Набросал реализацию сканера исправлений для исходников ядра на основе coccinelle https://github.com/evdenis/cvehound
Что делает: пытается обнаружить неисправленные куски кода для известных CVE.
Как работает: для каждой CVE в ядре есть шаблон coccinelle/grep с описанием ошибки в коде до исправления, либо описанием какой фикс в коде должен присутствовать. Соответственно, на исходниках запускается поиск на наличие "незапатченного" куска кода, либо проверяется отсутствие исправления.
Зачем нужно: если у вас есть лог разработки (git), то не нужно, можно и по нему проверить. Если у вас на руках только архив с исходниками, тогда проверку можно автоматизировать так. Не всегда есть лог разработки, не все версии ядер основываются на стабильных ветвях, иногда исходники выкладываются просто как архив. Пример - исходники ядер для samsung/huawei телефонов (opensource.samsung.com)
Что сейчас умеет: в первый релиз добавил шаблоны только для ~30 CVE (список https://github.com/evdenis/cvehound/tree/master/cvehound/cve). Запускается как ./cvehound --dir ~/linux, где ~/linux путь к исходникам ядра. Если добавить опцию --verbose будет показывать что сейчас проверяет и выводить файлы, в которых нашел отсутствие фикса. Опция --cve CVE-2020-27194 CVE-2020-29371 позволяет проверить наличие конкретных исправлений.
#linux #kernel #security
Post #2078
7.73K