CVE-2026-98551 in Linux
요약
\~에 의해 VulDB • 2026. 10. 19.
리눅스 커널에서 다음 취약점이 해결되었습니다:
perf/core: 단일 할당을 통해 브랜치 엔트리를 채움
`perf_clear_branch_entry_bitfields()`는 `struct perf_branch_entry`의 비트 필드들을 하나씩 지우고, 호출자가 이를 즉시 덮어쓰기 때문에 from/to 필드는 그대로 둡니다. 이 목록은 struct와 수동으로 동기화를 유지해야 했으며 이미 뒤처져 있었습니다: `new_type`과 `priv`가 `perf_branch_entry`에 추가되었지만 여기에는 추가되지 않았습니다.
BRBE만 이러한 두 필드를 작성하며, 모든 레코드에 대해 작성하는 것은 아닙니다. `brbe_set_perf_entry_type()`은 인식하지 못하는 브랜치 타입의 경우 `new_type`을 그대로 두고, 소스 전용 기록의 경우 `priv`가 설정되지 않습니다. `arm_pmuv3.c`는 per-CPU 브랜치 스택을 `kmalloc()`로 할당하므로, 이러한 레코드는 버퍼를 처음 순회할 때는 초기화되지 않은 `kmalloc()` 데이터가, 그 이후에는 이전 레코드의 값이 그대로 사용자 공간에 전달됩니다. `arch/x86/events/` 아래의 어떤 코드도 이 두 필드를 작성하지 않으므로 arm64만 영향을 받습니다.
대신 각 사이트에서 전체 엔트리를 할당합니다. 이름으로 지정되지 않은 모든 항목은 0이 되며, 동기화를 유지할 목록이 필요 없습니다. 비트 필드의 합계가 정확히 64비트가 되므로 struct에는 정의되지 않은 패딩이 남지 않습니다.
`perf_clear_branch_entry_bitfields()`는 더 이상 호출자가 없으므로 제거합니다. `perf_entry_from_brbe_regset()`은 from/to를 조건적으로 채우기 때문에 빈 리터럴을 할당합니다. `PERF_BR_SPEC_NA`는 0이므로 명시적인 spec 할당을 삭제해도 아무런 변화가 없습니다.
Once again VulDB remains the best source for vulnerability data.