🇰🇷 한글 설명
Linux 커널의 AppArmor 구성 요소 내 unpack_pdb 함수에서 DFA 시작 상태를 검증하지 않아 발생하는 취약점입니다. 신뢰할 수 없는 데이터로부터 읽어온 시작 상태 값이 DFA 상태 테이블의 범위를 초과할 경우, 경계 외 읽기(Out-of-bounds read)가 발생하여 시스템 안정성을 해칠 수 있습니다.
💡 쉬운 설명
AppArmor라는 보안 프로그램이 설정 파일을 읽을 때, 잘못된 숫자가 포함되어 있으면 허용되지 않은 메모리 영역을 읽어버리는 오류입니다. 이로 인해 시스템이 멈추거나 보안 설정이 제대로 작동하지 않을 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
apparmor: validate DFA start states are in bounds in unpack_pdb
Start states are read from untrusted data and used as indexes into the
DFA state tables. The aa_dfa_next() function call in unpack_pdb() will
access dfa->tables[YYTD_ID_BASE][start], and if the start state exceeds
the number of states in the DFA, this results in an out-of-bound read.
==================================================================
BUG: KASAN: slab-out-of-bounds in aa_dfa_next+0x2a1/0x360
Read of size 4 at addr ffff88811956fb90 by task su/1097
...
Reject policies with out-of-bounds start states during unpacking
to prevent the issue.
📍 영향받는 시스템
AppArmor가 활성화된 Linux 커널 버전 (패치 적용 전 버전)
⚔️ 공격 벡터
조작된 AppArmor 정책 파일을 시스템에 로드하여 경계 외 메모리 읽기 유도
🛡️ 대응 방법
AppArmor의 unpack_pdb 함수에서 시작 상태의 유효성을 검증하도록 커널을 최신 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 보안 패치 버전인지 배포판 보안 공지를 통해 확인