おいて、動的リンクライブラリ(DLL)のハイジャックされる脆弱性を発見しました。インストールされている環境で発生します。攻撃者は、この脆弱性を悪用して特権を昇格させ、標的の環境での永続性を確立できます。この脆弱性は、パッケージに悪意のあるコードを埋め込むための足掛かり可能性があります。チームに報告され、最新のセキュリティリリースでパッチが適用されました。ユーザは最新バージョンにアップグレードする必要があります。ハイジャックとは何か、私たちが新しい脆弱性を発見した方法、リポジトリのバイナリアーティファクトが危険である方法について説明します。ハイジャック攻撃は、バイナリプランティング攻撃またはプリロード攻撃とも呼ばれ、動的にロードされる共有ライブラリまたは共有オブジェクトをサポートするすべてのオペレーティングシステムに共通した手法です。これらの攻撃がどのように機能するかを見てみましょう。コピーを使用させることができます。ハイジャックは、攻撃者がアプリケーションを実行するユーザのコンテキスト下でコードを実行可能にできます。アプリケーションが管理者や高い権限で実行されている場合、これはローカルでの権限昇格につながる可能性があります。ハイジャックを使用する可能性があります。ハイジャックを介して永続化できます。読み込もうとする場合を考えてみましょう。設定されています)、アプリケーションが別の検索順序を使用していない場合、次のようにディレクトリが検索されます。以前の検索で見つからなかった場合に発生します。ハイジャックは攻撃者にとって好都合です。呼び出されるため、簡単にコードを実行できます。アプリケーションが署名されていないバイナリのロードを許可している場合、攻撃者は回避することを心配する必要はありません。仕込まれるかに基づいて、この脆弱性は3つのカテゴリのいずれかに分類されます。プランティングは重要なセキュリティ問題であり、マイクロソフトはこの問題に対するパッチを発行するとのことです。コマンドを実行したときのある異常な動作に気づき、調査を開始しました。読み込むことになります。私たちは、この発見を実証するために概念実証(PoC)を用意しました。ファイル(providers.dll)を作成し、それをコンパイルしました。以下のコードをご覧ください。コードが実行されます。根本的な原因を探るそこで、再現手順と共に、新たな脆弱性として報告しました。この脆弱性の原因が一体何なのかは、依然として不明なままでした。この時点では、いくつかの未解決の問題がありました。エンジンを使っていて、脆弱性を再現できないときに生じました。ファイルを検索しません。この脆弱性の根本的な原因ではないと考えられました。原因であると仮定しました。依存関係の流れを分析することで、この考えを検証しました。組み込みモジュールを読み込もうとしていることがわかりました。ファイルを探していることが判明しました。脆弱にする原因となっているのです。依存関係のトレース分析です。これらのモジュールに共通することは何でしょうか。依存していることです。3つの組み込みモジュールであることがわかりました。イメージのクリーンインストールでは、この脆弱性が再発しなかったことから、2つ目の疑問が浮かびました。デバッグしてみました。ロードしようとするすべての試みを捕捉するようにします。呼び出し履歴を確認しました。ここで、2つの興味深い値を見ることができます。フローを詳しく見てみました。定義されている値を探します。いうファイルを探します。名のロードを試行します。編集には管理者権限が必要なので、永続性が確立されてしまう可能性が濃厚となるでしょう。動作時の脆弱性の発生条件が分かりました。インストールされている。3つの組み込みモジュールのうち、1つがロードされている。使用するのは開発者のコンピュータなので、この仮定は妥当だと思われます)これらの条件により、脆弱性が再現されます。CVE-2022-32223に対するパッチこの脆弱性に対応するため、パッチを適用したバージョンがリリースされました。設定ファイルを使用できます。いう名前のセクションのみを読み取ります。ファイルを使用していて、この変更の影響を受ける場合は、次の方法で以前の動作に戻すことができます。