🇰🇷 한글 설명
Linux 커널의 memfd 구현에서 SEAL_EXEC 플래그를 사용할 때 SEAL_WRITE가 암시적으로 적용되는 과정에서 발생하는 취약점입니다. 보안 검사 이전에 암시적 봉인이 설정되지 않아, 쓰기 권한이 있는 매핑이 유지된 상태로 SEAL_EXEC이 적용될 수 있습니다. 이로 인해 쓰기 방지 계약이 깨져 공격자가 수정 가능한 memfd를 전달할 수 있습니다.
💡 쉬운 설명
메모리 파일을 수정할 수 없도록 잠그는 기능이 제대로 작동하지 않는 보안 결함입니다. 공격자가 수정 불가능하다고 믿게 만든 파일을 실제로는 마음대로 고칠 수 있게 속일 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
memfd: deny writeable mappings when implying SEAL_WRITE
When SEAL_EXEC is added, SEAL_WRITE is implied to make W^X. But the
implied seal is set after the check that makes sure the memfd can not have
any writable mappings. This means one can use SEAL_EXEC to apply
SEAL_WRITE while having writeable mappings.
This breaks the contract that SEAL_WRITE provides and can be used by an
attacker to pass a memfd that appears to be write sealed but can still be
modified arbitrarily.
Fix this by adding the implied seals before the call for
mapping_deny_writable() is done.
📍 영향받는 시스템
Linux Kernel (memfd 관련 기능이 포함된 버전)
⚔️ 공격 벡터
SEAL_EXEC 플래그를 사용하여 쓰기 권한이 남아있는 상태로 memfd를 생성 및 전달
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인