🇰🇷 한글 설명
Linux 커널의 bnxt_en 드라이버에서 bnxt_shutdown() 호출 시 패킷 DMA만 중단되고 트레이스 로깅을 위한 FW DMA가 계속 실행되는 취약점이 발견되었습니다. 이 상태에서 kexec를 통해 새 커널로 전환할 경우, 지속되는 DMA가 새 커널의 메모리를 오염시킬 수 있습니다.
💡 쉬운 설명
네트워크 장치가 꺼질 때 일부 작업이 완전히 멈추지 않아, 새로운 시스템이 시작될 때 기존 장치가 메모리를 망가뜨릴 수 있는 문제입니다. 이는 시스템의 안정성을 해치고 데이터 오류를 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bnxt_en: Shutdown FW DMA in bnxt_shutdown()
The netif_close() call in bnxt_shutdown() only stops packet DMA. There
may be FW DMA for trace logging (recently added) that will continue. If
we kexec to a new kernel, the DMA will corrupt memory in the new kernel.
Add bnxt_hwrm_func_drv_unrgtr() to unregister the driver from the FW.
This will stop the FW DMA. In case the call fails, call pcie_flr() to
reset the function and stop the DMA.
📍 영향받는 시스템
bnxt_en 드라이버를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
로컬 공격자가 kexec를 사용하여 커널을 교체할 때 발생할 수 있는 메모리 오염
🛡️ 대응 방법
bnxt_hwrm_func_drv_unrgtr()를 사용하여 드라이버를 등록 해제하거나 pcie_flr()를 호출하여 DMA를 강제 중단하도록 커널 패치 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 최신 패치 버전인지 확인