🇰🇷 한글 설명
Linux 커널의 ice 드라이버에서 ice_set_ringparam() 함수 호출 중 오류가 발생할 경우 NULL 포인터 역참조가 발생할 수 있는 취약점입니다. ICE_TX_RING_FLAGS_TXTIME 비트가 설정된 상태에서 tx_ring 설정이 실패하면, 정리 과정에서 이미 해제된 tstamp_ring에 접근하여 시스템 충돌을 유발할 수 있습니다.
💡 쉬운 설명
네트워크 장치 설정 중 오류가 발생하면 컴퓨터의 핵심 부분인 커널이 갑자기 멈추거나 꺼질 수 있는 문제입니다. 특정 설정 값이 남아있는 상태에서 잘못된 메모리 주소를 참조하여 발생하는 오류입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ice: fix potential NULL pointer deref in error path of ice_set_ringparam()
ice_set_ringparam nullifies tstamp_ring of temporary tx_rings, without
clearing ICE_TX_RING_FLAGS_TXTIME bit.
When ICE_TX_RING_FLAGS_TXTIME is set and the subsequent
ice_setup_tx_ring() call fails, a NULL pointer dereference could happen
in the unwinding sequence:
ice_clean_tx_ring()
-> ice_is_txtime_cfg() == true (ICE_TX_RING_FLAGS_TXTIME is set)
-> ice_free_tx_tstamp_ring()
-> ice_free_tstamp_ring()
-> tstamp_ring->desc (NULL deref)
Clear ICE_TX_RING_FLAGS_TXTIME bit to avoid the potential issue.
Note that this potential issue is found by manual code review.
Compile test only since unfortunately I don't have E830 devices.
📍 영향받는 시스템
ice 드라이버를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
특정 네트워크 파라미터(TXTIME 설정 등)를 조작하여 드라이버의 오류 경로를 유도하는 방식
🛡️ 대응 방법
ice_set_ringparam() 함수에서 오류 발생 시 ICE_TX_RING_FLAGS_TXTIME 비트를 명확히 해제하도록 커널 패치 적용
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 수정된 패치 버전인지 확인합니다.