🇰🇷 한글 설명
Linux 커널의 SELinux 구현에서 모든 불리언(boolean) 값이 정의되어야 함을 보장하지 않아 발생하는 취약점입니다. 정책 이미지에 정의된 불리언 개수와 실제 값의 개수가 일치하지 않을 경우, 배열 내에 NULL 엔트리가 생성되어 이를 참조할 때 시스템 오류가 발생할 수 있습니다.
💡 쉬운 설명
보안 규칙을 설정하는 과정에서 정의되지 않은 설정값이 포함될 경우, 컴퓨터가 이를 읽다가 오류를 일으켜 시스템이 멈추거나 문제가 생길 수 있는 결함입니다. 모든 보안 규칙이 빠짐없이 정의되도록 검사하는 기능이 추가되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
selinux: require every boolean value to be defined
p_bools.nprim comes from the policy image independently of how many
booleans follow it, and cond_index_bool() fills bool_val_to_struct[] at
value - 1, so a count larger than the values present leaves NULL entries.
Every user of that array then walks it by index and dereferences each
entry: cond_evaluate_expr() on the access-vector path,
security_get_bools() and security_get_bool_value() behind selinuxfs, and
security_set_bools(). A sparse class value is absorbed by
policydb_class_isvalid() and its siblings; booleans have no such
predicate, and no consumer that could use one.
Reject a boolean value that no boolean defines, once, where the array is
built. Conforming policies define every boolean they declare and are
unaffected.
📍 영향받는 시스템
Linux Kernel (SELinux를 사용하는 모든 배포판)
⚔️ 공격 벡터
조작된 SELinux 정책 파일을 로드하여 커널 내 NULL 포인터 역참조 유도
🛡️ 대응 방법
SELinux 불리언 정의 검증 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인