🇰🇷 한글 설명
Linux 커널의 igb 드라이버에서 MAX_SKB_FRAG 값이 클 경우 전송(TX) 시 데이터 페이로드가 손상되는 취약점입니다. 드라이버가 링 레이아웃을 선택할 때 공유 정보 크기를 적절히 고려하지 않아 발생하며, 특정 설정에서 데이터 무결성이 깨질 수 있습니다.
💡 쉬운 설명
인터넷 데이터를 주고받는 장치 드라이버가 너무 많은 데이터를 한꺼번에 처리하려다 데이터 내용이 엉망이 되는 문제입니다. 이로 인해 네트워크 연결이 끊기거나 데이터가 잘못 전달될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
igb: cope with large MAX_SKB_FRAGS
Sabrina reports that the igb driver does not cope well with large
MAX_SKB_FRAG values: setting MAX_SKB_FRAG to 45 causes payload
corruption on TX.
An easy reproducer is to run ssh to connect to the machine. With
MAX_SKB_FRAGS=17 it works, with MAX_SKB_FRAGS=45 it fails. This has
been reported originally in
https://bugzilla.redhat.com/show_bug.cgi?id=2265320
The root cause of the issue is that the driver does not take into
account properly the (possibly large) shared info size when selecting
the ring layout, and will try to fit two packets inside the same 4K
page even when the 1st fraglist will trump over the 2nd head.
Address the issue by checking if 2K buffers are insufficient.
📍 영향받는 시스템
igb 드라이버를 사용하는 Linux 커널 시스템 (MAX_SKB_FRAG 설정이 높은 경우)
⚔️ 공격 벡터
직접적인 원격 공격보다는 특정 네트워크 설정이나 대량의 패킷 전송을 통해 데이터 손상을 유도할 수 있음
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 igb 드라이버의 버그를 수정해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 최신 패치 버전인지 확인