🇰🇷 한글 설명
Linux 커널의 ice 드라이버에서 E810 장치의 저지연 펌웨어 인터페이스를 사용할 때 발생하는 취약점입니다. Tx 타임스탬프 인터럽트가 드라이버 리셋 로직과 경합할 경우, 초기화되지 않은 트래커에 접근하여 NULL 포인터 역참조 또는 Use-After-Free 오류가 발생할 수 있습니다.
💡 쉬운 설명
네트워크 카드가 재설정되는 과정에서 데이터 처리 순서가 꼬여 시스템이 갑자기 멈추거나 오류가 발생할 수 있는 문제입니다. 특정 하드웨어 기능을 사용할 때 메모리 관리 오류로 인해 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ice: fix NULL access of tx->in_use in ice_ptp_ts_irq
The E810 device has support for a "low latency" firmware interface to
access and read the Tx timestamps. This interface does not use the standard
Tx timestamp logic, due to the latency overhead of proxying sideband
command requests over the firmware AdminQ.
The logic still makes use of the Tx timestamp tracking structure,
ice_ptp_tx, as it uses the same "ready" bitmap to track which Tx
timestamps complete.
Unfortunately, the ice_ptp_ts_irq() function does not check if the tracker
is initialized before its first access. This results in NULL dereference or
use-after-free bugs similar to the following:
[245977.278756] BUG: kernel NULL pointer dereference, address: 0000000000000000
[245977.278774] RIP: 0010:_find_first_bit+0x19/0x40
[245977.278796] Call Trace:
[245977.278809] ? ice_misc_intr+0x364/0x380 [ice]
This can occur if a Tx timestamp interrupt races with the driver reset
logic.
Fix this by only checking the in_use bitmap (and other fields) if the
tracker is marked as initialized. The reset flow will clear the init field
under lock before it tears the tracker down, thus preventing any
use-after-free or NULL access.
📍 영향받는 시스템
Linux kernel (ice driver 사용 및 E810 장치 탑재 시스템)
⚔️ 공격 벡터
드라이버 리셋 로직과 Tx 타임스탬프 인터럽트 간의 레이스 컨디션 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 ice 드라이버의 초기화 체크 로직을 적용해야 합니다.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인합니다.