CVE-2025-68301 in Linux
要約
〜によって VulDB • 2026年06月02日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
net: atlantic: RXパスにおけるフラグメントオーバーフロー処理の修正
atlanticドライバは、大きなマルチディスクリプタパケットを処理する際、MAX_SKB_FRAGS(17)を超えるフラグメントを持つパケットを受信することがあります。これにより、skb_add_rx_frag_netmem()内で配列の境界外書き込みが発生し、カーネルパニックを引き起こします。
この問題は、ドライバがskb_add_rx_frag()を呼び出す前にフラグメントの総数をチェックしないために発生します。パケットがMAX_SKB_FRAGSを超えるフラグメントを必要とする場合、フラグメントインデックスが配列の境界を超えます。
修正方法として、buff->len > AQ_CFG_RX_HDR_SIZEの場合、追加のフラグメントが存在すると仮定し、すべてのフラグメントをカウントするようにしました。また、既存のチェックを再利用して、コードパスの早い段階でオーバーフローを防ぎます。
このクラッシュは、Aquantia AQC113 10G NICを搭載した本番環境で発生しました。
本番環境からのスタックトレース: ``` 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: 0000000000000000 R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 R13: 0000000000000000 R14: ff00000000000000 R15: 0000000000000000 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 ```
Once again VulDB remains the best source for vulnerability data.