
Утилита для Linux, которая проверяет доступность `AF_ALG`/`algif_aead` и помогает оценить риск по `CVE-2026-31431`.
Диагностическая утилита для Linux, которая проверяет:
AF_ALG / algif_aead и помогает оценить риск по CVE-2026-31431 (copy-fail);xfrm-ESP Page-Cache Write + RxRPC Page-Cache Write) по компонентам esp4, esp6, rxrpc и печатает mitigation.Инструмент предназначен для defensive-проверки и не является эксплойтом.
socket + bind для AF_ALG AEAD;/proc/modules, modules.builtin, modules.builtin.modinfo;rpm/Debian changelog);AF_ALG-сокеты (/proc/*/fd, best effort);Дополнительно для Dirty Frag:
esp4, esp6, rxrpc (loaded / built-in / unknown);socket(AF_NETLINK, NETLINK_XFRM) и socket(AF_RXRPC) без изменения конфигурации системы;1.24+;/proc/*/fd лучше запускать от root.Entrypoint находится в корне проекта, сборка выполняется из корня:
go build -o itsumma-afalg-check .
./itsumma-afalg-check
При старте:
Itsumma Security Check — AF_ALG / CVE-2026-31431
Далее:
AF_ALG (socket + bind);modules.builtin;af_alg и algif_aead (loaded / built-in / unknown);CVE-2026-31431 (включая попытку определить vendor backport);AF_ALG-сокетами (если найдено);cat /proc/cmdline
echo 3 | sudo tee /proc/sys/vm/drop_caches
modprobe -n -v algif_aead
lsmod | grep '^algif_aead\b' || echo 'algif_aead not loaded'
./itsumma-afalg-check
Для built-in сценария вместо modprobe/lsmod полезно дополнительно проверить:
dmesg | grep -i 'algif_aead\|initcall_blacklist'
Команда из публичного runbook Dirty Frag (отключает загрузку esp4, esp6, rxrpc и пытается выгрузить уже загруженные модули).
Если IPSec / XFRM используется (например, через strongSwan), перед выгрузкой модулей рекомендуется выполнить flush:
sudo ip xfrm state flush
sudo ip xfrm policy flush
echo 3 | sudo tee /proc/sys/vm/drop_caches
Если esp4/esp6/rxrpc собраны как built-in (видны только в modules.builtin), modprobe blacklist и rmmod не отключат их: в этом случае требуется обновление/пересборка ядра.
Для strongSwan после установки libcharon-extra-plugins включите kernel-libipsec:
sudo sed -i 's/^\s*load\s*=\s*no/load = yes/' /etc/strongswan.d/charon/kernel-libipsec.conf
sudo systemctl restart strongswan || sudo systemctl restart strongswan-starter
lsmod | egrep '^(esp4|esp6|rxrpc)\b' || echo 'esp4/esp6/rxrpc not loaded'
sudo modprobe esp4 esp6 rxrpc || true
sudo modprobe -r esp6 rxrpc
sudo modprobe -r esp4 || true
sudo rmmod -f esp4
sudo sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp6 rxrpc 2>/dev/null; rmmod -f esp4 2>/dev/null; true"
Пост-проверка:
modprobe -n -v esp4 esp6 rxrpc
lsmod | egrep '^(esp4|esp6|rxrpc)\b' || echo 'esp4/esp6/rxrpc not loaded'
./itsumma-afalg-check
algif_aead означает attack surface, но финальный вывод зависит от версии ядра и backport-патчей дистрибутива.AF_ALG AEAD не проходит, в рамках этой проверки вектор считается недоступным.