
Ansible playbook, который автоматизирует устранение уязвимости CVE-2026-31431 (Ошибка копирования) на экземплярах OCI Linux путем установки обновленных пакетов ядра, перезагрузки и проверки исправления на нескольких дистрибутивах.
Этот плейбук устраняет уязвимость CVE-2026-31431, также известную как Copy Fail, на экземплярах Linux в OCI.
CVE-2026-31431 — это локальная проблема повышения привилегий в реализации algif_aead ядра Linux, используемой API криптографии пользовательского пространства AF_ALG. Данный плейбук применяет основной путь устранения: установить обновлённый пакет ядра от вендора и перезагрузить экземпляр, чтобы он запустил исправленное ядро.
Ссылки:
Первый плей выполняется локально в OCI Cloud Shell или на другой машине с настроенным OCI CLI. Он преобразует жёстко заданные OCID экземпляров OCI в доступные узлы Ansible, считывая каждый экземпляр, находя его основной VNIC и выбирая либо частный, либо общедоступный IP-адрес в зависимости от prefer_public_ip.
Второй плей исправляет найденные узлы Linux параллельно, с учётом настроенного лимита forks в Ansible:
uname -r.dnf или yum для kernel* и kernel-uek*.apt-get --only-upgrade для установленных пакетов ядра Linux.zypper patch --category security.После перезагрузки плейбук использует инструменты пакетов и репозиториев целевого дистрибутива для проверки устранения:
rpm, проверяет ожидающие обновления ядра с помощью dnf check-update или yum check-update, проверяет метаданные уведомлений CVE с помощью updateinfo и ищет в журнале изменений установленного пакета ядра.dpkg-query, проверяет ожидающие обновления ядра с помощью симуляции apt-get и ищет в журнале изменений установленного пакета ядра.rpm, проверяет ожидающие обновления ядра с помощью zypper list-updates, проверяет метаданные исправлений CVE с помощью zypper list-patches --cve и ищет в журнале изменений установленного пакета ядра.Жёсткие проверки прохождения/неудачи заключаются в том, что узел работает под управлением пакетного ядра после перезагрузки и что в настроенных репозиториях не осталось ожидающих обновлений пакетов ядра. Вывод уведомлений и журнала изменений, специфичных для CVE, собирается, если дистрибутив публикует эти метаданные.
В конце выполнения плей сводки на localhost сообщает:
По умолчанию выводится компактная сводка по каждому узлу. Чтобы также вывести полные необработанные данные проверки, добавьте:
-e show_detailed_cve_evidence=true
ansible-playbook -i localhost, patch_cve_2026_31431.yml \
-e oci_region=us-ashburn-1 \
-e ansible_user=opc \
-e ansible_ssh_private_key_file=/path/to/private_key \
-e prefer_public_ip=false
Используйте prefer_public_ip=true, когда Cloud Shell или ваш управляющий узел Ansible должен достигать экземпляров через общедоступные IP-адреса. Используйте prefer_public_ip=false, когда управляющий узел имеет доступ по частной сети.
Плейбук отключает строгую проверку ключей хоста SSH для динамически обнаруженных целей, чтобы его можно было запускать в неинтерактивном режиме для недавно разрешённых IP-адресов экземпляров.
Успешный запуск должен завершиться сообщением CVE-2026-31431 verification passed for all targets. Итоговая сводка выводит по одной строке на каждое поле, сгруппированные под Host: ..., включая предыдущее ядро, установленное ядро после перезагрузки, пакет работающего ядра, например kernel-uek-core-..., и CVE check: PASS. Если проверка не удалась из-за того, что обновления ядра всё ещё доступны, убедитесь, что узел может получить доступ к правильным репозиториям безопасности вендора, и запустите плейбук заново.