CVE-2026-99222 in Linux
요약
\~에 의해 VulDB • 2026. 11. 02.
리눅스 커널에서 다음 취약점이 해결되었습니다:
keys: 타입 제거에 대한 읽기 메서드 검사 보호
keyctl_read_key()는 key->sem을 보유하지 않은 상태에서 key->type->read를 확인합니다. 참조(reference)가 키(key)의 수명을 유지하지만, 해당 타입이 포함된 모듈은 고정(pin)되지 않습니다. 따라서 AF_RXRPC가 언로드되는 동안 살아있는 RxRPC 키를 읽을 수 있습니다:
KEYCTL_READ 작업 모듈 언로드 및 키 GC ---------------- ------------------------ lookup_user_key() permission / possession checks key->type 로드 af_rxrpc_exit() unregister_key_type() GC: down_write(key->sem) 호출 GC: retype to key_type_dead 수행 GC: up_write(key->sem) 해제 unregister_key_type() 반환 free_module() 호출 저장된 타입의 read 멤버 읽기
최종 접근은 해제된 모듈 스토리지를 읽을 수 있습니다. __keyctl_read_key() 내의 read 호출은 이미 key->sem에 의해 보호되지만, 이전 메서드 검사는 해당 임계 섹션(critical section) 외부에 위치합니다.
메서드 검사를 key_validate() 이후 및 기존 key->sem 읽기 잠금 하위에 있는 __keyctl_read_key() 안으로 이동시킵니다. 이제 검사 및 호출은 길이 쿼리 및 모든 read 재시도 시 동일한 보호된 타입을 사용합니다. GC는 세마포어가 해제될 때까지 키의 타입을 변경할 수 없으며, 모듈이 해제되기 전에 타입 등록 해제는 해당 GC 패스를 기다립니다.
검증이 성공하고 타입에 읽기 메서드가 없는 경우 -EOPNOTSUPP를 반환합니다. 이제 이 결과 이전에 임시 버퍼가 할당될 수 있으며; 할당 및 사용자 공간으로의 복사는 여전히 세마포어 외부에서 수행됩니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.