ScriptCase の脆弱性 CVE-2025-47227/47228:RCE の可能性に No Patch/Yes PoC

ScriptCase Vulnerabilities Let Attackers Execute Remote Code and Gain Server Access

2025/07/07 CyberSecurityNews — ScriptCase の Production Environment モジュールに存在する、2つの深刻な脆弱性を連鎖的に悪用する未認証の攻撃者は、サーバ上でリモート・コマンド実行の可能性を得るという。これらの脆弱性 CVE-2025-47227/ CVE-2025-47228 が影響を及ぼす範囲は、ScriptCase バージョン 9.12.006 (23) に含まれる Production Environment モジュールのバージョン 1.0.003-build-2 である。ただし、以前のバージョンも影響を受ける可能性があるという。

主なポイント
  1. ScriptCase Production Environment モジュールに存在する、2つの深刻な脆弱性により、サーバが完全に乗っ取られる可能性がある。
  2. これらの脆弱性を悪用してシステムを侵害する攻撃者は、ログイン認証情報を必要としない。
  3. パスワード・リセットのバイパスと、シェル・インジェクションの連携により、3つの簡単な手順で、システムへの完全なアクセスが可能となる。
  4. この脆弱性を悪用する攻撃者は、サーバの完全な制御とデータベースへのアクセスを取得できる。

ScriptCase は、GUI を介して PHP Web アプリケーションを生成する、人気のローコード・プラットフォームである。そこに含まれる Production Environment モジュールは、データベース接続およびディレクトリ管理のための管理コンソールとして機能し、通常は生成された Web サイトと共にデプロイされる。

この脆弱性は、SYNACTIV チームにより発見された。

認証バイパスの脆弱性:CVE-2025-47227

1つ目の脆弱性は、Production Environment のパスワード・リセット機能における、認証メカニズムの欠陥に起因する。この問題は nmPageProdLogin.class.php 内の changePass() 関数に存在し、カレントのパスワードを検証することなく、メール・アドレスと新しいパスワードのみを要求する。

この脆弱性の原因は、セッション変数 nm_session.prod_v8.login.is_page が、最初の AJAX リクエスト処理後に設定されるという、タイミングの問題にある。したがって、同一の PHPSESSID Cookie を用いる攻撃者は、2つの連続したリクエストを送信することで、この保護を回避できる。

この脆弱性の悪用には、以下の3ステップが必要となる:

  1. login.php への GET リクエストにより、セッション変数を true に設定する。
  2. secureimage.php へのリクエストにより、CAPTCHA チャレンジを取得する。
  3. nm_action=change_pass を指定する POST リクエストを送信し、管理者パスワードをリセットする。

この POST リクエストには、email=attacker@example.orgpass_new=Synacktiv6pass_conf=Synacktiv6 に加えて、解決済の CAPTCHA 値が取り込まれている。このプロセスにより、認証は完全にバイパスされ、Production Environment コンソールへの管理者アクセスが許可される。

シェル・インジェクションの脆弱性:CVE-2025-47228

2つ目の脆弱性は、データベース接続のための SSH コンフィグに存在する。nmPageAdminSysAllConectionsCreateWizard.class.php ファイルに含まれる GetListDatabaseNameMySql() 関数に存在する、シェル・インジェクションの脆弱性により、サニタイズされていないユーザ入力が SSH コマンドに連結される。

脆弱なコードは、以下の形式で SSH コマンドを構築する。
ssh -fNg -L $localPort:$server:$port $sshUser@$sshHost

特に ssh_localportforwarding パラメータが悪用されやすく、; touch ghijkl ;# などの入力により、shell_exec() を介した任意のコマンド実行が可能になることが実証されている。

admin_sys_allconections_test.php にアクセスする攻撃者は、SSH 設定フォームから悪意のペイロードを送信することで、この脆弱性を悪用できる。この脆弱性の悪用により、Web サーバ権限 (通常は www-data) による、任意のシステム・コマンド実行が可能になる。

ーーーーー

研究者たちが開発したのは、2つの脆弱性を連携させ、OCR 技術で CAPTCHA を解決する、自動化された PoC エクスプロイト・スクリプトである。このスクリプトは、ScriptCase のデプロイメント・パスを自動検出し、攻撃を自動化するものである。

CVE の説明と影響の範囲
CVEsDescriptionAffected ProductsCVSS 3.1 Score
CVE-2025-47227Administrator’s Password Reset (Authentication Bypass)Production Environment module v1.0.003-build-2 (ScriptCase v9.12.006-23), likely previous versions7.5 (High)
CVE-2025-47228Shell Injection (Remote Command Execution)Production Environment module v1.0.003-build-2 (ScriptCase v9.12.006-23), likely previous versions6.7 (Medium)

この記事の執筆時点において、ScriptCase は CVE-2025-47227 (認証バイパス)/CVE-2025-47228 (シェル・インジェクション) に関する公式パッチを公開していない。

最も効果的で即時性のある保護策は、ネットワーク境界レベルにおいて、ScriptCase Production Environment 拡張機能へのアクセスを制限することである。

特にリモート・コマンド実行の脆弱性に関しては、以下のパスをブロック・リストに追加すべきである。

  • /prod/lib/php/devel/iface/admin_sys_allconections_test.php
  • /prod/lib/php/devel/iface/admin_sys_allconections_create_wizard.php

これらの制限は、2つの攻撃ベクターを効果的に無効化し、個別にデプロイされた ScriptCase 開発環境の、機能を維持できるものである。