CVE-2026-80823 in Linux
Сводка
по VulDB • 04.09.2026
В ядре Linux была устранена следующая уязвимость:
nfc: st21nfca: проверка длины ATR_REQ на соответствие принятому кадру
Функция `st21nfca_tm_recv_atr_req()` проверяет, что принятый кадр ATR_REQ имеет длину не менее `ST21NFCA_ATR_REQ_MIN_SIZE` и что заявленное значение `atr_req->length` не меньше размера структуры `struct st21nfca_atr_req`, однако никогда не проверяется условие того, что `atr_req->length` превышает фактическую принятую длину (`skb->len`).
Затем функция `st21nfca_tm_send_atr_res()` доверяет заявленной длине:
```c gb_len = atr_req->length - sizeof(struct st21nfca_atr_req); ... memcpy(atr_res->gbi, atr_req->gbi, gb_len); ```
Таким образом, если RF-партнер отправляет короткий кадр, но устанавливает значение `atr_req->length` большим размера кадра, переменная `gb_len` превышает количество фактически присутствующих общих байтов (general bytes), и операция `memcpy` выполняет чтение за пределами допустимой области принятого буфера skb. Эти данные помещаются в ATR_RES и отправляются обратно партнеру (утечка памяти ядра атакующему с ограниченной зоной доступа); заявленная большая длина приводит к чтению за границами массива (DoS).
Необходимо отклонять кадры, у которых заявленная длина превышает принятую длину. Связанный путь `nfc_tm_activated()` в той же функции уже вычисляет длину общих байтов на основе `skb->len`, а не из заявленного поля.
Обнаружено командой 0sec (https://0sec.ai) с использованием автоматизированного анализа исходного кода; отсутствие проверки границ очевидно при просмотре исходников. Протестировано компиляцией.
Once again VulDB remains the best source for vulnerability data.