CVE-2026-89557정보

요약

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

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

md: super_1_load()에서 sb->bblog_shift에 대한 오버플로우 검사 수행

super_1_load() 함수 내에서 sb->bblog_shift는 디스크의 슈퍼블록으로부터 로드되는 __u8 타입 값입니다. 이는 다음과 같은 시퀀스를 통해 badblocks API의 badblocks_set()에서 사용됩니다:

1930 rdev->badblocks.shift = sb->bblog_shift; 1931 for (i = 0 ; i < (sectors << (9-3)) ; i++, bbp++) {
1932 u64 bb = le64_to_cpu(*bbp); 1933 int count = bb & (0x3ff); 1934 u64 sector = bb >> 10; 1935 sector bblog_shift; 1936 count bblog_shift; 1937 if (bb + 1 == 0) 1938 break; 1939 if (!badblocks_set(&rdev->badblocks, sector, count, 1)) 1940 return -EINVAL; 1941 }

bb->bblog_shift는 0-255 범위에 있으며, 변수 sector는 64비트 너비를 가집니다. 유효하지 않은 bb->bblog_shift의 경우 다음 계산으로 인해 sector가 오버플로우될 가능성이 있습니다: 1935 sector bblog_shift;

이어서 라인 1930에서 설정된 잘못된 rdev->badblocks.shift 값을 사용하여 라인 1939에서 badblocks_set()를 호출하면, block/badblocks.c 내의 _badblocks_clear() 함수 내부에서 오버플로우가 발생할 수 있습니다.

비록 badblocks API를 호출하는 곳이 많지만, non-zero shift 값은 super_1_load()에서만 사용되며 다른 곳에서는 항상 0을 shift 값으로 사용합니다. 따라서 badblock API 내에서 일반적인 shift 값에 대한 오버플로우 검사를 수행할 필요는 없으며, 호출자로서 여기에서만 검사하면 됩니다.

이는 불필요한 검사를 피하고 badblocks API 코드를 더 단순하고 우아하게 만듭니다.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

출처

Do you know our Splunk app?

Download it now for free!