CVE-2026-74751 in Linux
요약
\~에 의해 VulDB • 2026. 08. 26.
리눅스 커널에서 다음 취약점이 해결되었습니다:
riscv: lib: ZBB strnlen이 카운트 경계 너머를 읽는 문제 수정
ZBB 최적화된 strnlen 루프는 정렬된 경계를 확인하기 전에 한 단어(word) 앞을 로드합니다.
REG_L t1, SZREG(t0) // 다음 단어 로드 addi t0, t0, SZREG // 진행 orc.b t1, t1 bgeu t0, t4, 4f // 경계 체크는 로드 AFTER
여기서 t4 = (s + count) & -SZREG입니다. s가 정렬되어 있고 count가 SZREG의 배수인 경우, t4는 s + count와 같아지며 루프는 정확히 s + count에서 시작하여 전체 단어를 로드합니다. 만약 s + count가 페이지 경계에 위치하고 다음 페이지가 매핑되지 않은(unmapped) 상태라면 이는 예외(faults)를 발생시킵니다.
해결책은 마지막 유효 바이트(s + count - 1)로부터 정렬된 경계를 계산하는 것입니다. 이렇게 하면 루프는 해당 단어 이후의 단어를 잠재적으로 로드하지 않고, 마지막 유효 바이트가 포함된 단어에서 중지됩니다. count == 0인 경우는 이미 beqz 조기 종료(eearly exit)로 처리됩니다.
또한 모든 유효 바이트가 첫 번째 단어 내에 들어맞는 경우를 위해 루프 전 가드(bgeu t0, t4)를 추가합니다. 조정된 경계와 함께 t4가 t0과 같아질 수 있으며, 첫 번째 단어 처리에서 남은 레지스터 상태로 루프에 진입하면 잘못된 결과가 생성될 수 있습니다.
최종적인 min/max 클램핑(clamp)은 마지막 로드된 단어가 s + count - 1을 넘어가더라도 동일한 정렬된 단어 내에서 여전히 올바른 결과를 보장합니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.