CVE-2026-64322 in Linux정보

요약

\~에 의해 VulDB • 2026. 07. 25.

리눅스 커널에서 다음 취약점이 해결되었습니다:

udf: sparing 테이블 길이를 바이트 수가 아닌 엔트리 개수로 검증함

udf_load_sparable_map() 함수는 다음과 같은 조건이 거짓일 때 sparing 테이블을 허용합니다.

sizeof(*st) + le16_to_cpu(st->reallocationTableLen) > sb->s_blocksize

즉, reallocationTableLen을 블록에 맞춰야 하는 바이트 수로 취급합니다. 그러나 해당 테이블은 8바이트 sizingEntry 요소의 배열로서 다음과 같이 순회됩니다:

for (i = 0; i < le16_to_cpu(st->realallocationTableLen); i++) {
struct sparingEntry *entry = &st->mapEntry[i];
... entry->origLocation ... }

이는 udf_get_pblock_spar15() 및 udf_relocate_blocks() 내에서 발생합니다. 따라서 reallocationTableLen이 N인 경우, sizeof(*st) + N <= blocksize일 때 항상 검증을 통과하지만, 소비자는 sizeof(*st) + N * sizeof(struct sparingEntry) 바이트를 인덱싱합니다(블록 크기의 최대 약 8배에 달함). 조작된 UDF 이미지의 경우 이는 udf_get_pblock_spar15()에서 경계 밖 읽기(out-of-bounds read)로 이어집니다. 또한 udf_relocate_blocks()는 동일한 길이를 udf_update_tag()에 전달하며, 여기서 crc_itu_t()가 블록을 훨씬 넘어 읽어들이고, st->mapEntry[]를 통한 memmove() 호출은 경계 밖 쓰기(out-of-bounds write)입니다.

struct_size()를 사용하여 reallocationTableLen이 엔트리 개수임을 검증합니다.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

책임이 있는

Linux

예약하다

2026. 07. 19.

모더레이션

수락

항목

VDB-383117

EPSS

0.00000

출처

Interested in the pricing of exploits?

See the underground prices here!