SlideShare a Scribd company logo
CVEHOUND
Ефремов Денис
efremov@linux.com
2
Инструменты определения
уязвимых версий ПО
Анализ зависимостей проекта, в большинстве случаев
выполняется путем привязки к идентификатору версии
уязвимой библиотеки.
• OWASP Dependency Check
• Github’s Dependabot
• Snyk
• Requires.io
• Approof
• …
3
Ядро Linux. В чем сложность
• Количество CVE
• 1838 согласно linuxkernelcves.com (включая vendor specific)
• 738 в базе БДУ ФСТЭК с 2014 года (не только CVE)
• Альтернативные идентификаторы (DWF, UVI, CID, BDU, CNNVD)
• Базы неполны и неточны
• Меньшов Виталий «Обнаружение ошибок в NVD», «Баги, которые от нас
скрывают»
• Множество архитектур, тысячи CONFIG_* опций сборки
• 17423 CONFIG_ опций в ядре 5.13
• Git история не всегда предоставляется
• Все равно нужна разметка CVE-коммит
• Могут быть ошибки при бэкпортировании и revert коммиты
• Стабильные ядра (LTS, XLTS) и ядра вендоров
4
Стабильные версии
• Релиз нового ядра ~каждые 8 недель
• Стабильное ядро
• Последнее официально выпущенное
• На текущий момент 5.13 (5.14 в разработке)
• На него бэкпортируются все исправления с ветки разработки 5.14
• Следующим стабильным станет 5.14, как только будет начата разработка 5.15
• Ядра с длительным сроком поддержки (LTS 2 years, XLTS 6 years)
• На текущий момент 5.10, 5.4, 4.19, 4.14, 4.9, 4.4
• Минорные версии стабильного и LTS ядер релизятся ~ раз 1-2 недели
• Чем старше ядро, тем меньше на него бэкпортируется исправлений
и тем меньше оно тестируется
• Бэкпорт подразумевает что надо
• Правильно определить коммит, где была внесена ошибка
• Корректно портировать исправление на все ядра
5
Дистрибутивы, производители
устройств
• RedHat, Canonical, Oracle (uek4), OpenSUSE, …
• Имеют собственные стабильные версии ядер
• 4.18 (RHEL 8), 3.10 (RHEL 7), 4.1 (UEK4), 4.15 (Bionic), 5.3 (SLES15SP3)
• Бэкпортируют на них не только исправления, но и драйвера
• Имеют собственные драйвера
• Civil Infrastructure Platform
• 4.4, 4.19 Super-Long-Term-Support (SLTS 10 years)
• Samsung, Huawei, Sony, LG, OnePlus, …
• Android Common Kernels (стабильные + android патчи)
• У вендоров свои драйвера устройств, security драйверы,…
• Некоторые не изменяют версию ядра при выпуске обновлений
6
CVEhound to the rescue
• Открыт https://github.com/evdenis/cvehound
• Не полагается на версию ядра
• Не полагается на git log
• Не требует сборки ядра
• Детекты исключительно по коду, статически
• В диапазоне от патча с ошибкой до патча с её исправлением
• Может определить неполные бекпорты
• Может определить пропущенные бекпорты
• Фильтры по
• Конфигурации сборки ядра (.config)
• Подсистемам
• CWE, наличию эксплоитов, …
• На текущий момент описано 212 CVE (с декабря 2020)
7
Примеры правил детектов CVE
(шаблоны coccinelle)
CVE-2021-27363
@err exists@
identifier priv;
@@
show_transport_handle(...)
{
... when != capable(CAP_SYS_ADMIN))
return
(sysfs_emit|sprintf)(...,
iscsi_handle(priv->iscsi_transport));
}
CVE-2021-38166
@err exists@
identifier keys, values, key_size, value_size,
bucket_size;
@@
__htab_map_lookup_and_delete_batch(...) {
...
keys=kvmalloc(key_size*bucket_size, ...);
values=kvmalloc(value_size*bucket_size, ...);
...
}
8
Примеры правил детектов CVE
(шаблоны coccinelle)
CVE-2021-27363
@err exists@
identifier priv;
@@
show_transport_handle(...)
{
... when != capable(CAP_SYS_ADMIN))
return
(sysfs_emit|sprintf)(...,
iscsi_handle(priv->iscsi_transport));
}
CVE-2021-38166
@err exists@
identifier keys, values, key_size, value_size,
bucket_size;
@@
__htab_map_lookup_and_delete_batch(...) {
...
keys=kvmalloc(key_size*bucket_size, ...);
values=kvmalloc(value_size*bucket_size, ...);
...
}
9
Примеры правил детектов CVE
(шаблоны coccinelle)
CVE-2021-27363
@err exists@
identifier priv;
@@
show_transport_handle(...)
{
... when != capable(CAP_SYS_ADMIN))
return
(sysfs_emit|sprintf)(...,
iscsi_handle(priv->iscsi_transport));
}
CVE-2021-38166
@err exists@
identifier keys, values, key_size, value_size,
bucket_size;
@@
__htab_map_lookup_and_delete_batch(...) {
...
keys=kvmalloc(key_size*bucket_size, ...);
values=kvmalloc(value_size*bucket_size, ...);
...
}
10
Примеры правил детектов CVE
(шаблоны coccinelle)
CVE-2021-27363
@err exists@
identifier priv;
@@
show_transport_handle(...)
{
... when != capable(CAP_SYS_ADMIN))
return
(sysfs_emit|sprintf)(...,
iscsi_handle(priv->iscsi_transport));
}
CVE-2021-38166
@err exists@
identifier keys, values, key_size, value_size,
bucket_size;
@@
__htab_map_lookup_and_delete_batch(...) {
...
keys=kvmalloc(key_size*bucket_size, ...);
values=kvmalloc(value_size*bucket_size, ...);
...
}
11
Примеры работы
HUAWEI P40 Pro+ (ELS-
AN10_02_HM)
4.14.116,
merge_kirin990_defconfig
SAMSUNG S10 (G973F)
G973FXXSBFUE6
4.14.113, exynos9820-
beyond1lte_defconfig
https://youtu.be/GfaVwm76NuE https://youtu.be/hD-slpwUevI
Последнее стабильное - 4.14.244
12
Применение
• Исходники доступны
• Сертификационные лаборатории для отчетов
• Администраторы для аудита и превентивных мер
• Разработчики для самопроверки
• Исходники недоступны
• Запрос исходников по GPL
• Из бинарника ядра вытащить версию ядра и архитектуру ядра
• Из бинарника ядра вытащить .config ядра (часто доступен)
• Проанализировать ближайшие исходники с нужной версией и
конфигурацией для таргетирования
THANKS FOR
ATTENTION

More Related Content

What's hot

Developing of native code obfuscator - Евгений Кулик
Developing of native code obfuscator - Евгений КуликDeveloping of native code obfuscator - Евгений Кулик
Developing of native code obfuscator - Евгений Кулик
HackIT Ukraine
 
Perl in da shell
Perl in da shellPerl in da shell
Perl in da shell
Anton Ovchinnikov
 
Алексей Ясинский - Опыт расследования современных кибер-атак на примере Black...
Алексей Ясинский - Опыт расследования современных кибер-атак на примере Black...Алексей Ясинский - Опыт расследования современных кибер-атак на примере Black...
Алексей Ясинский - Опыт расследования современных кибер-атак на примере Black...
HackIT Ukraine
 
Локальное окружение на Docker
Локальное окружение на DockerЛокальное окружение на Docker
Локальное окружение на Docker
Михаил Бакулин
 
Стажировка 2015. Разработка. Занятие 7. Работа с серверами
Стажировка 2015. Разработка. Занятие 7. Работа с серверамиСтажировка 2015. Разработка. Занятие 7. Работа с серверами
Стажировка 2015. Разработка. Занятие 7. Работа с серверами
7bits
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Yandex
 
Express test BSD desktop
Express test BSD desktopExpress test BSD desktop
Express test BSD desktop
Дима Ванькевич
 
2009 Inquisitor 3
2009 Inquisitor 32009 Inquisitor 3
2009 Inquisitor 3Liudmila Li
 
SECON'2016. Кириллов Александр, Continuous Integration под микроскопом
SECON'2016. Кириллов Александр, Continuous Integration под микроскопомSECON'2016. Кириллов Александр, Continuous Integration под микроскопом
SECON'2016. Кириллов Александр, Continuous Integration под микроскопом
SECON
 

What's hot (10)

Developing of native code obfuscator - Евгений Кулик
Developing of native code obfuscator - Евгений КуликDeveloping of native code obfuscator - Евгений Кулик
Developing of native code obfuscator - Евгений Кулик
 
Perl in da shell
Perl in da shellPerl in da shell
Perl in da shell
 
Алексей Ясинский - Опыт расследования современных кибер-атак на примере Black...
Алексей Ясинский - Опыт расследования современных кибер-атак на примере Black...Алексей Ясинский - Опыт расследования современных кибер-атак на примере Black...
Алексей Ясинский - Опыт расследования современных кибер-атак на примере Black...
 
Локальное окружение на Docker
Локальное окружение на DockerЛокальное окружение на Docker
Локальное окружение на Docker
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Стажировка 2015. Разработка. Занятие 7. Работа с серверами
Стажировка 2015. Разработка. Занятие 7. Работа с серверамиСтажировка 2015. Разработка. Занятие 7. Работа с серверами
Стажировка 2015. Разработка. Занятие 7. Работа с серверами
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Express test BSD desktop
Express test BSD desktopExpress test BSD desktop
Express test BSD desktop
 
2009 Inquisitor 3
2009 Inquisitor 32009 Inquisitor 3
2009 Inquisitor 3
 
SECON'2016. Кириллов Александр, Continuous Integration под микроскопом
SECON'2016. Кириллов Александр, Continuous Integration под микроскопомSECON'2016. Кириллов Александр, Continuous Integration под микроскопом
SECON'2016. Кириллов Александр, Continuous Integration под микроскопом
 

Similar to CVEhound

Docker Containers orchestrators: Kubernetes vs. Swarm
Docker Containers orchestrators: Kubernetes vs. SwarmDocker Containers orchestrators: Kubernetes vs. Swarm
Docker Containers orchestrators: Kubernetes vs. Swarm
Dmitry Lazarenko
 
Шаблоны контейнеров в Virtuozzo
Шаблоны контейнеров в VirtuozzoШаблоны контейнеров в Virtuozzo
Шаблоны контейнеров в Virtuozzo
CEE-SEC(R)
 
Практический опыт применения виртуализации для web-систем
Практический опыт применения виртуализации для web-системПрактический опыт применения виртуализации для web-систем
Практический опыт применения виртуализации для web-системAlex Chistyakov
 
Александр Чистяков - Практический опыт использования решений виртуализации в ...
Александр Чистяков - Практический опыт использования решений виртуализации в ...Александр Чистяков - Практический опыт использования решений виртуализации в ...
Александр Чистяков - Практический опыт использования решений виртуализации в ...HappyDev
 
SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101
Nadzeya Pus
 
JVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
JVM: краткий курс общей анатомии, JPoint 2016 Conference EditionJVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
JVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
Nikita Lipsky
 
OTUS Infrastructure as Code
OTUS Infrastructure as CodeOTUS Infrastructure as Code
OTUS Infrastructure as Code
Igor Kurochkin
 
Инструменты тестирования ядра Linux
Инструменты тестирования ядра LinuxИнструменты тестирования ядра Linux
Инструменты тестирования ядра Linux
Denis Efremov
 
Containers in real world презентация
Containers in real world презентацияContainers in real world презентация
Containers in real world презентация
Pavel Odintsov
 
Использование контейнеризации в среде массового хостинга
Использование контейнеризации в среде массового хостингаИспользование контейнеризации в среде массового хостинга
Использование контейнеризации в среде массового хостинга
Yandex
 
Что нового в NOVA Microhypervisor
Что нового в NOVA MicrohypervisorЧто нового в NOVA Microhypervisor
Что нового в NOVA Microhypervisor
Yandex
 
Cobbler
CobblerCobbler
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON
 
Сущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCoreСущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCore
Tatyanazaxarova
 
Dotnet
DotnetDotnet
Dotnet
MonsterXX
 
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Ontico
 
Практика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustПрактика разработки веб-серверов на Rust
Практика разработки веб-серверов на Rust
Michael Pankov
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
COMAQA.BY
 
Delivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java ApplicationsDelivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java Applications
Nikita Lipsky
 

Similar to CVEhound (20)

Docker Containers orchestrators: Kubernetes vs. Swarm
Docker Containers orchestrators: Kubernetes vs. SwarmDocker Containers orchestrators: Kubernetes vs. Swarm
Docker Containers orchestrators: Kubernetes vs. Swarm
 
Шаблоны контейнеров в Virtuozzo
Шаблоны контейнеров в VirtuozzoШаблоны контейнеров в Virtuozzo
Шаблоны контейнеров в Virtuozzo
 
Практический опыт применения виртуализации для web-систем
Практический опыт применения виртуализации для web-системПрактический опыт применения виртуализации для web-систем
Практический опыт применения виртуализации для web-систем
 
Александр Чистяков - Практический опыт использования решений виртуализации в ...
Александр Чистяков - Практический опыт использования решений виртуализации в ...Александр Чистяков - Практический опыт использования решений виртуализации в ...
Александр Чистяков - Практический опыт использования решений виртуализации в ...
 
SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101
 
JVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
JVM: краткий курс общей анатомии, JPoint 2016 Conference EditionJVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
JVM: краткий курс общей анатомии, JPoint 2016 Conference Edition
 
OTUS Infrastructure as Code
OTUS Infrastructure as CodeOTUS Infrastructure as Code
OTUS Infrastructure as Code
 
Инструменты тестирования ядра Linux
Инструменты тестирования ядра LinuxИнструменты тестирования ядра Linux
Инструменты тестирования ядра Linux
 
Containers in real world презентация
Containers in real world презентацияContainers in real world презентация
Containers in real world презентация
 
Использование контейнеризации в среде массового хостинга
Использование контейнеризации в среде массового хостингаИспользование контейнеризации в среде массового хостинга
Использование контейнеризации в среде массового хостинга
 
Что нового в NOVA Microhypervisor
Что нового в NOVA MicrohypervisorЧто нового в NOVA Microhypervisor
Что нового в NOVA Microhypervisor
 
Continuousdelivery
ContinuousdeliveryContinuousdelivery
Continuousdelivery
 
Cobbler
CobblerCobbler
Cobbler
 
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
 
Сущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCoreСущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCore
 
Dotnet
DotnetDotnet
Dotnet
 
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
 
Практика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustПрактика разработки веб-серверов на Rust
Практика разработки веб-серверов на Rust
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
 
Delivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java ApplicationsDelivering Native User Experience In Client Side Java Applications
Delivering Native User Experience In Client Side Java Applications
 

More from Denis Efremov

Formal verification of operating system kernels
Formal verification of operating system kernelsFormal verification of operating system kernels
Formal verification of operating system kernels
Denis Efremov
 
Deductive verification of unmodified Linux kernel library functions
Deductive verification of unmodified Linux kernel library functionsDeductive verification of unmodified Linux kernel library functions
Deductive verification of unmodified Linux kernel library functions
Denis Efremov
 
Health Insurance Support System (Blockchain Based)
Health Insurance Support System (Blockchain Based)Health Insurance Support System (Blockchain Based)
Health Insurance Support System (Blockchain Based)
Denis Efremov
 
Formal Verification of a Linux Security Module
Formal Verification of a Linux Security ModuleFormal Verification of a Linux Security Module
Formal Verification of a Linux Security Module
Denis Efremov
 
Practical Language for Extracting Data from Source Codes and Preparing Them f...
Practical Language for Extracting Data from Source Codes and Preparing Them f...Practical Language for Extracting Data from Source Codes and Preparing Them f...
Practical Language for Extracting Data from Source Codes and Preparing Them f...
Denis Efremov
 
Formal verification of C code
Formal verification of C codeFormal verification of C code
Formal verification of C code
Denis Efremov
 
Automation of rule construction for Approof
Automation of rule construction for ApproofAutomation of rule construction for Approof
Automation of rule construction for Approof
Denis Efremov
 
How to prove programs
How to prove programsHow to prove programs
How to prove programs
Denis Efremov
 

More from Denis Efremov (8)

Formal verification of operating system kernels
Formal verification of operating system kernelsFormal verification of operating system kernels
Formal verification of operating system kernels
 
Deductive verification of unmodified Linux kernel library functions
Deductive verification of unmodified Linux kernel library functionsDeductive verification of unmodified Linux kernel library functions
Deductive verification of unmodified Linux kernel library functions
 
Health Insurance Support System (Blockchain Based)
Health Insurance Support System (Blockchain Based)Health Insurance Support System (Blockchain Based)
Health Insurance Support System (Blockchain Based)
 
Formal Verification of a Linux Security Module
Formal Verification of a Linux Security ModuleFormal Verification of a Linux Security Module
Formal Verification of a Linux Security Module
 
Practical Language for Extracting Data from Source Codes and Preparing Them f...
Practical Language for Extracting Data from Source Codes and Preparing Them f...Practical Language for Extracting Data from Source Codes and Preparing Them f...
Practical Language for Extracting Data from Source Codes and Preparing Them f...
 
Formal verification of C code
Formal verification of C codeFormal verification of C code
Formal verification of C code
 
Automation of rule construction for Approof
Automation of rule construction for ApproofAutomation of rule construction for Approof
Automation of rule construction for Approof
 
How to prove programs
How to prove programsHow to prove programs
How to prove programs
 

CVEhound

  • 2. 2 Инструменты определения уязвимых версий ПО Анализ зависимостей проекта, в большинстве случаев выполняется путем привязки к идентификатору версии уязвимой библиотеки. • OWASP Dependency Check • Github’s Dependabot • Snyk • Requires.io • Approof • …
  • 3. 3 Ядро Linux. В чем сложность • Количество CVE • 1838 согласно linuxkernelcves.com (включая vendor specific) • 738 в базе БДУ ФСТЭК с 2014 года (не только CVE) • Альтернативные идентификаторы (DWF, UVI, CID, BDU, CNNVD) • Базы неполны и неточны • Меньшов Виталий «Обнаружение ошибок в NVD», «Баги, которые от нас скрывают» • Множество архитектур, тысячи CONFIG_* опций сборки • 17423 CONFIG_ опций в ядре 5.13 • Git история не всегда предоставляется • Все равно нужна разметка CVE-коммит • Могут быть ошибки при бэкпортировании и revert коммиты • Стабильные ядра (LTS, XLTS) и ядра вендоров
  • 4. 4 Стабильные версии • Релиз нового ядра ~каждые 8 недель • Стабильное ядро • Последнее официально выпущенное • На текущий момент 5.13 (5.14 в разработке) • На него бэкпортируются все исправления с ветки разработки 5.14 • Следующим стабильным станет 5.14, как только будет начата разработка 5.15 • Ядра с длительным сроком поддержки (LTS 2 years, XLTS 6 years) • На текущий момент 5.10, 5.4, 4.19, 4.14, 4.9, 4.4 • Минорные версии стабильного и LTS ядер релизятся ~ раз 1-2 недели • Чем старше ядро, тем меньше на него бэкпортируется исправлений и тем меньше оно тестируется • Бэкпорт подразумевает что надо • Правильно определить коммит, где была внесена ошибка • Корректно портировать исправление на все ядра
  • 5. 5 Дистрибутивы, производители устройств • RedHat, Canonical, Oracle (uek4), OpenSUSE, … • Имеют собственные стабильные версии ядер • 4.18 (RHEL 8), 3.10 (RHEL 7), 4.1 (UEK4), 4.15 (Bionic), 5.3 (SLES15SP3) • Бэкпортируют на них не только исправления, но и драйвера • Имеют собственные драйвера • Civil Infrastructure Platform • 4.4, 4.19 Super-Long-Term-Support (SLTS 10 years) • Samsung, Huawei, Sony, LG, OnePlus, … • Android Common Kernels (стабильные + android патчи) • У вендоров свои драйвера устройств, security драйверы,… • Некоторые не изменяют версию ядра при выпуске обновлений
  • 6. 6 CVEhound to the rescue • Открыт https://github.com/evdenis/cvehound • Не полагается на версию ядра • Не полагается на git log • Не требует сборки ядра • Детекты исключительно по коду, статически • В диапазоне от патча с ошибкой до патча с её исправлением • Может определить неполные бекпорты • Может определить пропущенные бекпорты • Фильтры по • Конфигурации сборки ядра (.config) • Подсистемам • CWE, наличию эксплоитов, … • На текущий момент описано 212 CVE (с декабря 2020)
  • 7. 7 Примеры правил детектов CVE (шаблоны coccinelle) CVE-2021-27363 @err exists@ identifier priv; @@ show_transport_handle(...) { ... when != capable(CAP_SYS_ADMIN)) return (sysfs_emit|sprintf)(..., iscsi_handle(priv->iscsi_transport)); } CVE-2021-38166 @err exists@ identifier keys, values, key_size, value_size, bucket_size; @@ __htab_map_lookup_and_delete_batch(...) { ... keys=kvmalloc(key_size*bucket_size, ...); values=kvmalloc(value_size*bucket_size, ...); ... }
  • 8. 8 Примеры правил детектов CVE (шаблоны coccinelle) CVE-2021-27363 @err exists@ identifier priv; @@ show_transport_handle(...) { ... when != capable(CAP_SYS_ADMIN)) return (sysfs_emit|sprintf)(..., iscsi_handle(priv->iscsi_transport)); } CVE-2021-38166 @err exists@ identifier keys, values, key_size, value_size, bucket_size; @@ __htab_map_lookup_and_delete_batch(...) { ... keys=kvmalloc(key_size*bucket_size, ...); values=kvmalloc(value_size*bucket_size, ...); ... }
  • 9. 9 Примеры правил детектов CVE (шаблоны coccinelle) CVE-2021-27363 @err exists@ identifier priv; @@ show_transport_handle(...) { ... when != capable(CAP_SYS_ADMIN)) return (sysfs_emit|sprintf)(..., iscsi_handle(priv->iscsi_transport)); } CVE-2021-38166 @err exists@ identifier keys, values, key_size, value_size, bucket_size; @@ __htab_map_lookup_and_delete_batch(...) { ... keys=kvmalloc(key_size*bucket_size, ...); values=kvmalloc(value_size*bucket_size, ...); ... }
  • 10. 10 Примеры правил детектов CVE (шаблоны coccinelle) CVE-2021-27363 @err exists@ identifier priv; @@ show_transport_handle(...) { ... when != capable(CAP_SYS_ADMIN)) return (sysfs_emit|sprintf)(..., iscsi_handle(priv->iscsi_transport)); } CVE-2021-38166 @err exists@ identifier keys, values, key_size, value_size, bucket_size; @@ __htab_map_lookup_and_delete_batch(...) { ... keys=kvmalloc(key_size*bucket_size, ...); values=kvmalloc(value_size*bucket_size, ...); ... }
  • 11. 11 Примеры работы HUAWEI P40 Pro+ (ELS- AN10_02_HM) 4.14.116, merge_kirin990_defconfig SAMSUNG S10 (G973F) G973FXXSBFUE6 4.14.113, exynos9820- beyond1lte_defconfig https://youtu.be/GfaVwm76NuE https://youtu.be/hD-slpwUevI Последнее стабильное - 4.14.244
  • 12. 12 Применение • Исходники доступны • Сертификационные лаборатории для отчетов • Администраторы для аудита и превентивных мер • Разработчики для самопроверки • Исходники недоступны • Запрос исходников по GPL • Из бинарника ядра вытащить версию ядра и архитектуру ядра • Из бинарника ядра вытащить .config ядра (часто доступен) • Проанализировать ближайшие исходники с нужной версией и конфигурацией для таргетирования