🇰🇷 한글 설명
Linux 커널의 dm-crypt에서 AEAD 암호(예: capi:gcm(aes)-lmk)와 lmk IV 모드를 함께 사용하면 테이블 로드 시 커널 oops가 발생합니다. lmk가 64개의 트랜스폼을 요구하지만 AEAD는 하나만 할당되어 배열 범위를 벗어난 메모리를 읽습니다. 수정으로 AEAD 암호와 lmk IV 모드 조합을 거부합니다. 이 메모리 손상은 root 권한에서만 유발 가능하므로 보안 취약점이 아닙니다.
💡 쉬운 설명
리눅스 디스크 암호화 기능에서 특정 설정 조합을 사용하면 시스템이 오류로 멈출 수 있는 버그입니다. 관리자(root) 권한이 있어야만 발생시킬 수 있어 외부 공격에 직접 악용되지는 않습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
dm-crypt: reject the lmk IV mode with AEAD ciphers
A "capi:" table line that pairs an AEAD cipher with the lmk IV mode,
for example "capi:gcm(aes)-lmk" with the integrity:28:aead option,
causes an oops when it is loaded. lmk sets tfms_count to 64, but
crypt_alloc_tfms_aead only allocates one transform, so crypt_setkey
reads past the end of the tfms_aead array and calls crypto_aead_setkey
on the values it finds there.
lmk exists for compatibility with Loop-AES, which uses CBC, so refuse
it with an AEAD cipher rather than allocate 64 AEAD transforms. The
check cannot go in crypt_iv_lmk_ctr with the other lmk checks, because
the IV constructor runs after crypt_set_key.
Note that this is not a security bug because the memory corruption can
only be triggered by root.
📍 영향받는 시스템
dm-crypt의 lmk IV 모드와 AEAD 암호를 함께 사용하는 Linux 커널 (수정 커밋 이전 버전)
⚔️ 공격 벡터
root 권한을 가진 사용자가 AEAD 암호와 lmk IV 모드를 지정한 dm-crypt 테이블을 로드하여 커널 oops를 유발
🛡️ 대응 방법
패치된 Linux 커널 버전으로 업데이트하고, 배포판의 보안 업데이트를 적용하며, 해당 조합의 dm-crypt 설정을 사용하지 않도록 합니다.
🔧 검증 코드
커널 버전을 패치된 버전과 비교하고, lmk IV 모드를 사용하는 dm-crypt 항목이 출력되지 않으면 해당 설정이 적용되어 있지 않은 것입니다.
uname -r; grep -rE 'lmk' /etc/crypttab 2>/dev/null; dmsetup table 2>/dev/null | grep -i lmk