Sploitus

Exploit for copyfail-fix

kitploit · 2026-08-28

Exploit Code

MARKDOWN156 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-HYZ-IS-COPYFAIL-FIX
# CopyFail-Fix

🌐 **English** | Português | Español | 中文 | Íslenska

Однокомандное смягчение и исправление для CVE-2026-31431 — уязвимости локального повышения привилегий в ядре Linux «Copy Fail». Скрипт отключает уязвимый модуль `algif_aead`, обновляет ядро через `apt` и (опционально) устанавливает таймер `systemd` для поддержания системы в актуальном состоянии.

Разработан для **Ubuntu серверов** (также совместим с системами на основе Debian).

> **⚠️ Перед запуском ознакомьтесь со скриптом.** Это инструмент безопасности, работающий от root. Прочитайте `copyfail.sh` перед тем, как передавать его в `sudo`. По возможности всегда используйте официальный процесс обновления ядра вашего дистрибутива.

## Зачем?

CVE-2026-31431 («Copy Fail») — логическая ошибка в модуле ядра `algif_aead` (интерфейс сокетов AEAD криптографического API пользовательского пространства). Локальный непривилегированный пользователь может вызвать детерминированную запись 4 байт в кэш страниц любого читаемого файла — включая setuid-бинарники — и получить root-доступ за секунды. Ошибка была внесена в 2017 году (коммит `72548b093ee3`) и затрагивает все ядра, собранные между 2017 годом и исправлением. Этот скрипт отключает уязвимый модуль, пока вы применяете патч ядра от вашего дистрибутива.

## Требования

  * **Ubuntu 20.04+** (или система на основе Debian)
  * Наличие `apt-get` и `awk`
  * Права root (`sudo`)



## Быстрый старт

root@kitploit:~
    
    
    wget -O copyfail.sh https://raw.githubusercontent.com/paulorlima9/copyfail-fix/main/copyfail.sh
    chmod +x copyfail.sh
    sudo ./copyfail.sh
    

При первом запуске скрипт выполнит:

  1. Запись `/etc/modprobe.d/disable-algif.conf` для блокировки загрузки модуля `algif_aead`
  2. Выгрузку `algif_aead`, если он загружен
  3. Запуск `apt-get update && apt-get upgrade -y` для получения исправленного ядра
  4. Запрос на включение **Supervision** (автоматические ежедневные обновления)



После обновления требуется перезагрузка для загрузки нового ядра.

## Использование

root@kitploit:~
    
    
    sudo ./copyfail.sh [options]
    

## Примеры

**Полное исправление** — применить смягчение и обновить ядро:

root@kitploit:~
    
    
    sudo ./copyfail.sh
    

**Только проверка состояния** :

root@kitploit:~
    
    
    sudo ./copyfail.sh --check
    

**Только смягчение** (без обновления ядра):

root@kitploit:~
    
    
    sudo ./copyfail.sh --mitigate
    

**Отменить смягчение** после подтверждения, что ядро исправлено и перезагружено:

root@kitploit:~
    
    
    sudo ./copyfail.sh --revert
    

**Включить ежедневное автообновление** (Supervision):

root@kitploit:~
    
    
    sudo ./copyfail.sh --supervision
    

## Supervision

Функция Supervision устанавливает **таймер systemd** , который запускает `apt-get upgrade` каждые 24 часа, гарантируя, что исправления ядра будут получены сразу после их публикации вашим дистрибутивом.

При включении создаются два юнита systemd:

  * `copyfail-fix-supervision.service` — сервис одноразового запуска, выполняющий скрипт с опцией `--upgrade`
  * `copyfail-fix-supervision.timer` — таймер, запускающий сервис ежедневно (и через 5 минут после загрузки)



### Управление таймером

root@kitploit:~
    
    
    # Проверка состояния таймера
    systemctl status copyfail-fix-supervision.timer
    
    # Просмотр следующего запланированного запуска
    systemctl list-timers copyfail-fix-supervision.timer
    
    # Отключение автообновлений
    sudo systemctl stop copyfail-fix-supervision.timer
    sudo systemctl disable copyfail-fix-supervision.timer
    
    # Ручной запуск обновления
    sudo systemctl start copyfail-fix-supervision.service
    

## Как это работает

  1. Записывает `install algif_aead /bin/false` в `/etc/modprobe.d/disable-algif.conf`, чтобы модуль не мог загрузиться при следующей загрузке
  2. Выполняет `rmmod algif_aead` для выгрузки из работающего ядра (пропускается, если модуль используется — требуется перезагрузка)
  3. Запускает `apt-get update` с последующим неинтерактивным `apt-get upgrade` для установки последнего пакета ядра
  4. С опцией `--check` проверяет `uname -r`, `lsmod`, файл modprobe и последний установленный пакет `linux-image-*`
  5. С опцией `--revert` удаляет файл modprobe и перезагружает модуль через `modprobe`



## Обозначения в выводе

Во время выполнения скрипт показывает индикаторы прогресса:

  * **`+`** (зелёный) — действие выполнено
  * **`-`** (красный) — действие отменено
  * **`.`** (серый) — действие пропущено (уже применено или не применимо)
  * **`!`** (жёлтый) — предупреждение (например, требуется перезагрузка)



## Ссылки на CVE

  * Ubuntu Security Notice — CVE-2026-31431
  * Red Hat — RHSB-2026-002 Copy Fail
  * CERT-EU 2026-005



## Лицензия

MIT