
Ansible playbook для обнаружения и устранения CVE-2026-31431 (Copy Fail) — уязвимости локального повышения привилегий в ядре Linux
Copy Fail Detection and Remediation
Набор ролей и плейбуков Ansible для обнаружения и устранения CVE-2026-31431 (Copy Fail) — критической уязвимости локального повышения привилегий в модуле algif_aead ядра Linux.
🔗 GitHub: https://github.com/parmstro/cfDr
Название cfDr — игра слов от «Copy Fail Doctor» — ваше надёжное средство от CVE-2026-31431.
CVE-2026-31431 (CVSS 7.8) — логическая ошибка в интерфейсе сокетов AEAD ядра Linux (AF_ALG), обнаруженная в 2026 году. Уязвимость позволяет любому непривилегированному локальному пользователю повысить привилегии до root за считанные секунды.
algif_aead (криптоинтерфейс AF_ALG)Версии ядра: Linux kernel >= 4.10 (выпущено в 2017)
Затронутые дистрибутивы:
Примечание: любой дистрибутив Linux с ядром 4.10 или новее потенциально уязвим.
Эта уязвимость особенно опасна, потому что:
Как только атакующий получает любую форму локального доступа (SSH, веб-шелл, побег из контейнера и т. д.), он может:
Пока ожидаются пропатченные ядра от вендоров, доступно несколько стратегий смягчения. cfDr реализует все из них с интеллектуальными рекомендациями на основе конфигурации вашей системы.
Не все меры устранения одинаковы. Вот что вам нужно знать:
| Метод | Может ли root обойти? | Покрытие | Поддержка Enterprise Linux |
|---|---|---|---|
| Блокировка модуля | ✅ Да (через insmod) | Предотвращает загрузку через modprobe | Все версии |
| Политика SELinux | ❌ НЕТ (уровень LSM) | Только настроенные домены | Все версии (по умолчанию) |
| systemd seccomp | ❌ НЕТ (фильтр системных вызовов) | Только настроенные службы | Все версии |
| eBPF LSM | ❌ НЕТ (уровень LSM) | Системный уровень (если настроено) | RHEL 9+, Fedora 34+ |
Рекомендация cfDr по умолчанию: Флаг 3 (Блокировка модуля + SELinux)
Это обеспечивает два независимых уровня защиты:``` ┌─────────────────────────────────────────────────┐ │ Layer 1: Module Blacklist │ │ • Prevents modprobe algif_aead │ │ • Persists across reboots │ │ • CAN be bypassed by malicious root (insmod) │ ├─────────────────────────────────────────────────┤ │ Layer 2: SELinux Policy │ │ • Blocks AF_ALG socket() at syscall level │ │ • Works even if module is loaded │ │ • CANNOT be bypassed from userspace │ │ • Covers user_t, unconfined_t (majority cases) │ └─────────────────────────────────────────────────┘
Result: If either layer fails, the other still protects
### Почему одного чёрного списка модулей недостаточно
Решительный злоумышленник с root-доступом может обойти чёрный список модулей:```bash
# Module blacklist DOES NOT prevent:
insmod /lib/modules/$(uname -r)/kernel/crypto/algif_aead.ko.xz
Однако это допустимо, поскольку:
Для полной, необходной защиты вам необходимо:
Чёрный список модулей + как минимум одно из:
cfDr использует побитовые флаги для включения нескольких мер смягчения:
| Значение флага | Включённые меры смягчения | Сценарий использования |
|---|---|---|
| 1 | Только чёрный список модулей | Минимальная защита, системы без SELinux |
| 2 | Только SELinux | Среды только с SELinux |
| 3 | Чёрный список модулей + SELinux | РЕКОМЕНДУЕМЫЙ вариант по умолчанию |
| 5 | Чёрный список модулей + seccomp | Без SELinux с усилением служб |
| 7 | Чёрный список модулей + SELinux + seccomp | Расширенная защита |
| 15 | Все меры смягчения | Максимальная защита (только RHEL 9+) |
Расчёт флагов: 1 (чёрный список) + 2 (SELinux) + 4 (seccomp) + 8 (eBPF) = сумма
Защита SELinux:
user_t, unconfined_t, httpd_t, postgresql_t, mysqld_tuser_t и unconfined_t покрывают подавляющее большинство сценариев атакЗащита systemd seccomp:
httpd, nginx, postgresql, mariadb, redis, memcachedЗащита eBPF LSM:
cfDr выполняет комплексную оценку по нескольким измерениям:
uname -r
- Определяет, если версия ядра >= 4.10 (уязвимый диапазон)
- Идентифицирует выпуск ядра и дистрибутив
#### 2. Проверка доступности модуля```bash
modinfo algif_aead
algif_aead в ядреlsmod | grep algif_aead
- Определяет, загружен ли модуль в данный момент
- **Критически важно**: Загруженный модуль = активно эксплуатируемый
#### 4. Активное обнаружение сокетов```bash
lsof -U | grep AF_ALG
Чёрный список модулей:```bash grep -E "blacklist algif_aead|install algif_aead" /etc/modprobe.d/*.conf
**Политика SELinux**:```bash
semodule -l | grep cve_2026_31431_af_alg_deny
systemd seccomp:```bash systemctl show | grep RestrictAddressFamilies
#### 6. Категориальное определение статуса
cfDr относит каждый хост к одному из следующих состояний:
| Статус | Условие | Требуемое действие |
|--------|-----------|-----------------|
| **УЯЗВИМ - Модуль загружен** | Ядро >= 4.10, модуль существует И загружен | **НЕМЕДЛЕННО** - Активно эксплуатируемо |
| **УЯЗВИМ - Модуль существует** | Ядро >= 4.10, модуль существует, не загружен | **ВЫСОКИЙ** - Может быть загружен и эксплуатирован |
| **СМЯГЧЕНО - Модуль в черном списке** | Обнаружен черный список | **НИЗКИЙ** - Мониторинг, применение дополнительных уровней защиты |
| **ЗАЩИЩЕНО - Эшелонированная защита** | Черный список + SELinux/seccomp/eBPF | **НЕТ** - Полностью защищено |
| **НЕ УЯЗВИМ - Старое ядро** | Ядро < 4.10 | **НЕТ** - Предшествует уязвимости |
| **НЕ УЯЗВИМ - Нет модуля** | Модуль algif_aead отсутствует в ядре | **НЕТ** - Модуль недоступен |
### Результат оценки
Каждый хост получает:
1. **Вывод в консоль**: Краткий статус в одну строку
2. **Подробный файл**: `/root/cve-2026-31431-assessment-<hostname>.txt`
3. **JSON-отчет**: `/tmp/cve-2026-31431-<hostname>.json`
Пример краткого вывода:```
webserver1.example.com: VULNERABLE - Module exists and can be loaded
dbserver2.example.com: PROTECTED - Defense-in-depth (Module Blacklist + SELinux)
appserver3.example.com: NOT VULNERABLE - Module not available
cfDr построен как современная роль Ansible с несколькими точками входа в плейбуки:``` cfDr/ ├── roles/ │ └── cve_2026_31431/ # Main role │ ├── tasks/ │ │ ├── main.yml # Role orchestration │ │ ├── assessment.yml # Vulnerability detection │ │ ├── remediation_module_blacklist.yml │ │ ├── remediation_selinux.yml │ │ ├── remediation_seccomp.yml │ │ ├── remediation_ebpf.yml │ │ ├── reporting.yml # Status reporting │ │ └── inventory_update.yml # Inventory generation │ ├── templates/ # Config file templates │ ├── defaults/ # Default variables │ └── handlers/ # Service restarts, etc. ├── quickstart.yml # Simplest usage ├── sample_playbook.yml # Multiple examples └── cve_2026_31431_playbook.yml # Full-featured playbook
### Execution Flow
#### Режим оценки (по умолчанию)```
1. Pre-flight checks
↓
2. Gather system facts
↓
3. Detect kernel version
↓
4. Check module availability
↓
5. Check current load status
↓
6. Check existing mitigations
↓
7. Determine vulnerability status
↓
8. Flag vulnerable hosts
↓
9. Generate reports
↓
10. Create summary
↓
11. [Optional] Generate inventory
apply_remediation=true)```1-8. [Same as Assessment Mode] ↓ 9. Apply Module Blacklist (if flag 1) • Unload module if loaded • Create blacklist config • Update initramfs/initrd • Verify blacklist works ↓ 10. Apply SELinux Policy (if flag 2) • Install policy packages • Compile policy module • Install policy • Verify policy active ↓ 11. Apply systemd seccomp (if flag 4) • Create drop-in files • Reload systemd • Restart services • Verify filters active ↓ 12. Apply eBPF LSM (if flag 8) • Compile eBPF program • Load into kernel • Verify program attached ↓ 13. Re-assess protection status ↓ 14. Generate reports ↓ 15. Create summary
### Сведения об устранении уязвимости
#### Чёрный список модулей (Флаг 1)
**Что это делает**:
1. Выгружает модуль `algif_aead`, если он загружен (`rmmod algif_aead`)
2. Создаёт `/etc/modprobe.d/blacklist-algif_aead-cve-2026-31431.conf`: ```
blacklist algif_aead
install algif_aead /bin/true
update-initramfs -udracut -fmodprobeЗащита: Немедленная, перезагрузка не требуется Постоянство: Сохраняется после перезагрузок и обновлений ядра
Что делает:
policycoreutilspolicycoreutils-python-utilsselinux-policy-develcheckpolicysemodule -i cve_2026_31431_af_alg_deny.ppЗащищаемые домены (по умолчанию):
user_t — процессы обычных пользователейunconfined_t — неограниченные процессыhttpd_t — веб-сервер Apachepostgresql_t — база данных PostgreSQLmysqld_t — база данных MySQL/MariaDBЗащита: Блокировка на уровне LSM, обойти невозможно Постоянство: Политика сохраняется после перезагрузок
Что делает:
/etc/systemd/system/<service>.service.d/90-cve-2026-31431-block-af-alg.confRestrictAddressFamilies=~AF_ALGЗащищаемые службы (по умолчанию):
httpd, nginx — веб-серверыpostgresql, mariadb — базы данныхredis, memcached — серверы кэшированияЗащита: Блокирует создание сокетов на уровне системных вызовов для каждой службы Постоянство: Сохраняется после перезагрузок и обновлений служб
Что делает:
Требования:
CONFIG_BPF_LSM=yЗащита: Динамическая, программируемая политика на уровне всей системы Постоянство: Требуется системная служба для загрузки при запуске
cfDr может генерировать готовые к использованию файлы инвентаризации, содержащие только уязвимые хосты:
Сгенерированные файлы:``` inventory_output/ ├── vulnerable_hosts.yml # YAML inventory ├── vulnerable_hosts.ini # INI inventory ├── group_vars_vulnerable_hosts.yml # Group variables └── host_vars/ ├── host1.yml # Per-host details └── host2.yml
**Что включено**:
- Результаты оценки уязвимостей
- Рекомендуемые флаги смягчения (рассчитанные для каждого хоста)
- Сведения о системе (версия ядра, статус SELinux)
- Готовые к применению параметры исправления
**Интеллектуальные рекомендации**:
- Флаг 3 (чёрный список модулей + SELinux), если SELinux включён
- Флаг 1 (только чёрный список модулей), если SELinux недоступен
- Настраивается для каждого хоста через сгенерированные `host_vars`
---
## Влияние на системную криптографию
### Критическая находка: стандартная криптография RHEL НЕ ЗАТРАГИВАЕТСЯ
**Уровень уверенности**: ⭐⭐⭐⭐⭐ **ВЫСОКИЙ** — см. [Отчёт о проверке IPsec/XFRM](https://github.com/parmstro/cfdr/blob/main/docs/IPSEC_VALIDATION.md) для подробного анализа
**Хорошие новости для развёртываний Enterprise Linux:** Согласно авторитетным источникам, включая [CERT-EU](https://cert.europa.eu/publications/security-advisories/2026-005/), [CloudLinux](https://blog.cloudlinux.com/cve-2026-31431-copy-fail-mitigation-and-patches) и [HPCsec](https://www.hpcsec.com/2026/04/30/advisory-cve-2026-31431-copy-fail-local-privilege-escalation-via-af-alg-algif_aead/), меры смягчения cfDr **оказывают минимальное или нулевое влияние** на стандартную системную криптографию и сервисы RHEL.
### Что НЕ затрагивается
Следующие критически важные криптографические системы RHEL **не используют AF_ALG** и полностью не затронуты нашими исправлениями:
#### Основные системные службы
| Служба/Компонент | Функция | Статус |
|------------------|----------|--------|
| **dm-crypt / LUKS** | Полное шифрование диска | ✅ Не затронуто |
| **IPsec / XFRM** | VPN и шифрование сети | ✅ Не затронуто ([проверено](https://github.com/parmstro/cfdr/blob/main/docs/IPSEC_VALIDATION.md)) |
| **kTLS** | Реализация TLS в ядре | ✅ Не затронуто |
| **SSH** | Защищённые shell-подключения | ✅ Не затронуто |
#### Криптографические библиотеки
| Библиотека | Использование | Статус |
|---------|-------|--------|
| **OpenSSL** (по умолчанию) | SSL/TLS, сертификаты, общая криптография | ✅ Не затронуто |
| **GnuTLS** (по умолчанию) | Реализация TLS | ✅ Не затронуто |
| **NSS** | Службы сетевой безопасности Mozilla | ✅ Не затронуто |
| **Связка ключей ядра** | Управление ключами ядра | ✅ Не затронуто |
#### Критическая инфраструктура
- ✅ **SSL/TLS** — всё шифрование веб-серверов не затронуто
- ✅ **HTTPS** — защищённый веб-трафик не затронут
- ✅ **Шифрование электронной почты** (S/MIME, PGP) — не затронуто
- ✅ **Операции с сертификатами** — не затронуты
- ✅ **Шифрование баз данных** — не затронуто
- ✅ **Шифрование резервных копий** — не затронуто
### Почему стандартные службы не используют AF_ALG
Как задокументировано в [Документации по криптографии ядра Linux](https://www.kernel.org/doc/html/v4.11/crypto/userspace-if.html), **AF_ALG — это пользовательский сокетный интерфейс** к криптографии ядра, представленный в Linux 2.6.38. Однако большинство системных служб RHEL используют API криптографии ядра **напрямую**, а не через сокетный уровень AF_ALG.
Согласно [рекомендациям по безопасности CERT-EU](https://cert.europa.eu/publications/security-advisories/2026-005/):
> «Сборки dm-crypt / LUKS, kTLS, IPsec, SSH и стандартные сборки OpenSSL / GnuTLS не зависят от AF_ALG и не затронуты ограничениями AF_ALG».
Архитектура выглядит следующим образом:```
┌─────────────────────────────────────────────┐
│ Userspace Applications │
├─────────────────────────────────────────────┤
│ Standard Crypto Libraries │
│ (OpenSSL, GnuTLS, NSS) │
│ │ │
│ └─────> In-Kernel Crypto API ──────────┐ │
│ (Direct access) │ │
├──────────────────────────────────────────┼──┤
│ AF_ALG Socket Interface (RARELY USED) │ │
│ │ │ │
│ └─────> In-Kernel Crypto API ──────────┘ │
├─────────────────────────────────────────────┤
│ Kernel Crypto Subsystem │
│ (AES, SHA, AEAD algorithms) │
└─────────────────────────────────────────────┘
Standard services bypass AF_ALG entirely
Согласно анализу R-fx Networks:
«Для большинства HPC-сред это ничего не сломает — AF_ALG — это пользовательский вход в криптографию ядра, который практически никто не использует».
Только эти чрезвычайно редкие конфигурации могут быть затронуты:
НЕ используется по умолчанию в RHEL. Движок afalg должен быть явно настроен:```bash
openssl engine afalg
**Вариант использования:** Разгрузка аппаратного криптоускорения
**Распространённость:** Крайне редко встречается в стандартных развёртываниях
**Влияние:** Приложение переключается на программную криптографию
#### 2. Пользовательские приложения, использующие libkcapi
**Прямое программирование сокетов AF_ALG** с использованием специализированных библиотек.
**Вариант использования:** Специализированные инструменты безопасности или пользовательские криптоприложения
**Распространённость:** Практически отсутствует в стандартных корпоративных средах
**Влияние:** Зависит от конкретного приложения, потребуется модификация кода
#### 3. Инструменты аппаратной крипторазгрузки
**Специализированные инструменты**, использующие AF_ALG для аппаратного ускорения.
**Вариант использования:** Высокопроизводительные вычисления, аппаратные криптографические ускорители
**Распространённость:** Только в специализированных средах с высокими требованиями к безопасности или HPC
**Влияние:** Переключение на программную криптографию
### Официальная позиция Red Hat
Согласно [Red Hat Bugzilla #2460538](https://bugzilla.redhat.com/show_bug.cgi?id=2460538):
- **CVE:** CVE-2026-31431
- **Серьёзность:** Высокая (CVSS 7.8)
- **Статус:** Исправлено в ядре 6.19.12+
- **Исправление:** Откат оптимизации на месте от 2017 года (коммит 72548b093ee3)
- **Влияние:** «Нет преимущества в работе на месте в algif_aead, поскольку источник и назначение поступают из разных отображений»
### Оценка влияния по флагу смягчения
| Флаг | Меры смягчения | Влияние на стандартные сервисы |
|------|----------------|--------------------------------|
| 1 | Чёрный список модулей | ✅ Нулевое влияние — AF_ALG не используется |
| 2 | Политика SELinux | ✅ Нулевое влияние — блокирует неиспользуемый системный вызов |
| **3** | **Чёрный список + SELinux** | ✅ **Нулевое влияние — РЕКОМЕНДУЕТСЯ** |
| 5 | Чёрный список + seccomp | ✅ Нулевое влияние — безопасно для каждого сервиса |
| 7 | Чёрный список + SELinux + seccomp | ✅ Нулевое влияние — эшелонированная защита |
| 15 | Все меры смягчения | ✅ Нулевое влияние — максимальная защита |
### Проверка после устранения
После применения мер смягчения cfDr убедитесь, что критически важные сервисы продолжают работать:```bash
# Test SSH connectivity
ssh localhost echo "SSH working"
# Test HTTPS (if web server running)
curl -k https://localhost
# Test LUKS encryption (if using encrypted volumes)
cryptsetup status /dev/mapper/luks-volume
# Test IPsec (if VPN configured)
ipsec status
# Test system services
systemctl status sshd
systemctl status httpd
systemctl status postgresql
# Check for any service failures
systemctl --failed
Ожидаемый результат: Все сервисы продолжают работать в штатном режиме.
Несколько авторитетных организаций в области безопасности подтверждают нашу оценку:
CERT-EU (30 апреля 2026 г.):
«Сборки dm-crypt / LUKS, kTLS, IPsec, SSH и стандартные сборки OpenSSL / GnuTLS не зависят от AF_ALG»
Sysdig (29 апреля 2026 г.):
Документирует, что стандартные криптографические операции используют внутриядерные API, а не сокеты AF_ALG
R-fx Networks (2 мая 2026 г.):
«Рабочие нагрузки хостинга не используют AF_ALG легитимно, поэтому его безопасно отключить в качестве меры смягчения без влияния на производственные сервисы»
HPCsec (30 апреля 2026 г.):
«Для большинства HPC-сред это ничего не сломает — AF_ALG — это пользовательская входная дверь к криптографии ядра, которую практически никто не использует»
Для стандартных сред RHEL/CentOS/Fedora:
Матрица решений:
| Ваша среда | Рекомендация | Причина |
|---|---|---|
| Стандартные серверы RHEL | Развернуть флаг 3 сейчас | Нулевое влияние, немедленная защита |
| RHEL с пользовательской криптографией | Сначала провести аудит использования AF_ALG | Крайне маловероятно, но проверьте |
| Системы разработки | Развернуть флаг 3 сейчас | То же, что и для продакшена |
| Среды с высокими требованиями к безопасности | Развернуть флаг 7 или 15 | Максимальная эшелонированная защита |
Меры смягчения cfDr безопасны для всех стандартных развертываний RHEL. Модуль algif_aead и интерфейс сокетов AF_ALG не используются ни одной критически важной системной криптографией в системах Enterprise Linux.
Что это означает:
Единственный теоретический риск — это пользовательские приложения, явно запрограммированные на использование сокетов AF_ALG — сценарий настолько редкий, что несколько организаций по безопасности независимо подтвердили, что блокировка AF_ALG безопасна в корпоративных средах.
Этот рабочий процесс сочетает тщательность с эксплуатационной безопасностью:
ansible-playbook -i inventory quickstart.yml
**Что происходит**:
- Оцениваются все хосты
- Никаких изменений не вносится
- Формируются отчёты
**Проверка**:
- Проверьте `/root/cve-2026-31431-assessment-<hostname>.txt` на каждом хосте
- Просмотрите сводный вывод
- Определите уязвимые хосты
**Ожидаемый результат**:```
CVE-2026-31431 Summary Report
==========================================
Total hosts scanned: 50
Vulnerable hosts: 12
VULNERABLE HOSTS REQUIRING REMEDIATION:
web1.example.com, web2.example.com, db1.example.com, ...
DEFAULT RECOMMENDED MITIGATION: Flag 3
- Module Blacklist (1) + SELinux (2) = Defense-in-depth
- Module Blacklist alone can be bypassed by root (via insmod)
- SELinux blocks syscall even if blacklist is bypassed
- Covers user_t/unconfined_t (vast majority of scenarios)
ansible-playbook -i inventory quickstart.yml -e generate_inventory=true -e inventory_output_dir=./vulnerable_hosts
**Что происходит**:
- Выявлены уязвимые хосты
- Рассчитаны рекомендуемые флаги смягчения для каждого хоста
- Сгенерированы файлы инвентаризации
**Проверка**:```bash
# Check generated inventory
cat vulnerable_hosts/vulnerable_hosts.yml
# Review per-host recommendations
ls vulnerable_hosts/host_vars/
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml
-e apply_remediation=true
--limit 'dev*:test*'
**Что происходит**:
- Средства защиты применяются только к тестовым/разработочным хостам
- Службы перезапускаются (для seccomp)
- Выполняется проверка
**Проверка**:```bash
# Re-scan test hosts
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml quickstart.yml --limit 'dev*:test*'
# Check for "PROTECTED - Defense-in-depth" status
Тестовые приложения:
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml
-e apply_remediation=true
--limit 'web*'
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml
-e apply_remediation=true
--limit 'app*'
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml
-e apply_remediation=true
--limit 'db*'
**Что происходит**:
- Каждый уровень исправляется отдельно
- Сервисы перезапускаются по одному уровню за раз
- Позволяет проводить поэтапную проверку
**Мониторинг между этапами**:
- Проверяйте доступность сервисов
- Просматривайте журналы приложений
- Проверяйте пользовательский опыт
#### Шаг 5: Проверка и документация```bash
# Final assessment of all hosts
ansible-playbook -i inventory quickstart.yml
Документ:
Total hosts scanned: 50 Vulnerable hosts: 0
All hosts protected with defense-in-depth mitigations
### Процедура экстренного реагирования
Для **активно эксплуатируемых** систем или **немедленных угроз**:```bash
# Immediate assessment and remediation
ansible-playbook -i inventory quickstart.yml -e apply_remediation=true -e mitigation_flags=3
# Re-verify all hosts
ansible-playbook -i inventory quickstart.yml
Используйте этот подход, когда:
Внимание: Это применяет меры защиты ко всем уязвимым хостам одновременно. Внимательно следите за процессом.
Для постоянного соответствия требованиям и обнаружения новых систем:```bash
0 2 * * 0 ansible-playbook -i inventory quickstart.yml -e generate_inventory=true
**Интеграция с**:
- Системой управления конфигурациями (CMDB)
- Системой управления информацией о безопасности и событиями (SIEM)
- Системами тикетов для отслеживания устранения угроз
### Пользовательский рабочий процесс устранения угроз
Для **специфических требований**, выходящих за рамки Флага 3:```bash
# Use enhanced protection (Flag 7: Blacklist + SELinux + seccomp)
ansible-playbook -i inventory quickstart.yml \
-e apply_remediation=true \
-e mitigation_flags=7
# Or customize per-host via inventory
# Edit generated host_vars/*.yml files to set custom flags
vim vulnerable_hosts/host_vars/web1.example.com.yml
# Change: recommended_mitigation_flags: 7
# Apply customized settings
ansible-playbook -i vulnerable_hosts/vulnerable_hosts.yml cve_2026_31431_playbook.yml \
-e apply_remediation=true
После устранения уязвимости проверьте защиту:```bash
sudo lsmod | grep algif_aead
sudo modprobe algif_aead
cat /etc/modprobe.d/blacklist-algif_aead-cve-2026-31431.conf
sudo semodule -l | grep cve_2026_31431
systemctl show httpd | grep RestrictAddressFamilies
---
## Быстрый старт
Для пользователей, которые хотят начать работу немедленно:
### Простейшее использование```bash
# Clone repository
git clone https://github.com/parmstro/cfDr.git
cd cfDr
# Step 1: Assess all hosts
ansible-playbook -i inventory quickstart.yml
# Step 2: Apply recommended mitigations to vulnerable hosts
ansible-playbook -i inventory quickstart.yml --limit vulnerable_hosts -e apply_remediation=true
ansible-playbook -i /path/to/your/inventory quickstart.yml
ansible-playbook -i /path/to/your/inventory quickstart.yml
--limit vulnerable_hosts
-e apply_remediation=true
### Формирование реестра уязвимостей```bash
# Scan and create inventory of vulnerable hosts
ansible-playbook -i inventory quickstart.yml -e generate_inventory=true
# Review generated files
ls inventory_output/
# Apply mitigations using generated inventory
ansible-playbook -i inventory_output/vulnerable_hosts.yml cve_2026_31431_playbook.yml \
-e apply_remediation=true
Переопределите стандартные меры смягчения для каждого запуска плейбука:```bash
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=1
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=2
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=3
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=7
ansible-playbook quickstart.yml -e apply_remediation=true -e mitigation_flags=15
### Настройка доменов SELinux
Отредактируйте `roles/cve_2026_31431/defaults/main.yml`:```yaml
# Add additional domains to protect
selinux_denied_domains:
- user_t
- unconfined_t
- httpd_t
- postgresql_t
- mysqld_t
- custom_app_t # Your custom domain
- another_service_t
Отредактируйте roles/cve_2026_31431/defaults/main.yml:```yaml
seccomp_protected_services:
### Пользовательский каталог вывода инвентаризации```bash
# Specify custom output location
ansible-playbook quickstart.yml \
-e generate_inventory=true \
-e inventory_output_dir=/path/to/output
Файл sample_playbook.yml содержит несколько примеров:```yaml
### Требования
- **Ansible**: 2.9 или выше (рекомендуется 2.15+)
- **Привилегированный доступ**: sudo/root на целевых хостах
- **Python**: 2.7 или 3.5+ на целевых хостах
- **Поддерживаемые ОС**: Red Hat Enterprise Linux, CentOS, Fedora (ограниченная поддержка Debian/Ubuntu)
---
## Дополнительные ресурсы
### Информация и анализ CVE
**Официальные источники**:
- [NVD - CVE-2026-31431](https://nvd.nist.gov/vuln/detail/CVE-2026-31431)
- [Запись CVE в MITRE](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-31431)
**Исследования и анализ безопасности**:
- [Sysdig - Анализ CVE-2026-31431](https://www.sysdig.com/blog/cve-2026-31431-copy-fail-linux-kernel-flaw-lets-local-users-gain-root-in-seconds)
- [The Hacker News - Уязвимость Copy Fail](https://thehackernews.com/2026/04/new-linux-copy-fail-vulnerability.html)
- [Рекомендации по безопасности CERT-EU](https://cert.europa.eu/publications/security-advisories/2026-005/)
- [Help Net Security - Подробности Copy Fail](https://www.helpnetsecurity.com/2026/04/30/copyfail-linux-lpe-vulnerability-cve-2026-31431/)
### Связанные проекты по смягчению последствий
Вклад сообщества в смягчение последствий CVE-2026-31431:
- **[block-copyfail](https://github.com/atgreen/block-copyfail)** - реализация eBPF LSM от Энтони Грина
- Комплексное смягчение на основе eBPF
- Защита всей системы для современных ядер
- Источник для реализации eBPF в cfDr
- **[Blastwall](https://gprocunier.github.io/blastwall/demo.html)** - фреймворк политик SELinux от Грега Прокунье
- Расширенное управление политиками SELinux
- Фреймворк защиты от нескольких CVE
- Источник для реализации SELinux в cfDr
### Ресурсы, специфичные для Red Hat
**Статьи базы знаний**:
- [Портал клиентов Red Hat - CVE-2026-31431](https://access.redhat.com/security/cve/cve-2026-31431)
- [Данные безопасности Red Hat - Затронутые продукты](https://access.redhat.com/security/data/metrics/)
**Руководства по смягчению последствий**:
- [SELinux для Enterprise Linux - Руководство пользователя](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/using_selinux/)
- [Функции безопасности systemd](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/managing_systems_using_the_rhel_9_web_console/securing-systemd-services_system-management-using-the-rhel-9-web-console)
### Документация
**Расширенная документация cfDr**:
- [Руководство по смягчению последствий для Enterprise Linux](https://github.com/parmstro/cfdr/blob/main/enterprise-linux-mitigations.md) - комплексное сравнение всех методов смягчения
- [Руководство по смягчению SELinux](https://github.com/parmstro/cfdr/blob/main/selinux-mitigation.md) - подробная реализация политик SELinux
- [Руководство по смягчению seccomp](https://github.com/parmstro/cfdr/blob/main/seccomp-mitigation.md) - реализация фильтров seccomp в systemd
- [Руководство по смягчению eBPF LSM](https://github.com/parmstro/cfdr/blob/main/ebpf-lsm-mitigation.md) - реализация программ eBPF LSM
- [docs/CONTRIBUTORS.md](https://github.com/parmstro/cfdr/blob/main/CONTRIBUTORS.md) - рекомендации по внесению вклада и благодарности
**Документация Ansible**:
- [Руководство пользователя Ansible](https://docs.ansible.com/ansible/latest/user_guide/)
- [Лучшие практики Ansible](https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html)
---
## Мониторинг обновлений
### Red Hat Enterprise Linux
**Основной источник**: Портал клиентов Red Hat
- **Рекомендации по безопасности**: https://access.redhat.com/security/security-updates/
- **Рекомендации Errata**: https://access.redhat.com/errata/
- **Трекер CVE**: https://access.redhat.com/security/cve/cve-2026-31431
**Способы уведомления**:
1. **Уведомления по электронной почте** (рекомендуется):
- Войдите на портал клиентов Red Hat
- Перейдите: Настройки учётной записи → Уведомления
- Включите: «Рекомендации по безопасности» и «Errata продуктов»
- Выберите: версии RHEL, которыми вы управляете
2. **RSS-каналы**:
- Безопасность RHEL 7: https://access.redhat.com/blogs/766093/feed
- Безопасность RHEL 8: https://access.redhat.com/blogs/1683903/feed
- Безопасность RHEL 9: https://access.redhat.com/blogs/5480361/feed
- Все обновления безопасности: https://access.redhat.com/security/data/oval/com.redhat.rhsa-all.xml
3. **Доступ через API**: ```bash
# Check for kernel security updates
curl -H "Accept: application/json" \
"https://access.redhat.com/labs/securitydataapi/cve/CVE-2026-31431.json"
Автоматический мониторинг: ```bash
sudo yum install yum-plugin-security
sudo yum updateinfo list security
sudo yum updateinfo list security kernel
На что обращать внимание:
Пример формата бюллетеня:``` RHSA-2026:XXXX - Important: kernel security update Severity: Important CVEs: CVE-2026-31431 Affected Products: RHEL 7, 8, 9
### CentOS / Rocky Linux / AlmaLinux
**CentOS Stream**:
- **Анонсы**: https://lists.centos.org/pipermail/centos-announce/
- **Список рассылки по безопасности**: https://lists.centos.org/mailman/listinfo/centos-security-announce
**Rocky Linux**:
- **Трекер безопасности**: https://errata.rockylinux.org/
- **Анонсы**: https://rockylinux.org/news/
**AlmaLinux**:
- **Errata**: https://errata.almalinux.org/
- **Безопасность**: https://wiki.almalinux.org/security/
### Fedora
**Основной источник**: Fedora Project
- **Система обновлений**: https://bodhi.fedoraproject.org/
- **Список безопасности**: https://lists.fedoraproject.org/archives/list/[email protected]/
**Способы уведомления**:```bash
# Subscribe to security announcements
# Visit: https://lists.fedoraproject.org/admin/lists/security-announce.lists.fedoraproject.org/
# Check for updates
sudo dnf check-update kernel
# View available security updates
sudo dnf updateinfo list security
Основной источник: Уведомления о безопасности Ubuntu
Способы уведомления:```bash
sudo apt update sudo apt list --upgradable | grep security
sudo apt install ubuntu-security-tools usn list --cve CVE-2026-31431
### Debian
**Основной источник**: Debian Security Tracker
- **Security Tracker**: https://security-tracker.debian.org/tracker/CVE-2026-31431
- **Security Announcements**: https://www.debian.org/security/
**Методы уведомления**:```bash
# Subscribe to Debian Security Announcements
# Visit: https://lists.debian.org/debian-security-announce/
# Check for security updates
sudo apt update
sudo apt list --upgradable
Основной источник: SUSE Security
Способы уведомления:```bash
sudo zypper list-patches --category security
sudo zypper info --cve CVE-2026-31431
### Upstream Kernel
**Список рассылки ядра Linux**:
- **Архивы LKML**: https://lkml.org/
- **Список безопасности**: https://www.kernel.org/category/releases.html
**Git-репозиторий**:```bash
# Monitor kernel git for patches
git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
# Search for CVE-2026-31431 patches
git log --all --grep="CVE-2026-31431"
Создайте скрипт мониторинга для вашей среды:```bash #!/bin/bash
DISTRO=$(grep ^ID= /etc/os-release | cut -d= -f2 | tr -d '"')
case $DISTRO in rhel|centos|rocky|alma) yum updateinfo list security kernel 2>/dev/null | grep -i CVE-2026-31431 ;; fedora) dnf updateinfo list security kernel 2>/dev/null | grep -i CVE-2026-31431 ;; ubuntu|debian) apt-get update -qq apt-cache show linux-image-$(uname -r) | grep CVE-2026-31431 ;; sles|opensuse*) zypper info --cve CVE-2026-31431 kernel-default ;; esac
curl -s "https://access.redhat.com/labs/securitydataapi/cve/CVE-2026-31431.json" |
jq -r '.affected_release[] | select(.package | startswith("kernel")) |
"(.product_name): (.advisory) - (.package)"'
**Планирование с помощью cron**:```bash
# Check daily for patches
0 6 * * * /usr/local/bin/check-cve-2026-31431-patch.sh | mail -s "CVE-2026-31431 Patch Check" [email protected]
Проверьте доступность патча: ```bash
sudo yum check-update kernel # RHEL/CentOS/Fedora sudo apt update && apt list --upgradable linux-image-* # Ubuntu/Debian
Просмотрите примечания к выпуску:
Протестируйте в непроизводственной среде: ```bash
sudo yum update kernel # RHEL/CentOS/Fedora sudo apt upgrade linux-image-* # Ubuntu/Debian sudo reboot
Проверьте эффективность патча: ```bash
uname -r
ansible-playbook -i inventory quickstart.yml
Планирование производственного развертывания:
Удаление временных мер смягчения (необязательно): ```bash
sudo rm /etc/modprobe.d/blacklist-algif_aead-cve-2026-31431.conf sudo semodule -r cve_2026_31431_af_alg_deny # SELinux policy
Рекомендация: Даже после установки патча ядра рассмотрите возможность сохранения эшелонированных мер защиты (defense-in-depth) для защиты от будущих уязвимостей.
Нашли ошибку или хотите предложить новую функцию?
Мы приветствуем ваш вклад! См. docs/CONTRIBUTORS.md для получения информации о:
cfDr создан на основе коллективного опыта специалистов по безопасности:
Полные сведения о вкладе см. в docs/CONTRIBUTORS.md.
Этот проект предоставляется под лицензией MIT для целей оценки уязвимостей и их устранения.
Подробности см. в LICENSE.
ВАЖНО: Этот инструмент предоставляет временные меры смягчения в ожидании патчей ядра от поставщика. Эти меры значительно снижают риск, но могут не обеспечивать полную защиту во всех сценариях.
cfDr предоставляется «как есть», без каких-либо гарантий. Всегда:
Авторы и сопровождающие cfDr не несут ответственности за любой ущерб или потерю данных, возникшие в результате использования этого инструмента.
Последнее обновление: 2026-05-02T23:30:00Z