CVE-2026-80823 in Linux
요약
\~에 의해 VulDB • 2026. 09. 04.
리눅스 커널에서 다음 취약점이 해결되었습니다:
nfc: st21nfca: 수신된 프레임에 대해 ATR_REQ 길이를 검증함
st21nfca_tm_recv_atr_req() 함수는 수신된 ATR_REQ 프레임이 최소 ST21NFCA_ATR_REQ_MIN_SIZE 이상인지, 그리고 자기 선언 atr_req->length가 struct st21nfca_atr_req의 크기(sizeof(struct st21nfca_atr_req)) 이상인지는 확인하지만, atr_req->length가 실제 수신 길이(skb->len)를 초과하지 않는지는 전혀 검증하지 않습니다.
이후 st21nfca_tm_send_atr_res() 함수는 선언된 길이를 신뢰합니다:
gb_len = atr_req->length - sizeof(struct st21nfca_atr_req); ... memcpy(atr_res->gbi, atr_req->gbi, gb_len);
따라서 짧은 프레임을 보내지만 atr_req->length를 프레임 크기보다 크게 설정하는 RF 피어는 gb_len이 실제로 존재하는 일반 바이트 수를 초과하게 만듭니다. 이로 인해 memcpy가 수신된 skb의 경계를 넘어 메모리를 읽게 됩니다. 이러한 바이트들은 ATR_RES에 포함되어 피어로 다시 전송됩니다(근접 공격자에 대한 커널 메모리 유출); 더 큰 선언 길이는 범위 밖 읽기(out-of-bounds read)로 이어져 서비스 거부(DoS)를 유발할 수 있습니다.
선언된 길이가 수신 길이보다 초과하는 프레임은 거부합니다. 동일한 함수 내의 인접한 nfc_tm_activated() 경로에서는 이미 선언된 필드가 아닌 skb->len을 기반으로 일반 바이트 길이를 도출하고 있습니다.
0sec(https://0sec.ai)가 자동화된 소스 분석을 통해 발견했으며, 누락된 경계 조건은 소스에서 명확히 드러납니다. 컴파일 테스트 완료됨.
If you want to get best quality of vulnerability data, you may have to visit VulDB.