Linuxのセキュリティは、 脆弱性CVE-2026-31431、「コピー失敗」と名付けられました。 Xint Codeの研究者による。理論上の欠陥どころか、この設計上の問題は これにより、権限を持たないローカルユーザーが権限を昇格させ、完全なアクセス権を取得できるようになります。 予測可能かつ静かな方法でスーパーユーザーとして行動する。
研究者らは、この脆弱性がUbuntu、Amazon Linux、RHEL、SUSEなどの主要なディストリビューションで悪用されていることを確認し、 バージョン4.14より後のカーネルを実行しているシステム、 維持 AF_ALGソケットのサポートを有効にすると、潜在的に脆弱性が生じる可能性があります。 この攻撃に対して。
インプレース操作とページキャッシュのオーバーフロー
判決に関して、これは これは、2017年にカーネルの暗号化API(AF_ALG)に導入された最適化に遡ります。 この修正は 不要なバッファリングをなくしたかったのです。 認証付き暗号化(AEAD)操作を同じメモリ空間内で直接実行すること。これは「インプレース」操作として知られています。
El この最適化をsplice()関数と組み合わせると重大な問題が生じます。 この方式では、データを物理的にコピーするのではなく、カーネルページキャッシュへの直接参照を転送することで、ファイルディスクリプタ間でデータを転送します。復号化を要求すると、メモリ構造が構成され、本来はユーザーの一時的な領域であるはずの宛先バッファが、システムファイルデータを含むキャッシュページに直接リンクされるようになります。
メモリの制限を超えた認証と書き込み
El この脆弱性の最終的な引き金は、認証アルゴリズムの異常な動作にある。 宛先バッファの境界を厳密に尊重する他の暗号化ルーチンとは異なり、 この特定のアルゴリズムは、ユーザーのメモリ空間を一時的な作業領域として使用します。 (メモ帳)認証タグ計算中にバイトシーケンスを並べ替える。
このプロセスでは、アルゴリズムは出力領域に設定された制限を超えて 4 バイト書き込みます。インプレース最適化と splice() によって作成された参照チェーンにより、この一見無害な文章は、ユーザーの記憶の境界を越える。 そして、処理中のファイルに関連付けられたカーネルキャッシュページに直接アクセスします。
この一連の論理的失敗 これにより、攻撃者は特定のキャッシュ位置にある4バイトを任意に上書きする能力を得る。 読み取れるファイルごとにページ数を計算します。一連の計算されたリクエストを送信することで、 攻撃者は悪意のあるコードを注入することができる ユーザー切り替えツールなど、suidビットが設定された重要な実行可能ファイルのメモリ内バージョン。
すべての読み取り操作は最初にページキャッシュを照会するため、次に正当なユーティリティが呼び出されると、 システムはメモリから注入されたコードを実行し、即座にルート権限を付与します。 ハードドライブ上の物理ファイルを一切変更することなく、攻撃を実行できます。さらに深刻なのは、コンテナ分離は基盤となるホストのページキャッシュを共有するため、この脆弱性はKubernetesクラスタなどの仮想化環境から脱出し、プライマリノードを侵害するための直接的な入り口となることです。
緊急パッチと緩和策
この判決の重大性を考えると、 保守チームは緊急アップデートを展開しました。 決定的な解決策は algif_aead.c ファイル内のインプレース最適化を元に戻し、ソースメモリリストとデスティネーションメモリリストを厳密に分離します。 キャッシュされたページが書き込み可能なパスに保存されるのを防ぐため。
これらのパッチは既にカーネル6.18.22、6.19.12、および7.0に統合されており、長期サポートブランチにもバックポートされています。サーバーをすぐに再起動または更新できない管理者は、algif_aeadカーネルモジュールが外部でコンパイルされている場合はそれを無効にするか、SELinuxなどのセキュリティポリシーを使用してAF_ALGソケットの作成を厳しく制限することをお勧めします。SELinuxは、例えば現在のAndroidデバイスをこの脅威から保護してきた保護機能です。
最後に、さらに詳しく知りたい場合は、次のリンクで詳細を確認できます。