JVNDB-2026-023765 | |
LinuxのLinux Kernelにおける解放済みメモリの使用に関する脆弱性 | |
| 概要 | |
Linuxカーネルにおいて、以下の脆弱性が修正されました。net: usb: rtl8150: rtl8150_start_xmit()内のuse-after-freeを修正しました。syzbotは、usb_submit_urb()が呼び出された後に送信統計のためにskb->lenにアクセスした際、rtl8150_start_xmit()内でKASAN slab-use-after-free読み取りを報告しました。具体的には、BUG: KASAN: slab-use-after-free in rtl8150_start_xmit+0x71f/0x760 drivers/net/usb/rtl8150.c:712 という内容で、タスク kworker/0:4/5226 によるアドレス ffff88810eb7a930 のサイズ4の読み取りが発生しました。URB完了ハンドラのwrite_bulk_callback()はdev_kfree_skb_irq(dev->tx_skb)を介してskbを解放します。URBはusb_submit_urb()が呼び出し元で戻る前に別のCPUのsoftirqコンテキストで完了する可能性があるため、呼び出し元がskb->lenを読む時点でskbは既にCPUごとのcompletion_queueにキューイングされ、net_tx_action()により解放されています。具体的な流れは以下の通りです。 CPU A (送信)では dev->tx_skb = skb; そして usb_submit_urb() が呼ばれ、CPU B (USB完了softirq)では write_bulk_callback() が実行され、dev_kfree_skb_irq(dev->tx_skb) によってskbが解放されます。その後 net_tx_action() と napi_skb_cache_put() により解放処理が完了します。一方、netdev->stats.tx_bytes に対しては += skb->len; が行われ、この時にuse-after-freeの読み取りが発生していました。修正としては、URBを送信する前にskb->lenの値をキャッシュし、tx_bytesカウンタを更新する際はキャッシュした値を用いるようにしました。既存のtx_bytesのセマンティクスは保持しています。カウンタは元のフレーム長(skb->len)を追跡しており、デバイスに渡されるETH_ZLEN/USBアラインメントでパディングされた"count"値ではありません。これを変更するとユーザに見えるアカウンティングの変更となってしまうため、このuse-after-free修正の範囲外としています。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 9.8 (緊急) [その他]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/06/24 |
| 登録日 | 2026/07/16 |
| 最終更新日 | 2026/07/16 |



