🔍 CVE-2025-68301

9.8
CVSS Score
CRITICAL
2025-12-16
2026-10-14 16:10
✅ 완료

🇰🇷 한글 설명

Linux 커널의 atlantic 네트워크 드라이버에서 대형 멀티 디스크립터 패킷을 처리할 때 조각(fragment) 개수를 제대로 검증하지 않아 발생하는 취약점입니다. 이로 인해 MAX_SKB_FRAGS 범위를 초과하는 쓰기 작업이 발생하여 커널 패닉(시스템 중단)을 유발할 수 있습니다.

💡 쉬운 설명

네트워크 카드가 한 번에 너무 많은 데이터 조각을 보내면, 컴퓨터의 메모리 관리 범위를 넘어서는 데이터가 기록되어 시스템이 갑자기 멈추는 문제입니다. 마치 정해진 칸보다 더 많은 물건을 억지로 밀어 넣어 상자가 터지는 것과 같습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: net: atlantic: fix fragment overflow handling in RX path The atlantic driver can receive packets with more than MAX_SKB_FRAGS (17) fragments when handling large multi-descriptor packets. This causes an out-of-bounds write in skb_add_rx_frag_netmem() leading to kernel panic. The issue occurs because the driver doesn't check the total number of fragments before calling skb_add_rx_frag(). When a packet requires more than MAX_SKB_FRAGS fragments, the fragment index exceeds the array bounds. Fix by assuming there will be an extra frag if buff->len > AQ_CFG_RX_HDR_SIZE, then all fragments are accounted for. And reusing the existing check to prevent the overflow earlier in the code path. This crash occurred in production with an Aquantia AQC113 10G NIC. Stack trace from production environment: ``` RIP: 0010:skb_add_rx_frag_netmem+0x29/0xd0 Code: 90 f3 0f 1e fa 0f 1f 44 00 00 48 89 f8 41 89 ca 48 89 d7 48 63 ce 8b 90 c0 00 00 00 48 c1 e1 04 48 01 ca 48 03 90 c8 00 00 00 <48> 89 7a 30 44 89 52 3c 44 89 42 38 40 f6 c7 01 75 74 48 89 fa 83 RSP: 0018:ffffa9bec02a8d50 EFLAGS: 00010287 RAX: ffff925b22e80a00 RBX: ffff925ad38d2700 RCX: fffffffe0a0c8000 RDX: ffff9258ea95bac0 RSI: ffff925ae0a0c800 RDI: 0000000000037a40 RBP: 0000000000000024 R08: 0000000000000000 R09: 0000000000000021 R10: 0000000000000848 R11: 0000000000000000 R12: ffffa9bec02a8e24 R13: ffff925ad8615570 R14: 0000000000000000 R15: ffff925b22e80a00 FS: 0000000000000000(0000) GS:ffff925e47880000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: ffff9258ea95baf0 CR3: 0000000166022004 CR4: 0000000000f72ef0 PKRU: 55555554 Call Trace: <IRQ> aq_ring_rx_clean+0x175/0xe60 [atlantic] ? aq_ring_rx_clean+0x14d/0xe60 [atlantic] ? aq_ring_tx_clean+0xdf/0x190 [atlantic] ? kmem_cache_free+0x348/0x450 ? aq_vec_poll+0x81/0x1d0 [atlantic] ? __napi_poll+0x28/0x1c0 ? net_rx_action+0x337/0x420 ``` Changes in v4: - Add Fixes: tag to satisfy patch validation requirements. Changes in v3: - Fix by assuming there will be an extra frag if buff->len > AQ_CFG_RX_HDR_SIZE, then all fragments are accounted for.

📍 영향받는 시스템

Aquantia AQC113 10G NIC를 사용하는 Linux 커널 시스템

⚔️ 공격 벡터

조작된 대형 멀티 디스크립터 네트워크 패킷을 전송하여 발생

🛡️ 대응 방법

atlantic 드라이버의 조각 개수 검증 로직이 포함된 최신 Linux 커널로 업데이트

🔧 검증 코드

현재 실행 중인 커널 버전을 확인하여 취약점이 수정된 최신 패치 버전인지 확인합니다.

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel