🇰🇷 한글 설명
Linux 커널의 QAT(QuickAssist Technology) 암호화 드라이버에서 RSA CRT 구성 요소의 길이를 검증하지 않아 발생하는 취약점입니다. CRT 구성 요소가 할당된 DMA 버퍼 크기보다 클 경우, 메모리 복사 과정에서 언더플로우가 발생하여 버퍼 범위를 벗어난 메모리 쓰기(Out-of-bounds write)가 발생할 수 있습니다.
💡 쉬운 설명
암호화 키를 처리하는 과정에서 데이터 크기를 제대로 확인하지 않아, 정해진 메모리 공간보다 더 많은 데이터를 쓰려고 시도하는 문제입니다. 이로 인해 시스템의 메모리가 오염되어 보안이 뚫리거나 시스템이 멈출 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
crypto: qat - validate RSA CRT component lengths
The generic RSA key parser (rsa_helper.c) bounds each CRT component (p,
q, dp, dq, qinv) by the modulus size n_sz, but qat_rsa_setkey_crt()
allocates half-size DMA buffers (key_sz / 2) and right-aligns each
component with:
memcpy(dst + half_key_sz - len, src, len)
When a CRT component is larger than half_key_sz the subtraction
underflows and memcpy writes past the DMA buffer, causing memory
corruption.
Add a len > half_key_sz check next to the existing !len check for each
of the five CRT components so the driver falls back to the non-CRT path
instead of writing out of bounds.
📍 영향받는 시스템
Intel QAT 드라이버를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
조작된 RSA CRT 구성 요소를 포함한 키를 암호화 드라이버에 전달하여 메모리 오염 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 CRT 구성 요소 길이 검증 로직 적용
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.