Linux MintとElementary OSに影響を与えるsudo rootの脆弱性

ユーティリティで sudo、他のユーザーに代わってコマンドの実行を組織するために使用されます。 特定された 脆弱性(CVE-2019-18634)、システム内の権限を root ユーザーに増やすことができます。 この問題は、sudo 1.7.1 のリリース以降、/etc/sudoers ファイルの「pwフィードバック」オプションを使用した場合にのみ発生します。このオプションはデフォルトでは無効になっていますが、Linux Mint やエレメンタリー OS などの一部のディストリビューションでは有効になっています。 リリースで修正された問題 須藤1.8.31、数時間前に公開されました。 この脆弱性は配布キットでは未修正のままです。

「pwフィードバック」オプションを使用すると、パスワードを入力するときに、入力された各文字の後に「*」文字が表示されます。 のため エラー tgetpass.c ファイルで定義されている getln() 関数の実装では、特定の条件下で標準入力ストリーム (stdin) 経由で渡される大きすぎるパスワード文字列が、割り当てられたバッファーに収まらず、スタック上の他のデータを上書きする可能性があります。 root として sudo コードを実行すると、オーバーフローが発生します。

問題の本質は、入力中に特殊文字 ^U (行クリア) を使用し、書き込み操作が失敗した場合、出力「*」文字をクリアするコードは、使用可能なバッファ サイズでデータをリセットしますが、データをリセットしないことです。バッファ内の初期値の現在位置へのポインタを返します。 悪用に寄与するもう XNUMX つの要因は、データが端末からではなく入力ストリーム経由で到着したときに「pwフィードバック」モードを自動的に無効にできないことです (この欠陥により、たとえば、一方向 名前のないチャンネル 読み取りチャネルの最後に書き込もうとするとエラーが発生します)。

攻撃者はスタック上のデータの上書きを完全に制御できるため、権限を root に昇格させるエクスプロイトを作成することは難しくありません。 この問題は、sudo 権限や sudoers のユーザー固有の設定に関係なく、あらゆるユーザーが悪用する可能性があります。 問題をブロックするには、/etc/sudoers に「pwフィードバック」設定がないことを確認し、必要に応じて無効にする必要があります (「デフォルト !pwフィードバック」)。 問題があるかどうかを確認するには、次のコードを実行します。

$ perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S ID
パスワード: セグメンテーション違反

出所: オープンネット.ru

コメントを追加します