
Быстрое аудитируемое смягчение в Linux для CVE-2026-31431 Copy Fail: блокирование algif_aead, верификация и укрепление seccomp для AF_ALG.
______ ______ _ __ ______ __
/ ____/___ ____ __ _/ ____/___ _(_) / / ____/_ ______ __________/ /
/ / / __ \/ __ \/ / / / /_ / __ `/ / / / / __/ / / / __ `/ ___/ __ /
/ /___/ /_/ / /_/ / /_/ / __/ / /_/ / / / / /_/ / /_/ / /_/ / / / /_/ /
\____/\____/ .___/\__, /_/ \__,_/_/_/ \____/\__,_/\__,_/_/ \__,_/
/_/ /____/
Быстрая, проверяемая оценка и смягчение уязвимости CVE-2026-31431 «Copy Fail» в Linux до установки исправлений ядра.
CopyFail Guard — это инструмент оборонительных операций для Linux-администраторов, DevSecOps-инженеров, платформенных команд и специалистов по реагированию на инциденты. Он помогает снизить подверженность проблеме Linux algif_aead / AF_ALG путём:
algif_aead, загружен ли он, встроен ли в ядро или уже заблокирован;modprobe.d и выгрузки модуля, когда это безопасно;Окончательное исправление: установите исправленное ядро от вашего вендора и перезагрузитесь. Этот инструмент закрывает операционный разрыв между раскрытием уязвимости и полным развёртыванием исправлений на всём парке.
splice, изменения setuid, повышения привилегий или деструктивных проверок./etc/modprobe.d/99-copyfail-guard.conf, а откат удаляет только этот файл.seccomp-patch добавляет запрет AF_ALG в существующий профиль seccomp Docker/Podman/Kubernetes, не заменяя вашу эксплуатационную защиту.assess --json и документированные коды завершения поддерживают сканирование парка, захват в SIEM и документацию изменений.Если вы на хосте Linux и хотите быстрый ответ:
git clone --depth 1 https://github.com/juliosuas/copyfail-guard.git
cd copyfail-guard
sudo ./bin/copyfail-guard.sh doctor
sudo ./bin/copyfail-guard.sh assess
Если вердикт — «подвержен» и algif_aead является модульным:
sudo ./bin/copyfail-guard.sh mitigate --yes
sudo ./bin/copyfail-guard.sh verify
Для повторяемых установок зафиксируйте тег релиза:
git clone --branch v0.3.0 --depth 1 https://github.com/juliosuas/copyfail-guard.git
Замените v0.3.0 на последний помеченный релиз, когда станут доступны более новые версии.
Сначала выполните безопасную проверку подверженности:
sudo ./bin/copyfail-guard.sh assess
Как интерпретировать результат:
| Семейство вердиктов | Что означает | Что делать |
|---|---|---|
EXPOSED_* | algif_aead / AF_ALG, похоже, доступен или может быть загружен | Немедленно смягчить, затем исправить ядро и перезагрузиться |
PARTIALLY_MITIGATED_* | Блокировка существует, но загруженный модуль или состояние перезагрузки всё ещё важны | Перезагрузиться или безопасно выгрузить, затем проверить |
INTERIM_MITIGATED_* | Локальное смягчение активно | Сохранить его, но всё равно исправить ядро и перезагрузиться |
LOW_OBVIOUS_EXPOSURE_* | Локальные проверки не выявили очевидной подверженности algif_aead | Всё равно проверьте статус исправления у вендора |
Если вы запускаете ненадёжные контейнеры, задания CI, песочницы или многопользовательские рабочие нагрузки, также проверьте, заблокировано ли создание сокетов AF_ALG в этой среде выполнения:
python3 tools/afalg-socket-test.py
PERMITTED не доказывает успешную эксплуатацию, но доказывает, что соответствующий пользовательский крипто-API доступен. Для оборонительных операций этого достаточно, чтобы применить смягчение, пока вы подтверждаете развёртывание исправленного ядра.
Деструктивное доказательство концепции не включено. Это особенность, а не недостаток.
Настоящий эксплойт для Copy Fail должен был бы проверять влияние на память ядра/page-cache или повышение привилегий. Поставка такого кода в публичном репозитории сделала бы проект менее безопасным и менее развёртываемым в производстве.
CopyFail Guard доказывает то, на что операторы могут безопасно реагировать:
Для окончательного статуса уязвимости комбинируйте этот инструмент с уведомлениями вендора/инвентаризацией пакетов и подтверждением перезагрузки.
CopyFail Guard — это смягчение, не лечение. Он снижает подверженность и проверяет временные средства контроля. Устойчивым исправлением остаётся исправленное ядро от вендора плюс перезагрузка.
Инструмент намеренно сделан клонируемым и запускаемым для реагирования на инциденты: для основного рабочего процесса на хосте не требуется компилятор, заголовки ядра, эксплойт-код или сторонний менеджер пакетов. python3 требуется для вывода --json, seccomp-patch и неэксплойтного теста сокета AF_ALG.
Клонировать и запустить:
git clone https://github.com/juliosuas/copyfail-guard.git
cd copyfail-guard
chmod +x bin/copyfail-guard.sh
sudo ./bin/copyfail-guard.sh doctor
sudo ./bin/copyfail-guard.sh assess
sudo ./bin/copyfail-guard.sh mitigate --yes
sudo ./bin/copyfail-guard.sh verify
Опциональная системная установка:
git clone https://github.com/juliosuas/copyfail-guard.git
cd copyfail-guard
sudo ./scripts/install.sh
sudo copyfail-guard status
Установщик поддерживает закрепление источника и назначения для контролируемых развёртываний:
sudo env COPYFAIL_GUARD_REF=v0.3.0 ./scripts/install.sh
Используйте последний помеченный релиз для COPYFAIL_GUARD_REF, когда станут доступны более новые версии.
Контейнерная / CI-защита:
./bin/copyfail-guard.sh seccomp-patch docker-default.json copyfail-seccomp.json
docker run --security-opt seccomp=./copyfail-seccomp.json IMAGE
Проверьте, что AF_ALG заблокирован внутри защищённого контейнера:
docker run --rm \
--security-opt seccomp=./copyfail-seccomp.json \
-v "$PWD/tools:/tools:ro" \
python:3.12-alpine \
python /tools/afalg-socket-test.py
Ожидаемый защищённый результат:
BLOCKED: socket(AF_ALG) denied by policy (...)
См. Примеры вывода для ожидаемых вердиктов, структуры JSON и результатов проверки контейнеров.
Copy Fail — это локальное повышение привилегий в ядре Linux в компоненте algif_aead пользовательского крипто-API AF_ALG. Публичные уведомления описывают примитив записи в page-cache, доступный непривилегированным локальным пользователям, и особенно опасный на системах с общим ядром: узлы Kubernetes, CI/CD-рабочие станции, мультитенантные хосты, песочницы агентов и машины разработчиков.