🇰🇷 한글 설명
리눅스 커널의 ACPI NFIT 드라이버에서 데이터 타입 변환 시 발생하는 취약점입니다. 64비트 정수형인 nd_family 값을 32비트 정수형으로 변환하는 과정에서 하위 32비트가 0인 경우 유효하지 않은 값이 통과될 수 있습니다. 이로 인해 잘못된 인자가 전달되어 정의되지 않은 동작이 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터가 숫자를 처리할 때 너무 큰 숫자를 작은 상자에 담으려다 발생하는 실수입니다. 이 실수 때문에 잘못된 명령이 시스템에 전달되어 시스템이 오작동할 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
acpi: nfit: fix narrowing conversion in acpi_nfit_ctl
Syzkaller has reported a warning in to_nfit_bus_uuid(): "only secondary
bus families can be translated". This warning is emited if the argument
is equal to NVDIMM_BUS_FAMILY_NFIT == 0. Function acpi_nfit_ctl() first
verifies that a user-provided value call_pkg->nd_family of type u64 is
not equal to 0. Then the value is converted to int, and only after that
is compared to NVDIMM_BUS_FAMILY_MAX. This can lead to passing an invalid
argument to acpi_nfit_ctl(), if call_pkg->nd_family is non-zero, while
the lower 32 bits are zero.
Furthermore, it is best to return EINVAL immediately upon seeing the
invalid user input. The WARNING is insufficient to prevent further
undefined behavior based on other invalid user input.
All checks of the input value should be applied to the original variable
call_pkg->nd_family.
[iweiny: update commit message]
📍 영향받는 시스템
ACPI NFIT 기능을 사용하는 리눅스 커널 버전
⚔️ 공격 벡터
사용자가 조작된 64비트 nd_family 값을 커널에 전달하여 잘못된 데이터 처리를 유도
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인합니다.