Apache OFBiz の脆弱性 CVE-2026-45434 が FIX:PW 変更処理の不備による認証回避と RCE

Apache OFBiz RCE Flaw Abuses Password-Change Restrictions for Authentication Bypass

2026/05/21 gbhackers — Apache OFBiz に存在する深刻な認証バイパス脆弱性 CVE-2026-45434 を悪用する攻撃者は、強制パスワード変更フローを乗っ取り、単一の HTTP リクエストを通じてリモート・コード実行 (RCE) を達成する可能性がある。この脆弱性が影響を及ぼす範囲は、Apache OFBiz のバージョン 24.09.06 未満となる。Apache OFBiz は、ビジネス・プロセス管理に用いられるオープンソースの ERP プラットフォームである。

  • CVE ID:CVE-2026-45434
  • CVSS 3.1 スコア:8.8 (High)
  • 影響バージョン:Apache OFBiz 24.09.06 未満
  • 修正バージョン:Apache OFBiz 24.09.06
  • 公開日:2026年5月20日
  • 研究者:Aretiq AI
Apache OFBiz の RCE 脆弱性

認証情報の漏洩後やオンボーディング時などに、管理者が requirePasswordChange=Y を設定した場合には、対象アカウントはパスワード変更完了まで全機能がロックされるべきである。

LoginWorker.checkLogin() メソッドが、requirePasswordChange の戻り値を認証失敗として扱っていないことを、Aretiq AI の研究者たちが発見した。このメソッドは “error” のみをチェックするため、login() 関数からの “requirePasswordChange” はログイン成功として処理される。

さらに、requirePasswordChange フラグがデータベースではなく、攻撃者が制御する HTTP リクエスト・パラメータから読み込まれるという、第 2の欠陥も存在する。それらの問題を連鎖させる攻撃者は、単一の POST リクエストで任意の保護エンドポイントに対してパスワード変更フローを注入できる。

これら 2 つの認証欠陥に加えて、ProgramExport.groovy に存在する第 3の問題 (権限チェック欠如/Groovy サンドボックス未実装) を連鎖させることで、OFBiz のプロセス・ユーザー権限による完全なリモート・コード実行が可能となる。

このエクスプロイトは、以下の 3 段階で成立する。

  • 認証バイパス checkLogin():このメソッドは “error”.equals(login(request, response)) のみを評価し、login() が “requirePasswordChange” を返した場合に比較結果を false とする。その結果として “success” が返却され、実際の認証なしにアクセスが許可される。
  • クライアント制御フラグ注入:requirePasswordChange フラグは request.getParameter(“requirePasswordChange”) により HTTP リクエストから直接取得される。この欠陥を突く攻撃者は、requirePasswordChange=Y と有効な認証情報/任意の新パスワードを送信し、updatePassword サービスをトリガーすることで、単一リクエスト内で完全な認証済みセッションを確立する。
  • Groovy 実行 (ProgramExport):脆弱なバージョンにおける ProgramExport.groovy は、権限検証/SecureASTCustomizer/危険パターン制御を持たないプレーンな GroovyShell を用いてユーザー提供コードを評価する。したがって、JVM への完全アクセスが可能となり、Runtime.getRuntime().exec() を介した OS コマンド実行などが引き起こされる可能性がある。

旧バージョンである OFBiz 24.09.05 での検証では、”/webtools/control/ProgramExport” に対する単一の細工済み POST リクエストにより、uid=0 (root) 権限での RCE が確認されている。Apache OFBiz は admin/flexadmin/demoadmin/ltdadmin などの 10 以上のデモ・アカウントを、デフォルト・パスワード “ofbiz” で提供するため、開発環境/ステージング環境/新規本番環境では、事前の偵察を必要としない悪用が可能になる。

この requirePasswordChange ロジックの欠陥は、以前の脆弱性と類似している。その時の CVE-2023-51467 は、MITRE/NVD により 9.8 と評価されていた。

影響製品

Apache OFBiz バージョン 24.09.06 未満 (18.12.x 系列全体/24.09.x-24.09.05 を含む)

  • cpe:2.3:a:apache:ofbiz:*:*:*:*:*:*:*:*
修正内容

Apache は以下 3 件のコミットで、この脆弱性へ対処している。

  • Commit 6516157:クライアント制御の requirePasswordChange HTTP パラメータを完全に削除し、login() 内の “requirePasswordChange” 分岐が、すべて “error” を返すよう変更された。また、このフラグは、データベースのユーザー・レコードからのみ取得される仕様となった。
  • Commit 771efc4:ProgramExport.groovy に ENTITY_MAINT 権限チェックを追加することで、未認証アクセス/低権限アクセスをブロックしている。
  • Commit c0592a3:SecureASTCustomizer を用いた厳格な Groovy サンドボックスの導入により、9 つの OFBiz エンティティ・クラスに限定された、インポート許可リストやレシーバ制御が実装された。さらに、Runtime/ProcessBuilder/.execute() など 40 以上の危険パターンをブロックする、正規表現ベース制御が組み込まれた。
検知および対策
  • ネットワーク検知 (Suricata):”/webtools/control/ProgramExport” への HTTP POST リクエストで、requirePasswordChange=Y と groovyProgram が同時に含まれる通信を監視する。この組み合わせは、正当な OFBiz 利用では発生しない。
  • ホスト検知 (YARA):LoginWorker.java において request.getParameter(“requirePasswordChange”) が検出される場合は、脆弱であると判断すべきだ。その反対に、userLogin.getString(“requirePasswordChange”) が検出される場合には修正済みとなる。併せて、ProgramExport.groovy をスキャンした、SecureASTCustomizer と ENTITY_MAINT の有無を確認する。
即時対策
  • Apache OFBiz 24.09.06 へと直ちにアップグレードする。
  • デモアカウントを削除/無効化する。または、デフォルト・パスワードを変更する。
  • WAF またはリバース・プロキシで、”/webtools/control/ProgramExport” へのアクセスを制限する。
  • requirePasswordChange=Y フラグを持つ全アカウントを監査し、アップグレード後に正しく適用されていることを確認する。

この脆弱性により、認証ロジック欠陥とサンドボックス不備が連鎖するため、単一リクエストによる完全な侵害が可能になる。したがって、きわめて高リスクと捉えるべきである。