2024년 5월 출시된 리눅스 커널 6.9 버전부터 노트북을 절전(suspend) 모드로 전환할 때, LUKS(Linux Unified Key Setup) 전체 디스크 암호화 키가 메모리에서 안전하게 삭제되지 않는 심각한 보안 문제가 발생했습니다. 이는 노트북이 분실되거나 도난당했을 때 데이터를 보호하기 위해 사용되는 암호화의 핵심 기능이 제대로 작동하지 않았음을 의미합니다. 완전히 시스템을 종료하는 경우에는 문제가 없지만, 대다수 사용자가 노트북을 자주 절전 모드로 두는 현실을 고려할 때 잠재적 위험이 컸습니다.
이번 문제의 원인은 리눅스 커널 6.9에 포함된 블록 장치 접근 리팩터링(md: port block device access to file) 커밋 때문입니다. 이 변경 자체는 합리적이었지만, 암호화 코드와 예상치 못한 방식으로 상호작용하며 `thread-keyring(7)` 매뉴얼 페이지에서 약속한 키링(keyring)의 수명 주기를 깨뜨렸습니다. 즉, 스레드가 종료되면 키링이 파괴되어야 한다는 전제가 지켜지지 않은 것입니다. 이 취약점은 데비안(Debian)의 `cryptsetup-suspend` 포트를 정리하던 중 `/proc/keys` 항목에서 암호화 키가 남아있는 것을 발견하면서 드러났고, QEMU 가상 머신 메모리 덤프를 통해 실제 LUKS 볼륨 키가 지워지지 않고 남아있음이 확인되었습니다. 제안된 수정은 단 한 줄짜리 패치로, 현재는 NixOS 통합 테스트와 `cryptsetup` 경고 패치 등 후속 조치가 진행 중입니다.
이 사건은 겉으로는 정상 작동하는 것처럼 보이는 보안 기능도 실제 메모리 검증 없이는 실패를 놓치기 쉽다는 점을 다시 한번 일깨워줍니다. 특히 `luksSuspend`와 같이 메모리에서 키를 지우도록 설계된 기능이 커널 변경으로 인해 조용히 오작동할 수 있다는 것은 중요한 시사점을 던집니다. 비록 대부분의 리눅스 배포판 기본 설정에서는 절전 모드 시 암호화 키가 메모리에 남아있지만, `luksSuspend`와 같은 고급 보안 기능을 사용하는 사용자들에게는 치명적인 문제였습니다. 이번 발견은 보안 기능의 실제 작동 여부를 면밀히 검증하는 자동화된 테스트의 중요성을 강조하며, 향후 유사한 회귀(regression)를 방지하는 데 기여할 것입니다.