新たに発見されたLinux局所権限昇格(LPE)脆弱性「PinTheft」に対する実証概念(PoC)エクスプロイトが公開されました。
V12セキュリティチームのAaron Esauによって発見されたこの脆弱性は、RDSのゼロコピー二重解放バグをio_uringの固定バッファとチェーンすることで、ローカル攻撃者がフルルートアクセスを獲得することを可能にします。カーネルパッチが利用可能になったため、研究者がPoCを公開することになりました。
PinTheftはLinuxカーネルの信頼性データグラムソケット(RDS)のゼロコピー送信パスに存在し、特にrds_message_zcopy_from_user()関数内にあります。
実行中、この関数はユーザーページを1つずつピン留めします。その後のページフォルトが発生した場合、エラーパスはすべての既にピン留めされたページをドロップしますが、scatterlistエントリとエントリ数が有効なままであるため、後のRDSメッセージクリーンアップはそれらを再度ドロップします。
このdouble-free条件により、失敗した各ゼロコピー送信は最初のピン留めされたページから正確に1つのFOLL_PIN参照を盗むことができます。これは微妙で決定的な欠陥であり、確実に悪用するためにレース条件を必要としません。
参照カウントバグを兵器化するために、PinTheftは正確な複数段階シーケンスでio_uringの固定バッファメカニズムを活用します:
組み込みELFはx86_64をターゲットとしていますが、基礎となるテクニックはアーキテクチャに依存しません。
RDSモジュールはテストされた主要ディストリビューションの中ではArch Linuxでのみデフォルトで有効になっていますが、RDSが手動でロードされたシステムは完全にリスクに晒されたままです。
管理者はアップストリームカーネルパッチをすぐに適用する必要があります。パッチが実行不可能な場合、またはRDSが未使用の場合は、脆弱なモジュールをブロックしてブート時のロードを防いでください:
翻訳元: https://cyberpress.org/pintheft-linux-vulnerability/