🇰🇷 한글 설명
Linux 커널의 CXL(Compute Express Link) 기능에서 다중 파트 Get/Set Feature 전송 시 동기화 문제가 발견되었습니다. 여러 개의 메일박스 명령으로 나뉘어 처리되는 과정에서 적절한 잠금(Lock) 메커니즘이 없어, 동시에 여러 전송이 발생할 경우 장치의 전송 컨텍스트가 손상될 수 있습니다.
💡 쉬운 설명
데이터를 여러 번에 나누어 보내는 과정에서 보호 장치가 부족하여, 동시에 다른 명령이 끼어들면 데이터가 엉망이 될 수 있는 문제입니다. 이로 인해 장치 설정이 잘못되거나 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
cxl/features: Serialize multi-part Get/Set Feature transfers
A Get or Set Feature payload larger than the mailbox payload size is
split into several mailbox commands. mbox_mutex only serializes
individual mailbox commands and is dropped between iterations of these
loops. Nothing serializes the multi-part transfer as a whole.
cxl_get_feature() and cxl_set_feature() are reachable concurrently
from fwctl (per-fd RPCs run under a read-held registration lock) and
from the EDAC scrub/ECS/repair paths, so two transfers to the same
mailbox can interleave their parts and corrupt the device's transfer
context.
Add a per-mailbox feat_mutex and hold it across the whole transfer in
both functions. It nests outside mbox_mutex (which is taken inside
cxl_internal_send_cmd()), and is taken nowhere else, so no lock-ordering
inversion is introduced.
📍 영향받는 시스템
CXL 기능을 사용하는 Linux 커널 (패치 적용 전 버전)
⚔️ 공격 벡터
동시에 여러 개의 CXL 기능 요청(Get/Set Feature)을 보내 전송 과정을 교차(Interleave)시킴으로써 장치 컨텍스트를 오염시킴
🛡️ 대응 방법
CXL 메일박스 전송 전체 과정을 보호하도록 per-mailbox feat_mutex가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이상인지 확인