🇰🇷 한글 설명
Linux 커널의 Cortina 이더넷 드라이버에서 패킷 조립 과정 중 파편 카운터(frag_nr)가 초기화되는 취약점이 발견되었습니다. 링 버퍼가 비어있는 상태로 poll 주기가 종료될 경우, 다음 호출 시 카운터가 0으로 리셋되어 데이터 무결성 문제가 발생할 수 있습니다.
💡 쉬운 설명
네트워크 데이터를 조립할 때 숫자를 세는 과정에서 실수가 발생하여 데이터가 제대로 합쳐지지 않을 수 있는 문제입니다. 이로 인해 네트워크 통신에 오류가 생기거나 시스템이 불안정해질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: ethernet: cortina: Carry over frag counter
The gmac_rx() NAPI poll function assembles packets in an
SKB from a ring buffer.
If the ring buffer gets completely emptied during a poll cycle,
we exit gmac_rx(), but the packet is not yet completely
assembled in the SKB, yet the fragment counter frag_nr is
reset to zero on the next invocation.
Solve this by making the RX fragment counter a part of the
port struct, and carry it over between invocations.
Reset the fragment counter only right after calling
napi_gro_frags(), on error (after calling napi_free_frags())
or if stopping the port.
Reset it in some place where not strictly necessary just to
emphasize what is going on.
This was found by Sashiko during normal patch review.
📍 영향받는 시스템
Cortina 이더넷 드라이버를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
특수하게 조작된 네트워크 패킷을 전송하여 드라이버의 패킷 조립 로직을 교란
🛡️ 대응 방법
커널 패치를 통해 파편 카운터를 포트 구조체로 이동시켜 호출 간 상태를 유지하도록 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 취약점이 해결된 최신 패치 버전인지 확인합니다.