🇰🇷 한글 설명
Linux 커널의 sys_prlimit64() 함수 내에서 task_lock(tsk->group_leader)을 사용하는 과정에서 레이스 컨디션(경쟁 상태) 취약점이 발견되었습니다. 프로세스가 종료되거나 실행 파일이 변경될 때 이미 해제된 task_struct를 참조하거나 잘못된 락을 획득할 수 있는 문제가 있습니다.
💡 쉬운 설명
컴퓨터의 핵심 운영체제인 리눅스에서 특정 정보를 요청할 때, 시스템이 정보를 처리하는 도중 데이터가 갑자기 바뀌어 오류가 발생하는 문제입니다. 이로 인해 시스템이 멈추거나 보안이 뚫릴 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
kernel/sys.c: fix the racy usage of task_lock(tsk->group_leader) in sys_prlimit64() paths
The usage of task_lock(tsk->group_leader) in sys_prlimit64()->do_prlimit()
path is very broken.
sys_prlimit64() does get_task_struct(tsk) but this only protects task_struct
itself. If tsk != current and tsk is not a leader, this process can exit/exec
and task_lock(tsk->group_leader) may use the already freed task_struct.
Another problem is that sys_prlimit64() can race with mt-exec which changes
->group_leader. In this case do_prlimit() may take the wrong lock, or (worse)
->group_leader may change between task_lock() and task_unlock().
Change sys_prlimit64() to take tasklist_lock when necessary. This is not
nice, but I don't see a better fix for -stable.
📍 영향받는 시스템
Linux Kernel (sys_prlimit64 관련 경로를 사용하는 모든 버전)
⚔️ 공격 벡터
로컬 공격자가 프로세스의 리소스 제한을 변경하는 시스템 호출을 악용하여 레이스 컨디션을 유발
🛡️ 대응 방법
tasklist_lock을 사용하여 동기화를 보장하도록 수정된 최신 리눅스 커널 패치 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 안정화 버전인지 확인