
Ansible-роль, которая применяет и проверяет меру смягчения для CVE-2026-31431 через modprobe.d, отключая модуль ядра algif_aead, с проверками безопасности для систем семейства Debian.
Роль Ansible для применения (и последующего удаления) смягчающей меры через modprobe.d для
CVE-2026-31431 («Copy Fail») в подсистеме AF_ALG / algif_aead ядра Linux.
Протестировано на Debian. Pull request'ы для других дистрибутивов, крайних случаев или улучшений очень приветствуются.
Роль помещает фрагмент конфигурации в /etc/modprobe.d/, который предотвращает
загрузку модуля ядра algif_aead:
install algif_aead /bin/false
Затем она проверяет, что смягчающая мера действительно эффективна, следующим образом:
/boot/config-$(uname -r) и отказывается запускаться, если AEAD встроен
в ядро (CONFIG_CRYPTO_USER_API_AEAD=y) — modprobe.d не может заблокировать
встроенный код.algif_aead в данный момент отсутствует в lsmod.AF_ALG и пытается
выполнить bind() к aead/gcm(aes). После применения смягчающей меры bind должен завершиться
ошибкой FileNotFoundError.Перезагрузка не требуется.
Для отката (например, после установки пропатченного ядра) задайте
cve_2026_31431_state=absent.
Смягчающая мера, распространяемая через oss-security — добавление
install algif_aead /bin/false в /etc/modprobe.d/ и выполнение rmmod для
модуля — не работает на CloudLinux, AlmaLinux, RHEL и любых других
дистрибутивах семейства RHEL, а также не работает на пользовательских ядрах, собранных
со встроенным AEAD.
На этих системах algif_aead встроен в ядро
(CONFIG_CRYPTO_USER_API_AEAD=y), поэтому:
modprobe.d не могут заблокировать загрузку (загружать нечего — код
уже находится в образе ядра);rmmod algif_aead не может удалить встроенный код.Команды могут выполняться успешно, но система остаётся неизменной, создавая ложное ощущение защиты. Вы можете проверить, затронуто ли ваше ядро:
zgrep '^CONFIG_CRYPTO_USER_API_AEAD=' /boot/config-$(uname -r)
=m → модуль, эта роль может применить смягчающую меру.=y → встроено, вам нужно обновление ядра + перезагрузка или подписка на
livepatch. Эта роль обнаружит это и откажется запускаться.| Имя | Значение по умолчанию | Примечания |
|---|---|---|
cve_2026_31431_state | present | Установите absent для удаления смягчающей меры |
cve_2026_31431_conf | /etc/modprobe.d/disable-algif_aead.conf | Путь к файлу блокировки |
ansible-galaxy install joltcan.cve_2026_31431
ansible-playbook -i <your-inventory> ~/.ansible/roles/joltcan.cve_2026_31431/playbook.yml
Очистка после установки пропатченного ядра:
ansible-playbook -i <your-inventory> ~/.ansible/roles/joltcan.cve_2026_31431/playbook.yml -e cve_2026_31431_state=absent
- hosts: all
become: true
roles:
- role: joltcan.cve_2026_31431
Приветствуются issue и pull request'ы — особенно:
algif_aead загружаем
(Arch, Gentoo, Alpine и т. д.).algif_aead, когда нет активных
пользователей AF_ALG.MIT — см. LICENSE.