🇰🇷 한글 설명
Linux 커널의 트레이싱 히스토그램 코드에서, find_synth_event()가 이벤트 이름의 기본명(basename)만 비교하여 합성 이벤트(synthetic event)의 참조 카운트(se->ref)를 잘못 증감시키는 문제가 수정되었습니다. 이로 인해 비합성 이벤트에 대한 히스토그램 등록/해제가 합성 이벤트의 해제를 유발하여 use-after-free 상태가 발생할 수 있었습니다. 수정 사항으로 find_synth_event_call()을 도입하여 &se->call과 file->event_call의 일치를 검증한 후에만 참조 카운트를 조정하도록 변경되었습니다.
💡 쉬운 설명
같은 이름을 가진 두 개의 트레이스 이벤트를 혼동하여 시스템이 잘못된 메모리 관리를 하던 결함입니다. 공격자가 이를 악용하면 이미 해제된 메모리를 사용하게 만들어 시스템 불안정이나 권한 상승으로 이어질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
tracing/histograms: Verify event_call identity when updating synth_event refcount
In event_hist_trigger_parse() and hist_unreg_all(), the histogram
registration and unregistration paths look up find_synth_event() using
trace_event_name(file->event_call) and adjust se->ref if a match is
found.
Because find_synth_event() only compares the event basename, registering
or removing a histogram on a non-synthetic trace event whose basename
matches a synthetic event erroneously modifies the synthetic event's
reference count. If a histogram is registered on the non-synthetic
event before the synthetic event is created and removed afterwards,
se->ref is decremented without a matching increment, allowing the
synthetic event to be freed while an active histogram action still holds
a pointer to it.
Introduce find_synth_event_call() to verify that &se->call matches
file->event_call before adjusting se->ref.
📍 영향받는 시스템
수정 이전 버전의 Linux 커널 (트레이싱 히스토그램 기능 사용 가능 환경)
⚔️ 공격 벡터
로컬 사용자가 합성 이벤트와 같은 기본명을 가진 비합성 트레이스 이벤트에 히스토그램을 등록/해제하여 참조 카운트 불일치를 유발
🛡️ 대응 방법
배포판 벤더가 제공하는 최신 커널 보안 업데이트를 설치하고 재부팅
🔧 검증 코드
출력된 커널 버전을 배포판 벤더의 보안 공지에서 CVE-2026-99233 수정이 포함된 패치 버전과 비교하여, 같거나 이후 버전이면 수정된 것입니다.