🇰🇷 한글 설명
Linux 커널의 ftrace 서브시스템에서 ftrace_add_mod() 함수 처리 중 널 포인터 역참조가 발생하는 취약점입니다. kzalloc()으로 할당된 ftrace_mod의 list 멤버가 초기화되지 않은 상태에서 kstrdup() 실패 시 list_del()이 호출되어 커널 패닉이 발생할 수 있습니다. INIT_LIST_HEAD()로 list를 초기화하여 수정되었습니다.
💡 쉬운 설명
리눅스 커널의 추적 기능에서 메모리 처리 오류가 있어, 특정 상황에서 시스템이 갑자기 멈출 수 있습니다. 이는 커널 패닉을 일으켜 서버나 PC가 재부팅되는 원인이 됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ftrace: Fix null pointer dereference in ftrace_add_mod()
The @ftrace_mod is allocated by kzalloc(), so both the members {prev,next}
of @ftrace_mode->list are NULL, it's not a valid state to call list_del().
If kstrdup() for @ftrace_mod->{func|module} fails, it goes to @out_free
tag and calls free_ftrace_mod() to destroy @ftrace_mod, then list_del()
will write prev->next and next->prev, where null pointer dereference
happens.
BUG: kernel NULL pointer dereference, address: 0000000000000008
Oops: 0002 [#1] PREEMPT SMP NOPTI
Call Trace:
<TASK>
ftrace_mod_callback+0x20d/0x220
? do_filp_open+0xd9/0x140
ftrace_process_regex.isra.51+0xbf/0x130
ftrace_regex_write.isra.52.part.53+0x6e/0x90
vfs_write+0xee/0x3a0
? __audit_filter_op+0xb1/0x100
? auditd_test_task+0x38/0x50
ksys_write+0xa5/0xe0
do_syscall_64+0x3a/0x90
entry_SYSCALL_64_after_hwframe+0x63/0xcd
Kernel panic - not syncing: Fatal exception
So call INIT_LIST_HEAD() to initialize the list member to fix this issue.
📍 영향받는 시스템
수정 이전의 Linux 커널 버전 (ftrace 기능이 활성화된 시스템)
⚔️ 공격 벡터
로컬 사용자가 ftrace 관련 인터페이스(tracefs)에 특정 입력을 써서 커널 널 포인터 역참조를 유발하고 서비스 거부(DoS)를 일으킬 수 있습니다.
🛡️ 대응 방법
배포판에서 제공하는 보안 업데이트를 적용하거나 해당 수정이 포함된 최신 Linux 커널로 업그레이드하십시오.
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지에서 해당 CVE의 패치 포함 버전과 비교하여, 같거나 이후 버전이면 수정된 것입니다.