LinuxカーネルのRDS 脆弱性「PinTheft」のPoCが公開

セキュリティニュース

投稿日時: 更新日時:

LinuxカーネルのRDS 脆弱性「PinTheft」のPoCが公開

PinTheftはローカルの未権限ユーザーがレースコンディションを必要とせず信頼性高くrootシェルを取得できる深刻な脆弱性ですが、悪用にはRDSカーネルモジュールがロードされていることが前提条件です。V12 Securityの検証では主要なLinuxディストリビューションの中でRDSがデフォルトで有効・自動ロード可能なのはArch Linuxのみであることが確認されており、他のディストリビューション(Ubuntu・Debian・RHEL等)はRDSモジュールが自動ロードをブロックされているかビルド対象から除外されています。

カーネルパッチは2026年5月5日にnetdevカーネルメーリングリストへ投稿済みです。PoC公開はパッチ適用の確認後に行われましたが、まだパッチを適用していないArch Linuxシステムは即座にリスクにさらされます。なおCVEはまだ割り当てられておらず、自動脆弱性スキャナーによる検出が困難な状態です。

この記事のサマリー

  • 脆弱性名:PinTheft(CVE未割り当て)
  • 発見者:Aaron Esau / V12 Security チーム
  • PoCエクスプロイト公開日:2026年5月20日
  • カーネルパッチ投稿日:2026年5月5日(netdev kernel mailing list)
  • 脆弱性の種類:Linuxカーネル RDS(Reliable Datagram Sockets)のゼロコピー送信パスにおけるダブルフリー(double-free)
  • 根本原因rds_message_zcopy_from_user()関数のバグ。Linuxカーネルバージョン4.17(2018年)以来潜在していた。
  • 攻撃の仕組み:RDSゼロコピー送信のダブルフリーを利用してFOLL_PIN参照を窃取→ io_uringの固定バッファを経由してページキャッシュを上書き→ SUID-rootバイナリをメモリ上で書き換え→ rootシェル取得。
  • 悪用の前提条件:①RDSカーネルモジュールがロードされていること(主要ディストリビューションでデフォルトはArch Linuxのみ)、②io_uringが有効であること、③読み取り可能なSUID-rootバイナリが存在すること、④x86_64アーキテクチャであること。
  • 攻撃の信頼性:レースコンディション不要・信頼性高く・繰り返し可能。
  • CVEの状況未割り当て。NVDエントリなし・CVSSスコアなし。自動脆弱性スキャナーによる検出が困難。
  • 実攻撃での悪用:現時点では未確認。
  • 関連する最近のLPE脆弱性群:Fragnesia(CVE-2026-46300)・Dirty Frag・DirtyDecrypt・Copy Fail(CVE-2026-31431)・Pack2TheRoot(CVE-2026-41651)——1か月以内で5件目の重大Linux LPE。

脆弱性の技術詳細—ダブルフリーからrootシェルまで

根本原因:rds_message_zcopy_from_user()のバグ

PinTheftの根本原因はLinuxカーネルのRDSサブシステムにあるrds_message_zcopy_from_user()関数に存在します。

V12 Securityによる技術解説を要約すると以下の通りです。RDSゼロコピー送信パスはユーザーページを1ページずつピン留め(pin)します。後のページでページフォルトが発生した場合、エラーパスはすでにピン留め済みのページを解放します。しかしscatterlistのエントリとエントリカウントはzcopyノーティファイアがクリアされた後も残ったままになるため、RDSメッセージのクリーンアップが再度ページを解放してしまいます。ゼロコピー送信が1回失敗するたびに、最初のページから参照を1つ盗むことができます。これが「ダブルフリー(double-free)」脆弱性です。

io_uringを使った権限昇格の連鎖

V12 SecurityのPoCエクスプロイトはFOLL_PIN参照の窃取を繰り返し、io_uringに盗んだページポインターを保持させます。その後io_uringの固定バッファを利用してページキャッシュを書き換えることで、SUID-rootバイナリ(例:/usr/bin/su)をメモリ上で改ざんし、rootシェルを取得します。この攻撃はレースコンディションを一切必要とせず、信頼性が高く繰り返し可能である点が特に危険です。

なぜArch Linuxだけが問題なのか

V12 Securityが主要なLinuxディストリビューションを検証した結果、RDSカーネルモジュールがデフォルトで自動ロード可能(つまりPinTheftの悪用が可能)なのはArch Linuxのみでした。Ubuntu・Debian・RHEL・CentOS・Fedora等では、RDSモジュールの自動ロードがブロックされているかモジュール自体がビルド対象から除外されています。

Arch Linuxが特にリスクが高い理由として、開発者向けワークステーション・研究環境・カスタムサーバーに不均衡に多く採用されていることが挙げられます。これらの環境ではローカルユーザーアクセスが一般的——開発者が直接ログインし、ワークステーションを共有し、あるいはマルチユーザーの開発サーバーを運用している——ため、「ローカルユーザー」という攻撃の前提条件が頻繁に満たされます。


対応すべきこと——パッチ適用またはRDSモジュールの無効化

推奨対応①:最新カーネルへの更新

Arch Linuxユーザーは直ちに最新のカーネルアップデートをインストールしてください。カーネルパッチは2026年5月5日にnetdev mailing listに投稿済みです(lore.kernel.org/netdev/[email protected]/)。

推奨対応②:RDSモジュールの無効化(即時緩和策)

直ちにパッチを適用できない場合は、以下のコマンドでRDSモジュールをブロックしてください。

rmmod rds_tcp rds
printf 'install rds /bin/false\ninstall rds_tcp /bin/false\n' > /etc/modprobe.d/pintheft.conf

現在RDSモジュールがロードされているかどうかを確認するには以下のコマンドを実行してください。

lsmod | grep rds

io_uringの追加対策(カーネル6.6以降)

カーネル6.6以降でio_uringを使用しない環境であれば、以下のsysctl設定でio_uringを無効化する追加の緩和策も有効です。

sysctl -w kernel.io_uring_disabled=1

「CVE未割り当て」という見えないリスク

PinTheftにはまだCVEが割り当てられておらず、NVDエントリもCVSSスコアも存在しません。この状態は、自動脆弱性スキャナーが本脆弱性を検出できないことを意味します。企業のパッチ管理プロセスでCVEをトリガーとして動いている組織は、本脆弱性を見落とす可能性があります。

2026年5月に続発するLinuxローカル権限昇格脆弱性

IT-Connectが指摘するように、PinTheftはわずか1か月以内に発覚した5件目の重大なLinuxローカル権限昇格(LPE)脆弱性です。

脆弱性名 CVE 備考
Dirty Frag 5月初旬発覚
DirtyDecrypt Dirty Fragに関連
Copy Fail CVE-2026-31431 LPE
Fragnesia CVE-2026-46300 5月13日以前の全カーネルが対象・Dirty Fragの関連
PinTheft 未割り当て Arch Linuxが主要ターゲット

この短期間での連続発見は、Linuxカーネルのメモリ管理・I/Oサブシステムへのセキュリティ研究の集中と、定期的なカーネルアップデートの重要性を改めて示しています。

参考情報(1次ソース)