Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/k0n9-log/cve-2023-6931
Криминалистика памятиАнализ уязвимостейЭксплуатацияОбучение и ОбразованиеЭксплуатация Бинарных Файлов
GitHubk0n9-log/cve-2023-6931

CVE-2023-6931

CVE-2023-6931 PoC паники ядра

Репозиторий
21 год назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2023-6931

Паника ядра PoC для CVE-2023-6931

Описание

CVE-2023-6931 — это уязвимость в perf_event, которая приводит к переполнению буфера в куче, вызванному целочисленным переполнением в read_size группы.

Что такое Performance Event (perf event)?

perf_events — это среда мониторинга и анализа производительности, предоставляемая ядром Linux. Эта среда позволяет отслеживать различные данные, связанные с производительностью, генерируемые как аппаратными, так и программными компонентами.

Основные области применения

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

Компоненты perf

  • Системный вызов perf_event_open Интерфейс, который позволяет пользовательскому пространству настраивать события производительности в ядре и управлять ими. Он используется для создания, группировки, управления событиями или чтения данных из них.
  • Счётчики производительности Фактические данные, отслеживаемые процессором и ядром, такие как количество выполненных инструкций или загрузка процессора
  • Группы событий Позволяет группировать несколько событий производительности и управлять ими вместе. Событие-лидер группы выступает в качестве представителя группы, а события-сиблинги представляют остальные события внутри группы

Требования

  1. Значение /proc/sys/kernel/perf_event_paranoid должно быть 1 или меньше
  2. Количество файловых дескрипторов, которые можно открыть, должно быть не менее примерно 4100. Это можно проверить и изменить с помощью команды ulimit -n.
  3. Параметр ядра CONFIG_PERF_EVENTS должен быть установлен.

Описание

Уязвимость возникает из-за целочисленного переполнения в read_size группы. Функция perf_event_validate_size выполняет проверку read_size. Однако способ проверки read_size проверяет только read_size текущего события.

Ключевой момент в том, что при каждой проверке проверяется только текущее событие, а предыдущие — нет. Если для лидера группы установлен флаг PERF_FORMAT_GROUP, простое добавление текущего события может увеличить read_size лидера группы.

Это в конечном счёте приводит к проблеме в perf_read_group. Расчёт event->read_size основан на read_format лидера группы, умноженном на nr_siblings. Поскольку переменная read_size является 2-байтовым u16, максимальное значение, которое она может содержать, равно 0xffff.

Для эксплуатации этой уязвимости атакующий сначала создаёт событие-лидера группы со всеми возможными опциями read_format. Затем создаётся множество событий-сиблингов. Эти сиблинги устанавливают только PERF_FORMAT_TOTAL_TIME_RUNNING в read_Format, чтобы избежать проблем с проверкой в perf_event_validate_size. В результате значение nr_siblings становится чрезвычайно большим, но поскольку каждое событие-сиблинг проходит проверку по отдельности, на этом этапе проблем нет.

Когда в этом состоянии вызывается perf_read_group, read_size лидера группы продолжает увеличиваться, поскольку установлен PERF_FORMAT_GROUP. В конечном итоге это приводит к целочисленному переполнению, и kzalloc выделяет очень маленький буфер. Однако, поскольку фактическое количество событий очень велико, происходит переполнение буфера в куче, вызывающее панику ядра.

Скачать инструмент