В ядре Linux устранена следующая уязвимость:
wifi: ath6kl: ограничивать длину запроса/ответа assoc перед вычитанием смещений IE
ath6kl_cfg80211_connect_event() вычитает фиксированные смещения IE из
assoc_req_len (-= 4) и assoc_resp_len (-= 6), оба u8, без нижнего
связан. Агрегатная проверка, недавно добавленная в ath6kl_wmi_connect_event_rx().
ограничивает заявленные длины сверху (их сумма должна соответствовать полученному
событие), но ассоциированный запрос/ответ все равно короче, чем его фиксированное смещение.
здесь происходит переполнение: u8 переносится на ~250, а cfg80211_connect_result() /
cfg80211_roamed() затем обрабатывает это завернутое значение как длину IE и копирует
столько байтов из небольшого буфера assoc_info в пользовательское пространство через
nl80211, раскрывающий соседнюю пластину памяти. Перед вычитанием зафиксируйте обе длины на их смещениях.
Найдено пользователем 0sec (https://0sec.ai) с помощью автоматического анализа источника; тот отсутствие нижней границы очевидно из источника. Протестировано компиляцией.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: wifi: ath6kl: clamp assoc request/response lengths before subtracting IE offsets ath6kl_cfg80211_connect_event() subtracts fixed IE offsets from assoc_req_len (-= 4) and assoc_resp_len (-= 6), both u8, with no lower bound. The aggregate check recently added to ath6kl_wmi_connect_event_rx() bounds the declared lengths from above (their sum must fit the received event), but an assoc request/response shorter than its fixed offset still underflows here: the u8 wraps to ~250, and cfg80211_connect_result() / cfg80211_roamed() then treat that wrapped value as the IE length and copy that many bytes out of the small assoc_info buffer to user space via nl80211, disclosing adjacent slab memory. Clamp both lengths to their offsets before subtracting. Found by 0sec (https://0sec.ai) using automated source analysis; the missing lower bound is evident from source. Compile-tested.
Характеристики атаки
Последствия
Строка CVSS v3.1