地球の皆様へ:今すぐWebminにパッチを当ててください。サーバーコントロールパネルに潜在的なハイジャックホールを狙うゼロデイエクスプロイトが出現しました。

Table of Contents

地球の皆様へ:今すぐWebminにパッチを当ててください。サーバーコントロールパネルに潜在的なハイジャックホールを狙うゼロデイエクスプロイトが出現しました。

更新Unix 系システムでのシステム管理タスク用のオープンソース アプリケーションである Webmin のメンテナーは、特定の構成でリモート コード実行を実現するために悪用される可能性のある脆弱性を修正した Webmin バージョン 1.930 と関連する Usermin バージョン 1.780 をリリースしました。

貢献開発者の一人であるジョー・クーパー氏は、週末のブログ投稿でこのパッチを発表しました。

「今回のリリースは、本日公開されたCVE-2019-15107に対応しています」とクーパー氏は述べた。「私たちはこの脆弱性について事前に通知を受けていません。これは、この脆弱性を発見した研究者にとって異例であり、倫理にも反する行為です。しかし、このような状況では、早急に修正する以外にできることは何もありません。」

同氏は、このパッチは責任を持って開示されたいくつかのXSS問題にも対処しており、それらを報告した研究者に報奨金が支払われたと指摘した。

問題となっているバグは、ファイル内で使用される&unix_crypt関数*password_change.cgiに存在する、認証前のコマンドインジェクション脆弱性です。この関数は、システム/etc/shadowファイルとパスワードを照合するために使用されます。パイプコマンド ("|") を追加することで、攻撃者はリモートコードを実行できます。

クーパー氏によると、脆弱性が生じるには、Perl ベースのソフトウェアでWebmin -> Webmin 構成 -> 認証 -> パスワード有効期限ポリシーが、期限切れのパスワードを持つユーザーに新しいパスワードの入力を求めるように設定されている必要があるという。

「このオプションはデフォルトでは設定されていないが、設定されている場合、リモートコード実行が可能になる」と彼は述べた。

ゴミ箱

Webmin の脆弱性により、攻撃者はサーバーを完全に消去できる

続きを読む

これはほとんどのバージョンに当てはまる可能性があります (脆弱性はバージョン 1.882 から 1.920 に存在します)。ただし、Webmin 1.890 はデフォルト構成で脆弱です。

このバグは、8月10日土曜日にDEF CONでÖzkan Mustafa Akkuş氏によって明らかにされ、Metasploitフレームワークのモジュール内のエクスプロイトとして公開されたようです。Webminのメンテナーは、8月17日土曜日にTwitterやRedditでこの問題が議論されていることに気付くまで、このバグの存在を知りませんでした。CVEは8月15日木曜日に作成されました。

Shodan 検索 (アカウントが必要) によると、Webmin のインストール数は約 215,000 で、特に脆弱なバージョン 1.890 のインスタンス数は約 13,000 です。

Microsoft Azure の開発者リレーション責任者であり、binaryedge.io の創設者でもある Tiago Henriques 氏は、その数を Webmin インスタンス約 598,000 個、バージョン 1.890 のインスタンス 29,000 個と見積もっています。

クーパー氏によると、悪意のあるコードはプロジェクトのビルドインフラを通じてWebminとUserminに侵入したとのことです。「いつ、どのように侵入されたのかはまだ調査中ですが、悪用可能なコードはGitHubリポジトリには存在したことがないため、新しいインフラ上でgitソースから再構築しました」とクーパー氏は述べています。

クーパー氏はThe Registerへの電子メールで、この悪意あるコードは Sourceforge リポジトリには現れたが GitHub リポジトリには現れなかったが、Sourceforge に到達する前にローカル パッケージ ビルド インフラストラクチャ上の Webmin に導入されたと述べた。

「ジェイミー(プロジェクトの中心著者であるキャメロン氏)ならもっと詳しいことは知っているだろうが、私の理解では、それは彼の自宅にあるビルドサーバーで、何年も稼働していたものだった」とクーパー氏は語った。

数か月前にシャットダウンされましたが、ビルドディレクトリはバックアップから新しいビルドシステムにコピーされていました…そのため、エクスプロイトも一緒に持ち込まれました。新しいビルドは新しいインフラストラクチャと最新のGitチェックアウトから作成されました。Jamieは、エクスプロイトされたコードとGitコードを比較し、他に侵入したコードがないか調べました。

クーパー氏は、このバグはデフォルト構成の変更を必要とするため、本日のパッチの直前のバージョンのソフトウェア (Webmin 1.920、Usermin 1.770) ではリスクがかなり限定的であると述べた。

「同じベクトルから導入されたため、おそらく同じ攻撃者によって導入されたと思われる以前のバージョンは、より深刻でした (Webmin 1.890 では、同様の攻撃にはデフォルト以外のオプションは必要ありませんでした)。そのバージョンは git には存在しなかったため、Jamie がそれを見つけるのに (あるいは報告されたバグが本物だと気づくのに) 時間がかかりました。そのため、私たちは問題のないコードを調べて再現しようとしていました」と彼は説明した。

レジスター紙はキャメロン氏にサーバーへの侵入の起源について何か説明できるか尋ねたが、すぐには返答がなかった。しかしクーパー氏は、プロジェクトの調査能力には限界があるかもしれないと示唆した。

「当初悪用されたビルドサーバーはフォレンジック調査に利用できなくなっているため、攻撃者がどのように侵入したかを推測するしかありませんが、そのベクトルを再び悪用できないようにする対策を講じるよりも、おそらくあまり役​​に立ちません」とクーパー氏は述べた。®

追加更新

*クーパー氏はこの記事の公開後、エル・レグ氏に連絡を取り、研究者のバグに関する説明は的外れだと指摘した。問題は&unix_crypt関数自体ではなく、「関数呼び出しの1つに挿入された`qx//`が原因でした。具体的には、次の行ですpassword_change.cgi」とクーパー氏は述べた。

$enc は $wuser->{'pass'} と等しくなります || &pass_error($text{'password_eold'},qx/$in{'old'}/);

qx//は Perl のバックティックに相当するので、//シェル内のものはすべて実行されます」と彼は言いました。

キャメロン氏からの返信も、記事掲載後に届きました。彼は、サーバーがその後すぐに廃止され、フォレンジック調査に使用できるログファイルが削除されたため、侵入がどのように発生したかは不明だと述べました。

「残念ながら、脆弱性が挿入されたファイルは新しいマシンに移行されたため、ビルドがより安全な新しい環境に移行されたにもかかわらず、それ以降のリリースにも脆弱性が残ってしまいました」と彼は述べた。「この脆弱性が検出されて以来、GitHub上のすべてのコードとビルドシステムのコードをクロスチェックし、他に隠れた脆弱性がないか確認しました(脆弱性はありませんでした)。また、最近のコミットをすべて時間をかけて確認しました。完全な情報開示のため、発生した事象の詳細をまとめ、1~2日以内にwebmin.comで公開する予定です。」

Discover More