PolKitの脆弱性により、ほとんどのLinuxディストリビューションでrootアクセスを取得できました

最近 Qualys そのニュースをリリースしました 脆弱性を特定しました (CVE-2021-4034) en システムコンポーネント polkit (以前のPolicyKit)。これは、非特権ユーザーが昇格されたアクセス権を必要とするアクションを実行できるようにするためにディストリビューションで使用されます。

脆弱性 特権のないローカルユーザーが自分の特権をrootユーザーに昇格できるようにします システムを完全に制御できます。 この問題はコードネームPwnKitであり、ほとんどのLinuxディストリビューションでデフォルト設定で実行される実用的なエクスプロイトを生成することで注目に値します。

と言われています 問題は、PolKitに含まれているpkexecユーティリティに存在します、SUIDルートフラグが付属しており、PolKitルールに従って他のユーザーの権限でコマンドを実行するように設計されています。

引数の取り扱いが間違っているため pkexecに渡されたコマンドラインから、 非特権ユーザーは認証をバイパスし、コードをrootとして実行させることができます、確立されたアクセスルールに関係なく。 攻撃の場合、PolKitで設定されている設定や制限に関係なく、実行可能ファイルのSUIDルート属性をpkexecユーティリティで設定するだけで十分です。

Pkex​​ecは正確性をチェックしません プロセスの開始時に渡されたコマンドライン引数(argc)の数。 pkexec開発者は、argv配列の最初のエントリには常にプロセスの名前(pkexec)が含まれ、XNUMX番目のエントリはNULLまたはpkexecを介して実行されるコマンドの名前であると想定していました。

引数の数は配列の実際の内容と比較されず、常に1より大きいと想定されたため、Linuxのexecve関数で許可されている空のargv配列がプロセスに渡された場合、pkexecはNULLを最初の引数として扱いました(プロセスname)、および次の配列コンテンツとして、バッファメモリが不足した後の次の配列。

問題は、メモリ内のargv配列の後に、環境変数を含むenvp配列があることです。 したがって、空のargv配列を使用すると、pkexecは、昇格された特権で実行されているコマンドに関するデータを、環境変数(argv [1]はenvp [0]と同じになります)を持つ配列の最初の要素から抽出します。攻撃者。

値argv [1]を受け取ると、pkexecはPATHのファイルパスを使用して実行可能ファイルへのフルパスを決定しようとし、フルパスを持つ文字列へのポインターをargv [1]に戻します。これにより、値が上書きされます。 argv [1]はenvp [0]と同じであるため、最初の環境変数も同様です。 攻撃者は、最初の環境変数の名前を操作することにより、pkexecで別の環境変数を置き換えることができます。たとえば、suidプログラムでは許可されていない「LD_PRELOAD」環境変数を置き換えて、プロセスに共有ライブラリをロードさせることができます。 。

動作するエクスプロイトは、GCONV_PATH変数置換を使用します。 これは、コードでiconv_open()を使用するg_printerr()関数が呼び出されたときに動的にロードされるシンボルトランスコーディングライブラリへのパスを決定するために使用されます。

GCONV_PATHでパスを再定義することにより、攻撃者は通常のiconvライブラリではなく、自分のライブラリをロードできます。このライブラリのドライバーは、pkexecがまだrootとして実行されている段階で、起動の検証前にエラーメッセージ中に実行されます。権限。

観察された、 問題はメモリの破損によるものですが、確実かつ繰り返し利用できます、使用するハードウェアアーキテクチャに関係なく。

準備されたエクスプロイト Ubuntu、Debian、Fedora、CentOSでのテストに成功、ただし、他のディストリビューションでも使用できます。 元のエクスプロイトはまだ公開されておらず、些細なことであり、他の研究者が簡単に再現できることを示しています。そのため、マルチユーザーシステムにできるだけ早く修正プログラムをインストールすることが重要です。

PolkitはBSDおよびSolarisシステムでも利用できますが、悪用については調査されていません。 知られていることは、OpenBSDカーネルはexecve()を呼び出すときにnull argc値を渡すことを許可しないため、OpenBSDで攻撃を実行できないことです。

この問題は、2009年XNUMX月にpkexecコマンドが追加されてから発生しています。 PolKitの脆弱性の修正はパッチとして引き続き利用できます(修正バージョンは作成されていません)が、ディストリビューションの開発者に事前に問題が通知されたため、ほとんどのディストリビューションは同時にアップデートをリリースしました。脆弱性情報の。

最後に あなたがそれについてもっと知りたいのなら、詳細はで確認できます 次のリンク。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。