注目

脆弱性 / VULNERABILITIES / LINUX KERNEL / LPE

Linuxカーネルに権限昇格の欠陥 CVE-2026-53365「VsockDrop」— 権限なしユーザがroot取得、PoC公開

Linuxカーネルのio_uringとAF_VSOCK経路に起因する権限昇格の欠陥 CVE-2026-53365 について、単一バイナリでroot取得に至るPoC「VsockDrop」が2026年8月24日に公開された。固定バッファの参照カウントが1回ずつ減算され、ピン留めされたページが解放・再利用されることで /usr/bin/su のpage-cacheを書き換える。影響はLinux 6.7から7.0.10、修正は7.0.11で提供済みだ。

攻撃手法
ソフトウェア

Linuxカーネルの権限なしローカルユーザがroot権限を取得できる欠陥「CVE-2026-53365(通称 VsockDrop)」のPoC(Proof of Concept: 概念実証コード)が、2026年8月24日にGitHubで公開された。io_uring(アイオー・ユーリング: 高速な非同期I/O機構)のzerocopy送信とAF_VSOCK(仮想マシン間通信用のソケット種別)の相互作用で、ピン留め(pin: 物理メモリに固定)されたページの参照カウントが1回の送信ごとに1ずつ減算され、最終的に解放されたページを/usr/bin/suのpage-cache(ファイル内容のメモリ上のキャッシュ)として再利用して書き換える手法だ。影響はLinux 6.7から7.0.10、修正は7.0.11で提供済みとされる。

何が起きるのか

研究者の公開したREADMEによると、io_uringSEND_ZC(zerocopy送信)で固定バッファのページをskb(Socket Buffer: カーネルがネットワーク送受信で使うバッファ構造)に添付する際、参照を取得せずSKBFL_MANAGED_FRAG_REFSフラグを立てる。これは「ページの所有権はio_uring側にあり、ネットワークスタックが参照カウントを操作してはならない」ことを示すフラグだ。

通常の解放経路skb_release_data()では同フラグが考慮され、__skb_frag_unref()によるput_page()がスキップされる。しかし**AF_VSOCKの複数skb経路(ペイロードが64KiBを超える場合)では、このフラグが考慮されず、所有していないページに対してput_page()が実行**される。1回の送信で1回の余計なput_page() が発生する。

なぜroot化に至るのか

Linuxカーネルでは**GUP_PIN_COUNTING_BIASが1024という定数でピン留めを管理する。io_uring_register_buffersで登録されたページは参照カウントが1 + 1024 = 1025** になる。プロセスがmunmap()でマッピングを解除すると参照が1減って1024になり、かつ_mapcount-1になる。

この状態で**AF_VSOCK経由の送信を1024回繰り返すと、1回ごとの余計なput_page()で参照カウントが0まで減算され、まだピン留めされているにもかかわらずページが解放されてPCP freelist(CPUごとの解放済みページの再利用リスト)**に戻る。

  • 登録時 1025 → munmap後 1024 → 送信×1024で 0(解放)
  • 解放直後に/usr/bin/suの先頭ページをpread()で読み込むと、LIFO(後入れ先出し)で同じ物理ページがsuのpage-cacheとして再取得される
  • この時点で攻撃者の固定バッファとsuのpage-cacheが同じ物理ページを指す別名(alias)状態になる
  • write_fixed/read_fixedでページ内のPT_INTERP(実行時に読み込まれるインタプリタのパス)文字列を攻撃者のローダへ書き換え
  • exec("/usr/bin/su")はsetuid-rootバイナリのため、書き換えられたインタプリタがroot権限で実行され、rootシェルを得る

ユーザ名前空間は不要で、単一の静的バイナリで再現するとされる。CoW(Copy-on-Write: 書き込み時コピー)ファイルシステムでは変更がディスクに永続化する可能性があるため、検証は所有する環境に限るべきだと研究者は注意を促している。

影響範囲と修正状況

研究者によると、欠陥はLinux 6.7で導入され、7.0.11で修正された。影響は6.7から7.0.10Ubuntu 22.04 HWEや24.04、Debian 13、Arch、openSUSE Leap/Tumbleweedの未修正環境で再現したという。NVDはCVSS 5.5(可用性への影響)と評価しているが、研究者は権限昇格(LPE: Local Privilege Escalation)としてCVSS 7.8が適切だと指摘している。いずれにせよローカルでの権限昇格が可能という位置づけは共通している。

研究者は2026年8月24日にGitHubでPoCを公開し、事前に[email protected]へ報告して上流でCVE-2026-53365として修正されたと説明している。

研究者が示す受動的な事実と注意

READMEには、修正版が上流で提供済みであることと、makeして./exploitで実行できるが、所有しないシステムで実行しないこと、/usr/bin/suのpage-cacheを汚染するリスクがあることが記載されている。緩和や更新の推奨は一次情報に明示されていないため、本稿では影響バージョンと修正バージョンの事実のみを伝える。利用しているディストリビューションのセキュリティアドバイザリで、カーネル 7.0.11以降への更新が提供されているか確認することが確実な判断材料になる。

出典

この記事は、公開情報と編集部の調査・知見をもとに構成しています。内容は公開時点の情報に基づく解説であり、個別の環境への診断・対応を保証するものではありません。重要な判断では、記事内の出典や各提供元の最新情報もご確認ください。