CVE-2026-80876 in Linux
요약
\~에 의해 VulDB • 2026. 09. 04.
리눅스 커널에서 다음 취약점이 해결되었습니다:
ring-buffer: 강제 8바이트 정렬 시 이벤트 길이 수정
RB_FORCE_8BYTE_ALIGNMENT이 true인 경우, rb_calculate_event_length()는 데이터 길이를 배치하기 위해 event->array[0]의 공간을 예약하고, rb_update_event()는 이에 따라 event->array[0]에 데이터 길이를 저장합니다. 그 결과 전체 이벤트 길이는 sizeof(event.array[0])만큼 무조건적으로 4바이트가 추가됩니다.
하지만 ring_buffer_event_length() 함수는 RB_MAX_SMALL_DATA + sizeof(event->array[0])보다 큰 이벤트에 대해서만 sizeof(event->array[0])를 빼줍니다. 그 결과, RB_FORCE_8BYTE_ALIGNMENT이 true인 아키텍처에서 작은 크기의 이벤트들은 예상치보다 4바이트 더 큰 데이터 길이를 보고하게 됩니다.
이를 수정하기 위해 RB_FORCE_8BYTE_ALIGNMENT이 true일 때 해당 길이 필드의 크기를 빼는 조건으로 RB_FORCE_8BYTE_ALIGNMENT을 추가합니다.
이 문제는 riscv64 커널에서 CONFIG_HAVE_64BIT_ALIGNED_ACCESS가 y로 설정된 상태에서 ftrace selftest trace_marker_raw.tc를 실행할 때 관찰됩니다. 이때 다음과 같은 이상한 로그가 발생합니다: id가 1..100인 경우 데이터 필드의 수가 8*N이지만, id가 100을 초과하면 데이터 필드 수가 8*N+4로 변합니다: # 1 buf: 58 00 00 00 80 5e d1 63 (데이터 필드 수는 8*1) ... # a buf: 58 ... (데이터 필드 수는 8*2) ... # 64 buf: 58 ... (데이터 필드 수는 8*13) # 65 buf: 58 ... (데이터 필드 수는 8*13+4)
이 변경사항을 적용한 후, 데이터 필드의 수가 일관되게 8*N+4로 유지됩니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.