
Инструмент исследования уязвимостей ядра Linux с учётом происхождения данных, использованный при расследовании CVE-2026-53075
Исследовательский инструмент · Первичный импорт: 3 апреля 2026 г. · Редакция документации v2: 11 июля 2026 г.
Внешний сигнал: от распределения внимания к триажу с учётом происхождения
Используйте воспроизводимые наблюдения для направления внимания модели, затем используйте происхождение репозитория для организации очередей проверки — но никогда для доказательства.
Происхождение проекта — Kernel Codex Harness v1 · Распределение внимания → Kernel Codex Harness v2 · Триаж с учётом происхождения
Статус проекта. Этот репозиторий представляет собой исследовательский харнес с поддержкой LLM, который развивает workflow распределения внимания из v1 до триажа с учётом происхождения для реального исследования уязвимостей ядра Linux. Эта версия использовалась для обнаружения уязвимости, опубликованной как CVE-2026-53075. Это не автоматический детектор уязвимостей, не оценщик новизны, не валидатор эксплойтов и не инструмент гарантии безопасности ядра; окончательная проверка и отчётность выполняются человеком.
Аннотация — Если позволить LLM напрямую исследовать такую большую кодовую базу, как ядро Linux, контекст распыляется, а наличие опасных API легко спутать с реальной эксплуатируемостью. Kernel Codex Harness v2 определяет эту проблему как обработку двухэтапного внешнего сигнала. До вызова модели весовые коэффициенты путей, лексические совпадения и кэшированное пересечение с syzbot ранжируют файлы-кандидаты для распределения внимания. После ответа модели Git-ветка, HEAD, состояние dirty и извлечённые из ответа CVE, commit и известные маркеры объединяются для классификации сильных находок в корзины проверки с учётом происхождения. Этот харнес использовался в реальном исследовании ядра Linux и обнаружил дефект проверки прав доступа к целевому сетевому пространству имён PPP, который был опубликован как CVE-2026-53075. Триаж — это эвристика для упорядочивания очереди исследования; в частности, new_candidate означает лишь то, что не было обнаружено известных подсказок или проблем с происхождением, а не доказательство новизны. Все находки требуют повторной проверки человеком на достижимость из userspace, нарушение инвариантов и конкретное воздействие.
Ключевые термины — ядро Linux, исследование уязвимостей, внешний сигнал, происхождение, эвристический триаж, оркестрация LLM, syzbot, Codex.
При проверке безопасности ядра существует два различных типа неопределённости.
Центральной проблемой v1 была первая — распределение внимания. v2 сохраняет этот принцип и расширяет его до триажа с учётом происхождения для второй проблемы. Обе версии использовались в реальных исследованиях: исследование с поддержкой v1 привело к CVE-2026-31720, а исследование с поддержкой v2 — к CVE-2026-53075.
Наблюдения вне модели сужают область исследования, а после ответа модели добавляется проверяемое происхождение репозитория. Ни один из сигналов на любом этапе не доказывает уязвимость или новизну.
Внешний сигнал до вывода — это не суждение LLM, а наблюдения, вычисляемые до запуска модели.
При использовании одного и того же дерева исходников, профиля и кэшированного JSON syzbot ранжирование кандидатов можно пересчитать. Эта оценка — не вероятность и не эксплуатируемость, а относительный порядок того, что смотреть первым.
Пост-выводный этап объединяет сильный вердикт модели со следующей информацией.
В этом документе пост-выводный внешний сигнал относится только к происхождению, собранному независимо от модели: Git-репозиторий/состояние, ветка, HEAD, состояние dirty, локальная родословная commit. CVE, commit и известные маркеры — это ссылки, полученные из модели, извлечённые из ответа модели, а не внешний сигнал или авторитетный факт. Триаж объединяет оба типа входных данных, но фиксирует их источники раздельно.
Сильные находки операционно распределяются по следующим корзинам проверки.
| Корзина | Значение |
|---|---|
new_candidate | Кандидат с подтверждённым происхождением и без обнаруженных dirty/известных блокирующих сигналов |
known_issue | Кандидат с неотрицаемой известной ссылкой или подтверждённым commit, который ответ относит к fix/upstream и который присутствует в текущем HEAD |
dirty_tree_suspect | Кандидат, на который нельзя исключить влияние dirty репозитория или dirty цели |
provenance_unknown | Кандидат, для которого не удалось надёжно подтвердить Git-репозиторий, состояние или HEAD |
Для всех результатов классификации novelty_proven равно false. new_candidate означает не «новая уязвимость», а очередь для приоритетного продолжения исследования новизны человеком.
Аудит сначала проверяет границы, начинающиеся из userspace: syscall, ioctl, netlink, procfs, файловые системы, BPF, хуки драйверов. Только после этого оцениваются классы ошибок: UAF, OOB, refcount, race, info leak, проверка capability.
Одна единица исследования ограничена одним файлом и близкими путями caller, teardown и free. Ручные follow-up, предлагаемые моделью, ограничены максимум двумя, чтобы сохранять проверяемые короткие пути вместо широкого исследования.
Сильная находка должна как минимум описывать следующее.
Парсер нормализует вердикт и следующую цель, но не доказывает автоматически полноту этих доказательств.
Первоначальный поток основан на идеях пофайлового анализа, ограниченного расширения контекста и структурированных результатов, использованных в vulnhuntr от Protect AI [1]. В этом проекте они переработаны под достижимую из userspace поверхность ядра, время жизни объектов ядра, пути teardown и пересечение с syzbot. Дополнительный вклад v2 — этап триажа находок с использованием происхождения репозитория после распределения внимания.