🇰🇷 한글 설명
Linux 커널의 video/screen_info 코드에서 PCI 호스트 브리지 윈도우 오프셋이 screen_info의 프레임버퍼 주소에 적용되지 않아 잘못된 I/O 메모리 접근이 발생하던 문제를 수정했습니다. 펌웨어가 PCI 호스트 브리지를 재배치한 경우 프레임버퍼 주소를 PCI 버스 주소에서 CPU 주소로 올바르게 변환하도록 변경되었습니다.
💡 쉬운 설명
컴퓨터 부팅 중 그래픽 화면의 메모리 위치가 실제와 다르게 기록되어 엉뚱한 곳에 접근하는 버그가 있었습니다. 이번 수정으로 화면 메모리 위치를 올바르게 보정하도록 고쳐졌습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
video: screen_info: Relocate framebuffers behind PCI bridges
Apply PCI host-bridge window offsets to screen_info framebuffers. Fixes
invalid access to I/O memory.
Resources behind a PCI host bridge can be relocated by a certain offset
in the kernel's CPU address range used for I/O. The framebuffer memory
range stored in screen_info refers to the CPU addresses as seen during
boot (where the offset is 0). During boot up, firmware may assign a
different memory offset to the PCI host bridge and thereby relocating
the framebuffer address of the PCI graphics device as seen by the kernel.
The information in screen_info must be updated as well.
The helper pcibios_bus_to_resource() performs the relocation of the
screen_info's framebuffer resource (given in PCI bus addresses). The
result matches the I/O-memory resource of the PCI graphics device (given
in CPU addresses). As before, we store away the information necessary to
later update the information in screen_info itself.
Commit 78aa89d1dfba ("firmware/sysfb: Update screen_info for relocated
EFI framebuffers") added the code for updating screen_info. It is based
on similar functionality that pre-existed in efifb. Efifb uses a pointer
to the PCI resource, while the newer code does a memcpy of the region.
Hence efifb sees any updates to the PCI resource and avoids the issue.
v3:
- Only use struct pci_bus_region for PCI bus addresses (Bjorn)
- Clarify address semantics in commit messages and comments (Bjorn)
v2:
- Fixed tags (Takashi, Ivan)
- Updated information on efifb
📍 영향받는 시스템
패치 이전의 Linux 커널 (screen_info 프레임버퍼를 사용하는 PCI 그래픽 장치 환경)
⚔️ 공격 벡터
로컬 사용자 또는 프로세스가 잘못된 I/O 메모리 접근을 유발하여 시스템 불안정이나 정보 노출을 일으킬 수 있음
🛡️ 대응 방법
배포판 제공 최신 커널 업데이트를 설치하고 재부팅
🔧 검증 코드
출력된 커널 버전이 배포판의 보안 권고에서 이 CVE가 수정된 버전 이상인지 확인 (수정 버전은 배포판 보안 공지에서 확인)