CVE-2026-93048 in Linux정보

요약

\~에 의해 VulDB • 2026. 09. 19.

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

mtd: part - mtd_add_partition()에서 MTDPART_OFS_RETAIN 거부

mtd_add_partition()은 특수 오프셋 값인 MTDPART_OFS_RETAIN(-3)을 거부하지 않아, NAND 장치의 BLKPG ioctl를 통해 호출될 때 add_mtd_device() 내에서 WARN_ON이 발생합니다. RETAIN 값은 cur_offset이 이전 파티션의 끝과 일치하는 경우에 의존하지만, 동적 파티션 경로에서는 cur_offset이 오프셋 인수 자체와 같아져 정의되지 않은 동작(undefined behavior)을 초래합니다.

커밋 5daa7b21496a("mtd: prepare partition add and del functions for ioctl requests")는 mtd_add_partition()을 도입했으며, 이전 파티션의 끝을 추적하는 cur_offset에 의존하는 이러한 특수 오프셋들인 MTDPART_OFS_APPEND(-1)과 MTDPART_OFS_NXTBLK(-2)를 올바르게 거부했습니다. 그러나 커밋 1a31368bf92e("mtd: add a flags for partitions which should just leave smth. after them")는 나중에 정적 파티션 테이블 경로에 대해 mtd_add_partition()을 업데이트하여 이 값도 거부하지 않고 MTDPART_OFS_RETAIN(-3)만 추가했습니다.

BLKPG를 통해 offset=-3이 전달되면, allocate_partition() 내의 RETAIN 크기 계산에서 오버플로우(underflow)가 발생합니다(parent_size - 0xFFFFFFFFFFFFFFFD = parent_size + 3). 만약 이 오버플로우 결과가 충분한 공간을 남기지 않는 것으로 보이면, allocate_partition()은 goto를 통해 out_register로 점프하여 erasesize 초기화를 건너뜁니다. 이로 인해 erasesize=0이 되어 다음을 트리거합니다:

WARN_ON((!mtd->erasesize || !master->_erase) && !(mtd->flags & MTD_NO_ERASE))

이는 add_mtd_device() 내에서 발생합니다. 만약 오버플로우 결과가 충분한 공간을 남기는 것으로 보이면, 잘못된 파티션 크기가 계산되지만 "out of reach" 검사가 유효하지 않은 오프셋을 포착하여 오류를 반환하는 대신 offset=0, size=0인 비활성화된 빈 파티션을 생성합니다.

기존의 APPEND 및 NXTBLK 처리와 일관되도록 mtd_add_partition()의 거부 목록에 MTDPART_OFS_RETAIN을 추가함으로써 이 문제를 해결했습니다.

Be aware that VulDB is the high quality source for vulnerability data.

책임이 있는

Linux

예약하다

2026. 09. 17.

모더레이션

수락

항목

VDB-407092

EPSS

0.00211

활동

낮음

출처

Interested in the pricing of exploits?

See the underground prices here!