Linux KernelのLPE脆弱性(PinTheft: CVE未アサイン:RDSモジュール)

05/20/2026にLinux KernelのLPE脆弱性(PinTheft: CVE未アサイン)が公開されました。RDSモジュールが有効になっている必要があり、影響範囲は限定されそうです。今回はこちらの脆弱性の概要と、各ディストリビューションの対応について纏めます。

[過去関連リンク(最新5件)]

一次情報源

CVSS/プライオリティ

  • CVE未アサインのため、後ほど更新します。

修正方法

各ディストリビューションの情報を確認してください。

概要(詳細は一次情報源をご確認ください)

またV12 security teamによりみつけられた脆弱性になります。

今回のLPEが発現する前提条件としては

  • CONFIG_RDS
  • CONFIG_RDS_TCP
  • CONFIG_IO_URING
  • io_uring_disabled=0
  • SUID-rootバイナリにRead権限でアクセスできること

となるため、RDSが組み込まれていない/モジュールとしてロードされていないLinux Kernelは対象外になります。

今回のバグは、RDSのzerocopy送信パスに存在していました。rds_message_zcopy_from_user()関数は、ユーザーページを一回に付き1pageずつ固定します。後続のページでエラーが発生すると、エラーパスは既に固定されていたpageを破棄しますが、zcopy notifierがクリアされた後もscatterlistのエントリとエントリ数が有効なまま残っているため、その後のRDSメッセージクリーンアップ処理が破棄を行います。これにより、zerocopy送信が失敗するたびに、最初のページから1つの参照が奪われる可能性があります。

PoCではio_uringを用いて、このrefcountバグを活用しています。anonymous pageを固定バッファとして登録し、そのページに1024 referenceのFOLL_PINバイアスを設定します。これにより、RDS zerocopy送信の失敗によってこれらの参照を奪い取ってpageを解放し、SUID-rootバイナリのページキャッシュとして再利用し、staleのio_uring固定バッファページポインタを使用して、そのページキャッシュを小さなELFペイロードで上書きします。これにより、SUID-rootバイナリを実行すると、ルートシェルに移行します。

PoC

一次情報源でPoCが公開されています。

緩和策

RDSに存在するバグになるため、RDSモジュールをunloadすることで迂回策になります。

一次情報源にも有りますが、修正済みのLinux Kernelが提供されるまでは、下記のようにモジュールを読み込まないようにしましょう。

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

対象となるディストリビューション

  • RDSがデフォルトで入っているかはこちらで確認できます
  • 自分のLinux上でどうなっているかは、/boot以下のConfig-XXを見たほうが確実です。
cat /boot/config-$(uname -r) | less

主なディストリビューションの対応方法

詳細は、各ディストリビューションの提供元にご確認ください

CVEがアサインされ次第、情報を更新します。

    対処方法

    各ディストリビューションの案内に従い、アップデートを行ってください。

    [参考]

    タイトルとURLをコピーしました