PinTheftはLinuxカーネルのRDSサブシステムに存在するローカル権限昇格(LPE)脆弱性で、zerocopyのダブルフリーとio uring固定バッファを組み合わせてページキャッシュを書き換え、root権限取得を可能にする。[1][5][12] 攻撃にはローカル実行権限、脆弱なカーネル、RDSモジュールの利用可能状態、io uring固定バッファの使用、そしてSUID rootバイナリの存在など複数条件が必要。[3][5][14] 対策としてはカーネルのアップデート、RDSモジュールの無効化、非特権ユーザーのio uring利用制限、不要なSUIDバイナリの削減が推奨される。[1][6]

Create a landscape editorial hero image for this Studio Global article: What is the “PinTheft” Linux kernel privilege escalation vulnerability, how does the exploit work (including the RDS zerocopy double‑free bu. Article summary: PinTheft is a recently disclosed Linux local privilege escalation affecting the kernel’s RDS subsystem, where an RDS zerocopy reference-count/double-free bug can be chained with io_uring fixed buffers to overwrite page-c. Topic tags: general, general web. Reference image context from search candidates: Reference image 1: visual subject "# Re: PinTheft Linux LPE. > > v12-security have shared a new Linux LPE today, PinTheft [0]. > > > PinTheft is a Linux local privilege escalation exploit for an RDS zerocopy double-" source context "Re: PinTheft Linux LPE - oss-sec" Reference image 2: visual subject "# PinTheft: New Linux Exploit Steals Kernel References to Root
Linuxカーネルで最近報告された 「PinTheft」 は、ローカルユーザーが root権限を取得できる可能性のある権限昇格(Local Privilege Escalation: LPE)脆弱性です。問題はカーネルのネットワーク機能の一つである RDS(Reliable Datagram Sockets)サブシステムに存在し、io_uring の固定バッファ機能と組み合わせることで ページキャッシュの内容を書き換える攻撃へ発展します。
この手法では、最終的に SUID-rootバイナリのキャッシュ内容を改変し、root権限付きで任意コードを実行させることが可能になります。
研究者によると、この脆弱性は V12 Securityチームの Aaron Esau 氏によって発見され、修正パッチ公開後に PoC(概念実証)エクスプロイトも公開されました。
問題の中心は、Linuxカーネルの RDS(Reliable Datagram Sockets) にあります。これは主に InfiniBandなどの高性能クラスタ環境や分散システムで利用されるネットワークプロトコルです。
脆弱性は **RDSの「zerocopy送信処理」**に存在します。zerocopyは、ユーザー空間メモリから直接データを送信し、余分なメモリコピーを避けることで性能を向上させる仕組みです。
この処理で使われる rds_message_zcopy_from_user() 関数は、送信前にユーザーメモリのページを1枚ずつ「pin(固定)」します。しかし途中で ページフォルトが発生した場合のエラーハンドリングに欠陥があり、既に固定されているページを誤って解放してしまうケースがあります。
その結果、次のような状態が生まれます。
このメモリ管理の破綻が、権限昇格の足がかりになります。
研究者が公開した攻撃チェーンは、複数のカーネル機能を組み合わせて成立します。
攻撃者はRDSの脆弱なコードパスを実行させ、ページピンニング中にページフォルトを誘発します。
その結果、エラー処理で 既に使用中のページが誤って解放され、カーネル内部のメモリ状態が破壊されます。
次に攻撃者は **io_uring の fixed buffers(固定バッファ)**を利用します。これは高性能非同期I/Oのために、ユーザー空間のメモリをカーネルに登録する仕組みです。
攻撃者が細かく制御することで、先ほど解放された物理ページを再割り当てさせることができます。
再利用されたページが **ページキャッシュ(ファイルデータのメモリキャッシュ)**に対応している場合、攻撃者は次のことが可能になります。
つまり **ページキャッシュを書き換える原始操作(overwrite primitive)**を得ることになります。
公開された攻撃では、この能力を使って SUID-root実行ファイルのキャッシュ内容を書き換えます。
SUIDファイルは通常、実行時に 所有者(root)の権限で動作します。ページキャッシュの内容が改変された状態でその実行ファイルが読み込まれると、
理論的には多くのLinux環境で成立し得ますが、実際の影響度は設定によって大きく変わります。
公開されたPoCは Arch Linux環境で動作確認されており、早期の検証対象になりました。
理由としては以下が挙げられます。
どのディストリビューションでも、以下の条件が揃えば理論上影響を受けます。
報告では、次のディストリビューションの 標準設定ではRDSが有効でない場合が多いとされています。
ただし実際の影響は カーネル設定やモジュール構成次第のため、環境ごとに確認が必要です。
CloudLinuxの検証では、公開されたPoCは同プラットフォームでは 影響を受けないことが確認されたと報告されています。
PinTheftが成立するには複数の条件が必要です。
これらが揃わない場合、攻撃は成立しないか、難易度が大きく上がります。
カーネル更新後は 再起動しないと修正は適用されません。
RDSを使用していない環境では、モジュールを無効化することで攻撃面を減らせます。
例:
rds モジュールをブラックリスト化攻撃チェーンは io_uring fixed buffersを利用するため、可能な場合は 非特権ユーザーのio_uring利用を制限します。
不要な SUID-rootファイルを削減すると、権限昇格の最終ターゲットを減らせます。
PinTheftは ローカル実行が前提のため、特に以下の環境では優先的な対策が必要です。
PinTheftは、近年のLinuxカーネル攻撃の特徴をよく示しています。
今回の場合は
という複数の仕組みを組み合わせて、最終的に root権限取得へ到達します。
そのため、基本的な防御としては
といった運用が、依然として最も効果的な対策とされています。
Studio Global AI
Use this topic as a starting point for a fresh source-backed answer, then compare citations before you share it.
PinTheftはLinuxカーネルのRDSサブシステムに存在するローカル権限昇格(LPE)脆弱性で、zerocopyのダブルフリーとio uring固定バッファを組み合わせてページキャッシュを書き換え、root権限取得を可能にする。[1][5][12]
PinTheftはLinuxカーネルのRDSサブシステムに存在するローカル権限昇格(LPE)脆弱性で、zerocopyのダブルフリーとio uring固定バッファを組み合わせてページキャッシュを書き換え、root権限取得を可能にする。[1][5][12] 攻撃にはローカル実行権限、脆弱なカーネル、RDSモジュールの利用可能状態、io uring固定バッファの使用、そしてSUID rootバイナリの存在など複数条件が必要。[3][5][14]
対策としてはカーネルのアップデート、RDSモジュールの無効化、非特権ユーザーのio uring利用制限、不要なSUIDバイナリの削減が推奨される。[1][6]