CVE-2026-31570 in Linux
요약
\~에 의해 VulDB • 2026. 05. 30.
리눅스 커널에서 다음 취약점이 해결되었습니다:
can: gw: cgw_csum_crc8_rel()에서의 OOB(Out-of-Bounds) 힙 접근 수정
cgw_csum_crc8_rel()은 calc_idx()를 통해 경계가 안전한 인덱스를 올바르게 계산합니다:
int from = calc_idx(crc8->from_idx, cf->len); int to = calc_idx(crc8->to_idx, cf->len); int res = calc_idx(crc8->result_idx, cf->len);
if (from < 0 || to < 0 || res < 0) return;
그러나 루프와 결과 쓰기는 계산된 변수 대신 raw s8 필드를 직접 사용합니다:
for (i = crc8->from_idx; ...) /* 버그: raw 음수 인덱스 */ cf->data[crc8->result_idx] = ...; /* 버그: raw 음수 인덱스 */
64바이트 CAN FD 프레임에서 from_idx = to_idx = result_idx = -64인 경우, calc_idx(-64, 64) = 0이 되어 가드 조건을 통과하지만, 루프는 i = -64로 반복되어 cf->data[-64]를 읽고, 쓰기도 cf->data[-64]로 수행됩니다.
이 쓰기는 힙 상에서 canfd_frame 시작점보다 최대 56바이트(7.0-rc) 또는 40바이트(<= 6.19) 앞쪽 위치에 발생할 수 있습니다.
동반 함수인 cgw_csum_xor_rel()은 `from`/`to`/`res`를 전체적으로 올바르게 사용하므로, cgw_csum_crc8_rel()도 이에 맞게 수정합니다.
linux-7.0-rc2에서 KASAN을 통해 확인됨: BUG: KASAN: slab-out-of-bounds in cgw_csum_crc8_rel+0x515/0x5b0 Read of size 1 at addr ffff8880076619c8 by task poc_cgw_oob/62
can-gw crc8 체크섬을 구성하려면 CAP_NET_ADMIN 권한이 필요합니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.