
CVE-2019-18634 の分析 (https://www.exploit-db.com/exploits/47995)
Sudo 1.8.25p - 'pwfeedback' バッファオーバーフロー (PoC)
Sudo の pwfeedback オプションは、ユーザーがパスワードを入力する際に視覚的なフィードバックを提供するために使用できます。キーが押されるたびにアスタリスクが表示されます。このオプションは、標準の Password: プロンプトがキー入力のエコーを無効にするというユーザーの混乱に対応して追加されました。pwfeedback は上流の sudo バージョンではデフォルトで有効になっていませんが、Linux Mint や Elementary OS などの一部のシステムでは、デフォルトの sudoers ファイルで有効になっています。
分析
Sudo バッファオーバーフロー tryhackme の解説
CVE-2019-18634 の分析
まず、SSH 経由で tryhackme インスタンスにログインします。
この脆弱性は、pwfeedback 関数がヒープバッファオーバーフローに対して脆弱であるために発生します。この脆弱性を悪用するには、まず、sudo –version コマンドを実行して、マシンに脆弱なバージョンの sudo(sudo <1.8.26)が存在することを確認します。
CVE-2019-18634 の分析
まず、SSH 経由で tryhackme インスタンスにログインします。
この脆弱性は、pwfeedback 関数がヒープバッファオーバーフローに対して脆弱であるために発生します。この脆弱性を悪用するには、まず、sudo –version コマンドを実行して、マシンに脆弱なバージョンの sudo(sudo <1.8.26)が存在することを確認します。

脆弱なバージョンの sudo が存在することを確認したら、次に pwfeedback 関数が存在することを確認します。これは 2 つの方法で行えます。1 つは sudo を起動してパスワードプロンプトに何か入力する方法で、パスワードの文字を入力すると「*」が表示されるはずです。もう 1 つはより技術的な方法で、sudo -l コマンドを使用する方法ですが、これにはユーザーが sudo に関する情報を表示するための適切な権限を持っているか、sudoers ファイルを連結できる権限が必要です。

ここで、exploit-db のテストケースを使用してバッファオーバーフローが可能であることを確認します。 https://www.exploit-db.com/exploits/47995
perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id ^^上記のコード行は次のように動作します。
100 個の A 文字を追加し、それを sudo コマンドにパイプで送ります。これにより、pwfeedback ヒープバッファに入ることになります。

その後、sudo は sudo プロセスを続行する方法がわからず、セグメンテーションフォールトを出力します。
これは、静的なヒープバッファがオーバーフローすると、CPU レジスタと命令ポインタ(次の命令の流れを維持するもの)にまで影響が及ぶために発生します。
エクスプロイトを実行すると、バッファオーバーフローが発生し、システムへの root アクセスが取得できます。 https://www.exploit-db.com/exploits/47995
