CVE-2024-26859 in Linux
요약
\~에 의해 VulDB • 2026. 05. 11.
리눅스 커널에서 다음 취약점이 해결되었습니다:
net/bnx2x: page_pool에서 해제된 페이지에 대한 접근 방지
EEH 오류 처리 중 시스템 충돌을 유발하는 Race Condition 수정
EEH 오류 복구 중 bnx2x 드라이버의 전송 타임아웃 로직이 리셋 작업 처리 시 Race Condition을 유발할 수 있습니다. bnx2x_tx_timeout()은 bnx2x_sp_rtnl_task()를 통해 리셋 작업을 예약하며, 이는 궁극적으로 bnx2x_nic_unload()로 이어집니다. bnx2x_nic_unload() 함수 내에서는 bnx2x_free_rx_sge_range()를 사용하여 SGE(Segment Descriptor)가 해제됩니다. 그러나 이는 bnx2x_io_slot_reset()를 사용하여 장치를 리셋하려는 EEH 드라이버의 시도와 겹칠 수 있으며, 이 함수 역시 SGE 해제를 시도합니다. 이 Race Condition은 bnx2x_free_rx_sge()에서 해제된 메모리 위치를 접근함으로써 시스템 충돌을 초래할 수 있습니다.
799 static inline void bnx2x_free_rx_sge(struct bnx2x *bp, 800 struct bnx2x_fastpath *fp, u16 index) 801 {
802 struct sw_rx_page *sw_buf = &fp->rx_page_ring[index];
803 struct page *page = sw_buf->page; .... 여기서 sw_buf는 이전 스레드에 의해 dma_unmap_page() 호출 후 NULL로 설정되었습니다.
EEH: 시작: 'slot_reset' PCI 0011:01:00.0#10000: EEH: bnx2x->slot_reset() 호출 bnx2x: [bnx2x_io_slot_reset:14228(eth1)] IO 슬롯 리셋 초기화 중...
bnx2x 0011:01:00.0: 장치 활성화 (0140 -> 0142) bnx2x: [bnx2x_io_slot_reset:14244(eth1)] IO 슬롯 리셋 --> 드라이버 언로드
Kernel attempted to read user page (0) - exploit attempt? (uid: 0) BUG: Kernel NULL pointer dereference on read at 0x00000000 Faulting instruction address: 0xc0080000025065fc Oops: Kernel access of bad area, sig: 11 [#1]
..... Call Trace: [c000000003c67a20] [c00800000250658c] bnx2x_io_slot_reset+0x204/0x610 [bnx2x] (unreliable)
[c000000003c67af0] [c0000000000518a8] eeh_report_reset+0xb8/0xf0
[c000000003c67b60] [c000000000052130] eeh_pe_report+0x180/0x550
[c000000003c67c70] [c00000000005318c] eeh_handle_normal_event+0x84c/0xa60
[c000000003c67d50] [c000000000053a84] eeh_event_handler+0xf4/0x170
[c000000003c67da0] [c000000000194c58] kthread+0x1c8/0x1d0
[c000000003c67e10] [c00000000000cf64] ret_from_kernel_thread+0x5c/0x64
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.