CVE-2026-89722 in Linux정보

요약

\~에 의해 VulDB • 2026. 09. 11.

리눅스 커널에서 다음 취약점이 해결되었습니다:

PCI/sysfs: pci_write_legacy_io()의 버퍼 오버플로우 읽기 수정

pci_write_legacy_io()는 사용자가쓰기한 바이트 수와 무관하게 kernfs 쓰기 버퍼로부터 4바이트를 로드합니다.

```c if (count != 1 && count != 2 && count != 4) return -EINVAL;

return pci_legacy_write(bus, off, *(u32 *)buf, count); ```

kernfs_fop_write_iter()는 kmalloc(len + 1)로 버퍼를 할당하므로, legacy_io sysfs 파일에 대한 1바이트 쓰기는 2바이트를 할당하게 되며, 무조건적인 u32 로드는 할당된 영역의 끝을 넘어 최대 2바이트까지 읽게 됩니다. 이는 KASAN에서 slab-out-of-bounds read로 보고됩니다. 마찬가지로, 2바이트 쓰기도 1바이트만큼 오버리드합니다.

따라서 get_unaligned_le16()과 get_unaligned_le32()를 사용하여 요청된 바이트 수만 읽고, PCI I/O 포트 공간의 바이트 순서와 일치하도록 버퍼를 리틀 엔디안으로 해석하여 처리합니다.

파워PC(PowerPC) 구현은 이전에는 제너릭 코드의 네이티브 엔디안 32비트 로드에 대해 보정하기 위해 1바이트 및 2바이트 케이스에서 값을 올바른 위치로 시프트했습니다. 그러나 이 시프트는 빅 엔디안 커널에서만 정확했습니다.

리틀 엔디안 파워PC(POWER8 이후)에서는 잘못된 바이트가 추출되었으므로, 1바이트 쓰기가 요청된 값 대신 경계 밖의 바이트를 작성하게 되었습니다. 빅 엔디안의 경우 네이티브 로드가 out_le16() 및 out_le32()로 인해 네트워크 상에서 사용자 바이트를 역순으로 처리하는 원인이 되어 2바이트 및 4바이트 쓰기에서도 문제가 발생했습니다. 리틀 엔디안 헬퍼 함수는 이러한 두 가지 문제를 모두 해결하므로, 시프트 연산은 제거됩니다.

알파(Alpha) 플랫폼에는 변경 사항이 필요하지 않습니다.

legacy_io 파일은 루트 권한만 접근 가능하며, HAVE_PCI_LEGACY를 정의하는 아키텍처인 알파와 파워PC에서만 존재합니다.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

책임이 있는

Linux

예약하다

2026. 09. 11.

모더레이션

수락

항목

VDB-402559

EPSS

0.00000

활동

낮음

출처

Do you want to use VulDB in your project?

Use the official API to access entries easily!