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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-74469 — Исследовательский репозиторий для CVE-2026-74469 (DiagSpill) — переполнение счётчика транспорта пира SCTP в ядре Linux, приводящее к записи за границами буфера, с PoC, анализом первопричины и сведениями о патче. | Kitploit
Инструменты/GitHubGitHub/0xblackash/cve-2026-74469
Повышение привилегийКриминалистика памятиАнализ уязвимостейЭксплуатацияСтатьи и ИсследованияОбучение и ОбразованиеЭксплуатация Бинарных ФайловЛаборатории и Практика
GitHub0xblackash/cve-2026-74469

CVE-2026-74469

Исследовательский репозиторий для CVE-2026-74469 (DiagSpill) — переполнение счётчика транспорта пира SCTP в ядре Linux, приводящее к записи за границами буфера, с PoC, анализом первопричины и сведениями о патче.

41 день назадЕщё не проверено

Популярное

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

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

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

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

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

⚡ CVE-2026-74469 — DiagSpill

Переполнение счётчика peer-транспортов SCTP в ядре Linux

Уязвимость SCTP в ядре Linux, вызванная переполнением 16-битного счётчика peer-транспортов, позволяющим счётчику обернуться с 65535 до 0. Во время диагностического дампа SCTP обёрнутое значение может привести к недостаточному резервированию полезной нагрузки skb, а затем к записи данных peer-адресов за пределами границ буфера.


⚠️ Отказ от ответственности

Этот репозиторий предназначен только для авторизованных исследований в области безопасности, анализа уязвимостей ядра, сред CTF, отладки ядра и защитного тестирования.

Не используйте код proof-of-concept против систем без явного разрешения.


📌 Обзор уязвимости

В рекомендации по CVE для ядра Linux эта проблема описывается как переполнение 16-битного transport_count в SCTP, за которым следует недостаточное выделение памяти для INET_DIAG_PEERS и запись за пределами границ во время диагностического дампа.


🧬 Описание уязвимости

Уязвимый код хранит количество уникальных peer-транспортов в 16-битном счётчике:

root@kitploit:~
transport_count

Каждый добавленный уникальный peer увеличивает счётчик.

Критическая граница:

root@kitploit:~
65535

Добавление ещё одного уникального транспорта приводит к:

root@kitploit:~
65535 + 1
     ↓
     0

Возникающее переполнение создаёт несоответствие между:

root@kitploit:~
transport_count

и:

root@kitploit:~
transport_addr_list

Диагностическая подсистема впоследствии доверяет обёрнутому счётчику при вычислении размера буфера ответа, при этом продолжая перебирать полный список peer-адресов.


🔬 Первопричина

Уязвимость можно представить так:

root@kitploit:~
                    SCTP Association
                           │
                           ▼
                 Add unique peers
                           │
                           ▼
                 transport_count
                    uint16_t
                           │
                           ▼
                    65,535 peers
                           │
                           ▼
                 + 1 unique peer
                           │
                           ▼
                    Integer wrap
                           │
                           ▼
                transport_count = 0
                           │
                           ▼
                  SCTP sock_diag
                           │
                           ▼
             Reserve incorrect payload
                           │
                           ▼
          Iterate complete peer list
                           │
                           ▼
             Out-of-bounds skb write

В upstream-рекомендации прямо указано, что 65 536-й транспорт обнуляет счётчик.


🧠 Почему возникает ошибка

Диагностический код фактически опирается на два разных представления одного и того же состояния.

Сторона выделения памяти

root@kitploit:~
transport_count
       │
       ▼
payload size

Сторона копирования

root@kitploit:~
transport_addr_list
       │
       ▼
copy every peer address

После переполнения целого числа:

root@kitploit:~
transport_count = 0

transport_addr_list =
    [peer 1]
    [peer 2]
    [peer 3]
    ...
    [peer 65536]

Таким образом, аллокатор резервирует место исходя из:

root@kitploit:~
0 peers

в то время как операция копирования всё ещё может обработать:

root@kitploit:~
65536 peer addresses

Это несоответствие и приводит к нарушению безопасности памяти.


💥 Повреждение памяти

В рекомендации по ядру Linux описывается, что результирующий диагностический дамп резервирует пустую полезную нагрузку, а затем записывает примерно 8 MiB peer-адресов за пределами хвоста skb.

Концептуально:

root@kitploit:~
Expected skb:

┌───────────────────────────────┐
│ INET_DIAG header              │
├───────────────────────────────┤
│ Peer addresses                │
└───────────────────────────────┘
              ▲
              │
          valid end


Actual vulnerable state:

┌───────────────────────────────┐
│ INET_DIAG header              │
└───────────────────────────────┘
              ▲
              │
          skb tail

              ↓
      Peer address writes
              ↓
      Peer address writes
              ↓
      Peer address writes
              ↓
      OUT-OF-BOUNDS WRITE

Red Hat классифицирует этот дефект как CWE-787: запись за пределами границ.


🔎 Уязвимый путь в коде

Соответствующий путь можно обобщить так:

root@kitploit:~
SCTP association
      │
      ▼
sctp_assoc_add_peer()
      │
      ▼
transport_count++
      │
      ▼
16-bit overflow
      │
      ▼
SCTP sock_diag
      │
      ▼
INET_DIAG_PEERS
      │
      ▼
skb payload reservation
      │
      ▼
transport_addr_list iteration
      │
      ▼
Out-of-bounds write

Затронутый исходный файл:

root@kitploit:~
net/sctp/associola.c

В объявлении CVE для ядра Linux этот файл указан явно.


🩹 Исправление в upstream

Исправление в upstream:

root@kitploit:~
bd0e9289e2642f6a5c54faad304ce0f41e926d22

Коммит:

root@kitploit:~
sctp: prevent peer transport count overflow

Исправление отклоняет новый уникальный peer, когда:

root@kitploit:~
transport_count >= U16_MAX

Важно, что проверка выполняется после поиска существующего peer.

Это сохраняет возможность получить уже существующий транспорт, даже когда ассоциация достигла предела.


🛡️ Логика патча

Уязвимо

root@kitploit:~
New peer
   │
   ▼
transport_count++
   │
   ▼
Possible 16-bit wrap
   │
   ▼
Diagnostic size mismatch
   │
   ▼
OOB write

Исправлено

root@kitploit:~
New peer
   │
   ▼
Existing peer?
   │
 ┌─┴──────────┐
 │            │
YES           NO
 │            │
 ▼            ▼
Reuse       Check U16_MAX
transport       │
                ▼
          Reject at limit

Важное свойство безопасности — предотвращение любого переполнения счётчика при сохранении обычной семантики поиска существующего peer.


📊 Уязвимая версия против исправленной


💥 Влияние на безопасность

Повреждение памяти потенциально может привести к:

  • Падению ядра
  • Отказу в обслуживании
  • Повреждению памяти ядра
  • Записи за пределами границ в ядре
  • Потенциальному повышению привилегий
  • Потенциальному выполнению кода в ядре

Публичные исследования, опубликованные после раскрытия, сообщают об эксплуатации с получением локального root при определённых условиях, тогда как исходная оценка Linux Kernel CNA использует AV:L/AC:H/PR:L/UI:N.

Уязвимость также описывается как потенциально достижимая удалённо при очень специфических обстоятельствах конфигурации SCTP/адресов, но это не следует рассматривать как эквивалент общедоступной удалённо эксплуатируемой уязвимости.


🧪 Среда для исследований

Рекомендуемая изолированная топология:

root@kitploit:~
┌───────────────────────────────────────────┐
│              Linux VM                    │
│                                           │
│       ┌───────────────────┐               │
│       │   SCTP Association │               │
│       └─────────┬─────────┘               │
│                 │                         │
│                 ▼                         │
│       ┌───────────────────┐               │
│       │ Multiple SCTP      │               │
│       │ Peer Transports    │               │
│       └─────────┬─────────┘               │
│                 │                         │
│                 ▼                         │
│       ┌───────────────────┐               │
│       │   SCTP sock_diag   │               │
│       └─────────┬─────────┘               │
│                 │                         │
│                 ▼                         │
│          INET_DIAG_PEERS                  │
│                                           │
└───────────────────────────────────────────┘

Полезные инструменты:

root@kitploit:~
ip sctp
ss
ss -a
ss -A sctp
dmesg -w
gdb
pwndbg
crash

Проверка поддержки SCTP:

root@kitploit:~
lsmod | grep sctp

Проверка конфигурации ядра:

root@kitploit:~
grep CONFIG_IP_SCTP /boot/config-$(uname -r)

🔎 Проверка ядра

Проверка работающего ядра:

root@kitploit:~
uname -r

Проверка конфигурации SCTP:

root@kitploit:~
grep -E 'CONFIG_IP_SCTP|CONFIG_SCTP' \
/boot/config-$(uname -r)

Проверка загруженных модулей SCTP:

root@kitploit:~
lsmod | grep -i sctp

Просмотр сокетов SCTP:

root@kitploit:~
ss -A sctp

🧪 Процесс воспроизведения

Для контролируемых исследований ядра:

root@kitploit:~
01. Build vulnerable kernel
          ↓
02. Boot isolated VM
          ↓
03. Enable SCTP
          ↓
04. Create controlled SCTP association
          ↓
05. Populate unique peer transports
          ↓
06. Reach transport-count boundary
          ↓
07. Trigger SCTP diagnostic dump
          ↓
08. Monitor skb diagnostics
          ↓
09. Capture kernel behavior
          ↓
10. Apply upstream fix
          ↓
11. Repeat test
          ↓
12. Compare vulnerable vs patched

Мониторинг вывода ядра:

root@kitploit:~
sudo dmesg -w

Для отладки:

root@kitploit:~
gdb vmlinux

или:

root@kitploit:~
pwndbg vmlinux

📂 Структура репозитория

root@kitploit:~
CVE-2026-74469-DiagSpill/
│
├── README.md
│
├── exploit/
│   ├── poc.c
│   └── Makefile
│
├── analysis/
│   ├── root-cause.md
│   ├── sctp-transport-count.md
│   ├── sock-diag.md
│   ├── skb-overflow.md
│   └── patch-analysis.md
│
├── kernel/
│   ├── vulnerable/
│   └── patched/
│
├── lab/
│   ├── setup.sh
│   ├── cleanup.sh
│   └── topology.md
│
├── screenshots/
│
├── docs/
│   └── research-notes.md
│
└── LICENSE

🛡️ Меры защиты

Основная мера защиты — обновление до ядра, содержащего upstream-исправление.

Для Debian/Kali:

root@kitploit:~
sudo apt update
sudo apt full-upgrade

Затем перезагрузка:

root@kitploit:~
sudo reboot

Проверка:

root@kitploit:~
uname -r

Если SCTP не требуется, администраторы также могут рассмотреть отключение затронутой функциональности SCTP в соответствии со своей средой и эксплуатационными требованиями. В публичном исследовании отключение SCTP / sctp_diag прямо указано как немедленная мера защиты, когда эти компоненты не используются.


📦 Исправленные версии ядра

В объявлении upstream stable перечислены следующие исправленные версии:

Эти версии взяты из объявления CVE для ядра Linux; дистрибутивы могут перенести исправление в пакеты с другой нумерацией версий.


🧩 Уроки безопасности

01 — Никогда не позволяйте ограниченным счётчикам переполняться незаметно

16-битный счётчик имеет жёсткий максимум:

root@kitploit:~
U16_MAX = 65535

Код, критичный для безопасности, должен явно обрабатывать эту границу.

02 — Количество для выделения и копирования должно совпадать

Размер, используемый для выделения буфера, должен соответствовать количеству объектов, фактически скопированных в него.

03 — Диагностические интерфейсы критичны для безопасности

Диагностические API ядра могут становиться поверхностью атаки для повреждения памяти, когда внутреннее состояние становится несогласованным.

04 — Ошибки целочисленных типов могут превращаться в ошибки безопасности памяти

Исходный примитив — целочисленное переполнение, но результирующее влияние на безопасность — запись за пределами границ в ядре.

05 — Состояние сетевой подсистемы ядра сложно

Ассоциации SCTP могут содержать большие коллекции peer-транспортов, что делает ограничения счётчиков и логику управления списками критичными для безопасности.


📚 Ссылки

  • CVE: CVE-2026-74469
  • Кодовое имя: DiagSpill
  • Подсистема: Linux SCTP
  • Затронутый файл: net/sctp/associola.c
  • Основная функция: sctp_assoc_add_peer()
  • Исправление: sctp: prevent peer transport count overflow
  • Upstream-исправление: bd0e9289e2642f6a5c54faad304ce0f41e926d22
  • CWE: CWE-787 / запись за пределами границ
  • Linux Kernel CVE Advisory: CVE-2026-74469 advisory
  • Debian Security Tracker: CVE-2026-74469 Debian tracker
  • Red Hat: CVE-2026-74469 Red Hat advisory

⚡ DiagSpill

CVE-2026-74469

Linux Kernel · SCTP · sock_diag · OOB Write · Kernel Security


Research • Analyze • Reproduce • Harden


0xBlackash

Скачать инструмент
ПолеДетали
CVECVE-2026-74469
Кодовое имяDiagSpill
КомпонентLinux Kernel
ПодсистемаSCTP / sock_diag
Затронутый файлnet/sctp/associola.c
Основная функцияsctp_assoc_add_peer()
Класс ошибкиЦелочисленное переполнение / запись за границами
ВлияниеПовреждение памяти ядра
Потенциальное влияниеЛокальное повышение привилегий
CVSS v3.17.0 — High
Вектор атакиЛокальный
Сложность атакиВысокая
Требуемые привилегииНизкие
Взаимодействие с пользователемОтсутствует
СтатусИсправлено
Свойство безопасностиУязвимоИсправлено
Ограничение 16-битного транспорта соблюдается❌✅
Переполнение счётчика предотвращено❌✅
Существующие peer остаются доступными✅✅
Размер диагностической нагрузки надёжен❌✅
Запись skb за пределами границ предотвращена❌✅
Повреждение памяти ядра устранено❌✅
ВеткаИсправленная версия
5.105.10.265
5.155.15.216
6.16.1.183
6.66.6.151
6.126.12.103
6.186.18.44
7.17.1.8
7.27.2-rc6