数日前 Google ProjectZeroチームのJannHorn、 以前にスペクターとメルトダウンの脆弱性を特定した人、 脆弱性を悪用する手法を発表 Linuxカーネルのガベージコレクター(CVE-2021-4083)にあります。
脆弱性 競合状態が原因です UNIXソケットファイル記述子がクリーンアップされたとき また、特権のないローカルユーザーがカーネルレベルでコードを実行できるようにする可能性があります。
問題 時間枠があるので面白いです 競合状態が発生する間 小さすぎると評価された しかし、調査の著者は、脆弱性の作成者が必要なスキルと時間を持っていれば、最初は懐疑的な脆弱性でさえ実際の攻撃の原因になる可能性があることを示しました。
ヤンホーン 細線細工の操作の助けを借りて、どのように状態を減らすことができるかを示しました close()関数とfget()関数を同時に呼び出して、完全に悪用された解放後使用の脆弱性と、カーネル内のすでに解放されたデータ構造へのアクセスを取得するときに発生する競合イベント。
競合状態が発生します ファイル記述子を閉じるプロセス中 close()関数とfget()関数を同時に呼び出している間。 close()の呼び出しは、fget()が実行される前に実行される可能性があり、アイテムコレクターを混乱させます refcountによると、ファイル構造には外部参照はありませんが、ファイル記述子にアタッチされたままになるため、未使用です。つまり、ガベージコレクターは、構造に排他的にアクセスできると見なしますが、実際には短期間です。ファイル記述子テーブルの残りのエントリは、構造が解放されていることを示し続けます。
確率を上げるには 競合状態に入る、 成功の可能性を高めるためにいくつかのトリックが使用されました 30%での保有の 特定のシステム最適化を実行する場合。 たとえば、ファイル記述子を含む構造へのアクセス時間を数百ナノ秒増やすために、別のCPUコアのアクティビティでキャッシュを汚染することにより、データがプロセッサキャッシュからフラッシュされ、メモリから構造を返すことが可能になりました。 CPUの高速キャッシュではありません。
XNUMX番目の重要な機能 だった ハードウェアタイマーによって生成された割り込みの使用 レース時間を増やすために。 タイミングは、競合状態の発生中に割り込みハンドラが起動し、しばらくの間コードの実行が中断されるように選択されました。 制御の復帰をさらに遅らせるために、epollはキューに約50万のエントリを生成しました。これには、割り込みハンドラでの反復が必要でした。
テクニック 脆弱性の悪用 90日間の非開示期間の後に開示されました。 問題
そしてそれは5.16月初旬に修正されました。 この修正は2021カーネルに含まれており、カーネルのLTSブランチと、ディストリビューションで提供されているカーネルを含むパッケージにも移動されました。 この脆弱性は、MSG_PEEKフラグを処理するときにガベージコレクターに現れる同様の問題CVE-0920-XNUMXの分析中に特定されたことに注意してください。
見つかった別の脆弱性 最近のLinuxカーネルでは、 CVE-2022-0742 その 利用可能なメモリを使い果たし、リモートでサービス拒否を引き起こす可能性があります 特別に細工されたicmp6パケットを送信します。 この問題は、タイプ6または130のICMPv131メッセージを処理するときに発生するメモリリークに関連しています。
この問題はカーネル5.13以降に存在し、バージョン5.16.13および5.15.27で修正されました。 この問題は、Debian、SUSE、Ubuntu LTS(18.04、20.04)、およびRHEL安定版ブランチには影響しませんでした。ArchLinuxで修正されました。
最後に あなたがそれについてもっと知りたいなら メモの詳細は、で確認できます。 次のリンク。