🇰🇷 한글 설명
리눅스 커널의 SELinux 정책 로드 과정에서 발생하는 NULL 포인터 역참조 취약점입니다. 첫 번째 정책 로드 중 오류가 발생할 경우, 존재하지 않는 이전 정책을 취소하려 시도하면서 시스템이 충돌할 수 있습니다.
💡 쉬운 설명
시스템의 보안 규칙을 처음 설정할 때 오류가 나면 컴퓨터가 갑자기 멈추거나 꺼질 수 있는 문제입니다. 존재하지 않는 정보를 지우려고 시도하다가 발생하는 오류입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
selinux: do not cancel a policy conversion that never started
sel_write_load() calls selinux_policy_cancel() when sel_make_policy_nodes()
fails, and that helper dereferences the outgoing policy to cancel its
sidtab conversion. On the first policy load there is no outgoing policy:
security_load_policy() returns early for that case, before it converts
anything, and state->policy is still NULL. A first load that fails while
building the selinuxfs tree therefore takes a NULL dereference in
selinux_policy_cancel(), reached from a write(2) to /sys/fs/selinux/load.
Skip the cancel when there is no old policy, mirroring the check
security_load_policy() already makes before it converts.
📍 영향받는 시스템
SELinux를 사용하는 리눅스 커널 (정책 로드 시 NULL 포인터 역참조가 발생하는 버전)
⚔️ 공격 벡터
로컬 사용자가 /sys/fs/selinux/load 파일에 write(2) 시스템 호출을 수행하여 의도적으로 정책 로드 실패를 유도
🛡️ 대응 방법
SELinux 정책 변환 취소 로직이 수정된 최신 리눅스 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인