
Локальный сканер триажа только для обнаружения уязвимости Fragnesia CVE-2026-46300 в ядре Linux: оценивает работающее или установленное ядро на соответствие исправленным сборкам upstream и дистрибутивов. Без полезных нагрузок, без сети.
fragnesia-scannerЛокальная триажная проверка для Fragnesia — повышения привилегий в ядре Linux CVE-2026-46300. Укажите версию ядра, которой вы владеете, и инструмент сообщит, остаётся ли эта сборка уязвимой, а также выявит ловушки, из-за которых проверка версии даёт ложный результат. Он никогда не обращается к сети, никогда не загружает эксплойт и никогда не запускает уязвимость.
УязвимостьДеталь | Значение |
|---|---|
CVE | CVE-2026-46300, прозванная Fragnesia, вариант Dirty Frag |
Ошибка | skb_try_coalesce() отбрасывает маркер разделяемого фрагмента, поэтому входные данные ESP-in-TCP расшифровываются на месте поверх страниц page-cache (CWE-456) |
Воздействие | Локальный пользователь перезаписывает кэшированное содержимое файлов, которые ему разрешено только читать. Публичный proof of concept нацелен на кэшированную копию /usr/bin/su, поэтому следующий запуск этой программы выполняет код атакующего с правами root |
Критичность | 7.8 высокая, оценка ядерного CNA и NVD (AV:L/AC:L/PR:L/UI:N) |
Эксплуатация | Добавлена в CISA KEV 2026-10-28, федеральный срок 2026-10-31, помечена для криминалистической триажной проверки. В записи CISA указано, что её можно объединить в цепочку с уязвимостями PHP2Shell для внедрения PHP-вебшеллов и выполнения команд с правами root |
Цепочка | Dream Security сообщила о цепочке, получившей root на 25 межсетевых экранах, включая системы в сети, связанной с правительством США: PHP2Shell обеспечивает выполнение кода от имени веб-пользователя, а Fragnesia превращает это в root, даже в условиях ограничений SELinux, поскольку она никогда не запрашивает у файловой системы доступ на запись |
Fragnesia — не удалённая атака. Никто не использует её против сервера только из сети. Ей нужен код, уже выполняющийся на машине, — а это как раз то, что даёт вебшелл, украденный SSH-логин или скомпрометированное задание CI. Именно поэтому она идёт в паре с foxcornlab/php2shell-scanner: оценивайте сторону PHP там, а сторону ядра — здесь.
Исправленные версииUpstream stable (коммит с исправлением f84eca581739)Ветка | Исправлено в |
|---|---|
7.0 | 7.0.10 |
6.18 | 6.18.33 |
6.12 | 6.12.91 |
6.6 | 6.6.141 |
6.1 | 6.1.174 |
5.15 | 5.15.208 |
5.10 | 5.10.257 |
7.1 и новее | Не затронуто |
Старее 3.9 | Не затронуто, согласно записи CVE |
Любая другая ветка (например, 6.17, 6.5) | Исправленный релиз upstream не указан, перейдите на исправленную ветку |
Ubuntu (точные исправленные сборки)Релиз | Исправленная сборка |
|---|---|
26.04 | 7.0.0-22.22 |
25.10 | 6.17.0-35.35 |
24.04 | 6.8.0-124.124 |
22.04 | 5.15.0-181.191 |
20.04 стандартное ядро 5.4 | Указано как не затронутое в Ubuntu |
20.04 ядро 5.15 HWE | Только Ubuntu Pro, проверьте своё уведомление Pro |
Debian (точные исправленные сборки)Релиз | Исправленная сборка |
|---|---|
13 trixie | 6.12.90-1 (DSA-6295-1) |
12 bookworm | 6.1.174-1 (DSA-6306-1) |
11 bullseye | 5.10.257-1 (DLA-4606-1) |
RHEL и производныеПо потоку см. RHSA-2026:19521 и последующие. Этот инструмент оценивает хосты RHEL по исправлению upstream и указывает уведомление, поскольку Red Hat не публикует единый номер версии, по которому инструмент мог бы проводить оценку.
Где источники расходятсяДва расхождения, и оба соблюдены намеренно. В одной вторичной публикации об обновлении KEV от 28 октября для этой CVE указано 2.7; это оценка VMware ESX из того же обновления, перенесённая на запись о ядре. NVD, ядерный CNA и Red Hat все указывают 7.8, поэтому инструмент следует 7.8. Второе: диапазон NVD для ветки 5.10 простирается до 5.10.257, тогда как запись upstream и Debian обе указывают 5.10.257-1 как исправленную сборку. Инструмент следует upstream и Debian и оценивает 5.10.257 как исправленную.
Ловушка 1: uname скрывает номер обновленияИсправленная сборка Ubuntu для 24.04 — 6.8.0-124.124. uname -r выводит 6.8.0-124-generic. Номер загрузки после второй точки никогда не появляется в выводе uname, поэтому работающее ядро, чей ABI совпадает с исправленным ABI, невозможно определить только по uname. Этот инструмент оценивает такой случай как UNKNOWN, а не как чистый, и предлагает проверить версию установленного пакета linux-image. ABI ниже исправленного ABI однозначно VULNERABLE; ABI выше него — FIXED. Передайте --package-version с версией dpkg для однозначной оценки.
Ловушка 2: установлено — не значит загруженоИсправленный пакет ядра, который установлен, но не запущен, ничего не даёт. --local сравнивает работающее ядро с новейшим установленным пакетом ядра и прямо сообщает об этом, если они различаются, а также отмечает /var/run/reboot-required, когда обновление ядра ожидает перезагрузки.
Ловушка 3: доказательства живут в памяти, а не на дискеFragnesia записывает данные в страничный кеш ядра и никогда не обращается к диску. Перезагрузка стирает бэкдор и доказательства вместе. Если вы подозреваете, что хост был скомпрометирован, смотрите до того, как что-либо перезапускать: сравните обычное чтение файла с прямым чтением в обход кеша и сначала соберите всё необходимое. Инструменты контроля целостности файлов, которые хешируют только сохранённые файлы после перезагрузки, это пропустят.
Что проверяетсяУказанная вами версия ядра (--kernel), оцениваемая по таблице исправлений upstreamРелиз Ubuntu (--ubuntu 24.04) с ловушкой ABI, описанной выше, или --package-version для однозначной оценкиРелиз Debian (--debian bookworm) по версии установленного пакета (строки Debian uname содержат только номер ABI, поэтому сами по себе они оцениваются как UNKNOWN)Этот хост (--local): работающее ядро, os-release, новейший установленный пакет ядра, загруженные модули ESP (esp4, esp6, rxrpc), флаг необходимости перезагрузки и установлен ли PHP (оценивается отдельно, см. ниже)Наличие модуля ESP: уязвимое ядро с загруженными esp4/esp6 имеет активный достижимый путь прямо сейчасИспользование# grade one version
python3 fragnesia_scanner.py --kernel 6.6.140
# Ubuntu 24.04, uname only (ABI match -> UNKNOWN, upload hidden)
python3 fragnesia_scanner.py --ubuntu 24.04 --kernel 6.8.0-124-generic
# Ubuntu 24.04, definitive grade from the installed package
python3 fragnesia_scanner.py --ubuntu 24.04 --kernel 6.8.0-124-generic --package-version 6.8.0-124.124
# Debian bookworm from the installed package
python3 fragnesia_scanner.py --debian bookworm --package-version 6.1.174-1
# this host, everything at once
python3 fragnesia_scanner.py --local
# machine-readable output for fleets
python3 fragnesia_scanner.py --local --json
Коды выхода: 0 = уязвимостей не найдено, 2 = найдена уязвимость, 1 = ошибка сканирования. UNKNOWN не меняет код выхода, но это не означает, что всё чисто.
PHP-половина цепочкиЕсли --local находит PHP на хосте, он сообщает об этом и указывает на foxcornlab/php2shell-scanner для оценки PHP. Этот инструмент намеренно не оценивает PHP сам: тот сканер уже владеет таблицей исправлений для PHP 8.2.35, 8.3.36, 8.4.27 и 8.5.12, и когда одна таблица исправлений принадлежит одному инструменту, это лучше, чем когда два инструмента расходятся.
Меры защиты, если вы не можете обновиться сегодняЗаблокируйте модули esp4 и esp6 с помощью правила установки modprobe и выгрузите их. Это отключает IPsec на хосте, поэтому не используйте это на VPN-шлюзах. Это временная мера, а не исправление: обновите ядро и перезагрузитесь в него.
Тестыpython3 -m unittest discover -s tests -v