ユーティリティで
「pwフィードバック」オプションを使用すると、パスワードを入力するときに、入力された各文字の後に「*」文字が表示されます。 のため
問題の本質は、入力中に特殊文字 ^U (行クリア) を使用し、書き込み操作が失敗した場合、出力「*」文字をクリアするコードは、使用可能なバッファ サイズでデータをリセットしますが、データをリセットしないことです。バッファ内の初期値の現在位置へのポインタを返します。 悪用に寄与するもう XNUMX つの要因は、データが端末からではなく入力ストリーム経由で到着したときに「pwフィードバック」モードを自動的に無効にできないことです (この欠陥により、たとえば、一方向
攻撃者はスタック上のデータの上書きを完全に制御できるため、権限を root に昇格させるエクスプロイトを作成することは難しくありません。 この問題は、sudo 権限や sudoers のユーザー固有の設定に関係なく、あらゆるユーザーが悪用する可能性があります。 問題をブロックするには、/etc/sudoers に「pwフィードバック」設定がないことを確認し、必要に応じて無効にする必要があります (「デフォルト !pwフィードバック」)。 問題があるかどうかを確認するには、次のコードを実行します。
$ perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S ID
パスワード: セグメンテーション違反
出所: オープンネット.ru