🇰🇷 한글 설명
Linux 커널의 dax/fsdev 구성 요소에서 물리 주소를 가상 주소로 변환할 때 잘못된 산술 연산을 사용하여 잘못된 커널 가상 주소를 생성하는 취약점이 발견되었습니다. 특히 물리적 간격이 있는 멀티 레인지 장치에서 선형 오프셋을 더하는 방식이 잘못된 주소를 참조하게 만듭니다. 이를 해결하기 위해 직접 매핑을 사용하는 __va(phys) 방식으로 수정되었습니다.
💡 쉬운 설명
컴퓨터의 메모리 주소를 계산하는 과정에서 수학적 오류로 인해 엉뚱한 메모리 위치를 가리키는 버그가 있었습니다. 이로 인해 데이터가 잘못된 곳에 저장되거나 시스템이 불안정해질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
dax/fsdev: use __va(phys) for kaddr in direct_access
Use __va(phys) instead of virt_addr + linear_offset for the kaddr
return in __fsdev_dax_direct_access(). The previous code added a
device-linear byte offset to virt_addr (which is __va of ranges[0]),
but for multi-range devices with physical gaps between ranges, this
linear arithmetic crosses the gap and produces a wrong kernel virtual
address. Using __va(phys) where phys comes from dax_pgoff_to_phys()
is correct for any range layout because the direct map translates
each physical address independently.
This leaves dev_dax->virt_addr write-only, so remove the field
(suggested by Dave Jiang).
📍 영향받는 시스템
Linux Kernel (dax/fsdev 관련 모듈을 사용하는 시스템)
⚔️ 공격 벡터
물리적 주소 간격이 존재하는 멀티 레인지 장치를 사용하는 환경에서 잘못된 메모리 주소 참조 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.