Critical SSRF Vulnerability (CVE-2024-53353) Found in Invoice Ninja
2024/12/27 SecurityOnline — オープンソースの請求書作成・プロジェクト管理プラットフォームである Invoice Ninja に、SSRF (Server-Side Request Forgery) の脆弱性 CVE-2024-53353 が発見された。この脆弱性を悪用する攻撃者に対して、システムのホスト・サーバ上の機密ファイルの読み取りが許されるという。この脆弱性を発見した Pretera のセキュリティ研究者 Arben Shala から、詳細なレポートが公開されている。

この脆弱性 CVE-2024-53353 は、Laravel で構築された Invoice Ninja の PDF 生成機能を利用することで発生する。この欠陥により、請求書の作成/編集の権限を持つローカル・ユーザーと、低権限のクライアント・ポータル・ユーザーは、PDF 生成中に悪意のペイロードの注入を達成するという。その結果として、”/etc/passwd” ファイルや “.env” コンフィグ・ファイルなどの、重要な情報へのアクセスが生じてしまう。これらのファイルには、データベース認証情報/SMTP 認証情報などの、機密情報が含まれていることが多い。
Pretera の分析によると、「この攻撃ベクターは、クライアント・ポータルへのアクセス権を持つユーザーにより、引き起こされる可能性もある。そのため、見積書が作成される際に、個人データを変更することで、攻撃を誘発できる」という。
Invoice Ninja はブラックリスト・フィルターを使用して、潜在的に危険な HTML タグ/プロトコルを阻止している。しかし、このアプローチに、重大な弱点があることが判明した。攻撃者はケース・バリエーションや代替表現を使用することで、このフィルターの回避を達成できる。たとえば、フィルターは “file://” を対象にしているが、攻撃者は “File://” などの類似のバリエーションを使用して、それらを回避する可能性を手にする。
メイン・ポータル・シナリオでは、”Create/Edit Invoice” 権限を持つ攻撃者であれは、請求書の説明フィールドのようにペイロードを入力できる。そうすることで、機密ファイルの内容が、生成された PDF に表示されてしまう。同様に、クライアント・ポータル・シナリオでは、低権限のユーザーが、見積もりの表示時にトリガーされる PDF 生成を悪用し、プロファイル設定に悪意のペイロードを注入できる。
さらに、メイン・ポータルへのアクセス権を持つ攻撃者は、請求書作成のプロセスにおいて、“Description” フィールドを悪用できる。Arben Shala が実証したのは、http://â/usr/share/nginx/invoiceninja/.envâ をフィールドに挿入すると、”.env” ファイルの内容がレンダリングされ、データベース/サービスの認証情報が露出するという事実だ。
低権限ユーザーによる、この脆弱性の悪用は、編集可能なプロファイル・フィールドへの悪意のペイロードの挿入により達成される。そのペイロードは、見積書の PDF 生成中にトリガーされ、限定的なアクセス権限だけを持つ攻撃者であっても、機密ファイルの抽出を可能にするという。
この脆弱性は、ハードコードされた認証情報が、”.env” ファイルに含まれているシステムにおいて、深刻なセキュリティ・リスクをもたらす。Shala の警告は、「アプリケーションのフル・パスを知っている攻撃者は、ペイロードを用いて重要なファイルの内容を読み取る可能性を手にする。それらのファイルには、平文の認証情報などの機密データが含まれている可能性がある」というものだ。
CVE-2024-53353 のリスクを軽減するために、Pretera が推奨するのは、Invoice Ninja 開発チームからのセキュリティ・アップデートを適用することだ。
Laravel で構築された、Invoice Ninja の PDF 生成機能に脆弱性とのことです。このサービスが日本国内で利用されることは無いでしょうが、Laravel の PDF 生成機能となると、話は別かもしれません。ご利用のチームは、ご注意ください。よろしければ、Laravel で検索も、ご参照ください。

You must be logged in to post a comment.