リモートおよびローカルの root アクセスを許可する OpenSMTPD の脆弱性

クアリス株式会社 明らかに メールサーバーの別のリモートの重大な脆弱性 (CVE-2020-8794) OpenSMTPD、OpenBSD プロジェクトによって開発されました。 XNUMX月末に特定されたものと同様 脆弱性、新しい問題により、root ユーザー権限を持つサーバー上で任意のシェル コマンドをリモートで実行できるようになります。 脆弱性 排除された 問題になっている OpenSMTPD 6.6.4p1.

この問題は、メールをリモート メール サーバーに配信するコードのバグによって発生します (受信接続を処理するコードのバグではありません)。 攻撃はクライアント側とサーバー側の両方で可能です。 クライアント側では、OpenSMTPD が内部ネットワーク インターフェイス (localhost) でのみリクエストを受け入れ、メール メッセージを外部サーバーに送信する OpenSMTPD のデフォルト設定で攻撃が可能です。 この脆弱性を悪用するには、レターの配信中に OpenSMTPD が攻撃者が制御するメール サーバーとのセッションを確立するか、攻撃者がクライアント接続 (MITM または DNS または BGP 経由の攻撃中のリダイレクト) に割り込むことができれば十分です。 )。

サーバー側の攻撃の場合、OpenSMTPD は、他のメール サーバーから外部ネットワーク リクエストを受信するか、任意の電子メール (Web サイト上のアドレス確認フォームなど) にリクエストを送信できるサードパーティ サービスを提供するように設定する必要があります。 たとえば、攻撃者が OpenSMTPD サーバーに接続し、間違ったレターを (存在しないユーザーに) 送信すると、その応答がエラー コード (バウンス) を含むレターを攻撃者のサーバーに送信することになります。 攻撃者は、OpenSMTPD が接続して攻撃者のサーバーに通知を配信するときにこの脆弱性を悪用する可能性があります。 攻撃中に挿入されたシェル コマンドは、OpenSMTPD の再起動時に root 権限で実行されるファイルに配置されるため、攻撃を完了するには、攻撃者は OpenSMTPD が再起動するまで待つか、OpenSMTPD のクラッシュを開始する必要があります。

この問題は、接続の確立後にリモート サーバーから返される複数行の応答 (たとえば、「250-ENHANCEDSTATUSCODES」や「250 HELP」) を解析するコード内の mta_io() 関数に存在します。 OpenSMTPD は、最初の行には「-」文字で区切られた 0 桁の数字とテキストが含まれ、XNUMX 行目にはスペースで区切られた XNUMX 桁の数字とテキストが含まれると計算します。 XNUMX 行目に XNUMX 桁の数字の後にスペースとテキストが続かない場合、テキストの定義に使用されるポインタは「\XNUMX」文字に続くバイトに設定され、末尾に続くデータのコピーが試行されます。行をバッファに入れます。

OpenBSD プロジェクトの要請により、ユーザーがシステムを更新できるよう、脆弱性悪用に関する詳細の公開は 26 月 2015 日まで延期されました。 この問題は 2018 年 6.6 月からコードベースに存在していましたが、5.9 年 10 月以降、root 権限でコードを実行する前に悪用が可能になりました。 研究者らは、このエクスプロイトの実用的なプロトタイプを準備し、OpenBSD 11、OpenBSD 31、Debian XNUMX、Debian XNUMX (テスト)、および Fedora XNUMX 用の OpenSMTPD ビルドでのテストに成功しました。

OpenSMTPDでも 特定された もう 2020 つの脆弱性 (CVE-8793-1) により、ローカル ユーザーがシステム上の任意のファイルの最初の行を読み取ることができます。 たとえば、root ユーザーのパスワード ハッシュが含まれる /etc/master.passwd の最初の行を読み取ることができます。 この脆弱性により、別のユーザーが所有するファイルが /var/spool/smtpd/ ディレクトリと同じファイル システムにある場合、そのファイルの内容全体を読み取ることもできます。 /proc/sys/fs/protected_hardlinks の値が XNUMX に設定されている多くの Linux ディストリビューションでは、この問題が悪用されることはありません。

問題は不完全な除去の結果です проблем、2015年にQualysによって実施された監査中に表明されました。 攻撃者は、「PATH=.」変数を設定することにより、「_smtpq」グループの権限でコードを実行できます。 そして、makemap というスクリプトを現在のディレクトリに配置します (smtpctl ユーティリティは、パスを明示的に指定せずに makemap を実行します)。 攻撃者は、「_smtpq」グループへのアクセスを取得することで競合状態を引き起こし(オフライン ディレクトリに大きなファイルを作成し、SIGSTOP シグナルを送信する)、処理が完了する前にオフライン ディレクトリ内のファイルをハードウェアに置き換えることができます。内容を読み取る必要があるターゲット ファイルを指すシンボリックリンク。

Fedora 31 では、smtpctl プロセスに setgid smtpq フラグの代わりに setgid root フラグが装備されているため、この脆弱性によりすぐに root グループの権限を取得できることは注目に値します。 root グループへのアクセスを取得すると、/var/lib/sss/mc/passwd の内容を上書きし、システムへの完全な root アクセスを取得できます。

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

コメントを追加します