CVE-2025-60500 — 安全でないファイルアップロード / QDocs Smart School のロジック欠陥(Smart School 7.1)
公開日: 2025-10-17
著者 / 発見者: Lebas Vivien
ステータス: 予約済み
CVE: CVE-2025-60500(予約済み)
概要
QDocs Smart School — School Management System 7.1 における安全でないファイルアップロード / ロジック欠陥により、accountant、admin、superadmin などのロールを持つ認証済みユーザーが、代替の YouTube URL オプションを悪用してメディアアップロード機能のファイルタイプ制限をバイパスできます。この欠陥により、攻撃者は任意の PHP ファイルを Web アクセス可能なディレクトリに保存させ、アップロードされたファイルにアクセスするとリモートコード実行が可能になります。
影響を受ける製品: Smart School : School Management System 7.1(QDocs)
ベンダー確認済み: はい
影響
- アップロードされた PHP ファイルが Web アクセス可能なディレクトリに配置されることによるリモートコード実行(RCE)。
- 指定されたロールを持つ認証済みユーザーは、予測可能な Web アクセス可能なパスに保存される任意の PHP ファイルをアップロードできます。
- 攻撃者はアップロードされたファイルを呼び出すことで、システムコマンドを実行したり、環境内へのさらなる侵入を試みたりする可能性があります。
影響を受けるコンポーネント
- ファイルアップロード機能 — Download Center > Upload Share Content(メディアアップロード / 共有コンテンツフロー)
攻撃タイプ / ベクター
- 攻撃タイプ: リモート(accountant/admin/superadmin ロールの認証済みアカウントが必要)
- 攻撃ベクター: 代替の YouTube URL オプションと組み合わせたアップロードフロー。アップロードされたファイルと YouTube リンクフィールドの両方を送信することで、サーバーはアップロードされたファイルを
.php 拡張子で Web アクセス可能なディレクトリに保存します。
再現手順(概念的な PoC — 実行可能なペイロードは含まれません)
- Smart School に
accountant、admin、または superadmin ロールのユーザーとしてログインします。
- Download Center → Upload Share Content に移動します。
- アップロード / 共有ワークフロー中に HTTP リクエストを(例:Burp などのプロキシを使用して)傍受します。
- ファイル名が
.php で終わるファイルをアップロードします(サーバー側のチェック / フィルターは、通常のファイルタイプ検証を通じて PHP アップロードをブロックしようとします)。
- 同じアップロード / 送信リクエストで、代替の YouTube URL フィールドにも値を入力します(YouTube オプションを処理するロジックパスが、アップロードされたファイルの受け入れと保存を誤って許可します)。
- 共有 / アップロードフローを完了し、サーバーの応答を確認するか、返された保存ファイルパスを観察します(アプリケーションが保存パスを公開します)。観察された保存パスパターンの例: /uploads/school_content/material/media/!file.php
- 返された URL を介して保存された
.php ファイルにアクセスし、コード実行をトリガーします(ファイルに実行可能な PHP コードが含まれている場合)。
概念実証(高レベル)
- 脆弱なフローを介してアップロードされた PHP ファイルは、Web アクセス可能なディレクトリに書き込まれ、HTTP で直接呼び出すことができます。
- この脆弱性はロジック / 検証バイパスです(代替の YouTube URL コードパスが、通常のアップロードフローと同じ厳格なファイルタイプ制限を適用できていません)。
緩和策 / 推奨される修正
ベンダー側の修正(推奨):
- ロジック欠陥を修正し、代替の YouTube URL パスおよびその他の特殊なアップロードパスが、通常のアップロードフローと同じファイルタイプ検証とフィルタリングを適用するようにします。また、YouTube URL が有効 / 存在するかどうかも確認します。
- アップロードされたファイルの実行をブロックするため、アップロードされたコンテンツを Web ルート外に保存するか、サーバー側コードを決して実行しない安全なハンドラーを通じてアップロードを提供します。
- サーバー側の MIME タイプと拡張子チェックを実施し、ブラックリストではなく許可されたファイルタイプのホワイトリストに対して検証します。
- 保存されたファイルを安全な拡張子にリネームし、元の拡張子を保持せずに名前をランダム化します。
- 正しいサーバー権限を設定し、アップロードされたファイルが実行可能にならないようにします(例:
chmod で実行権限を削除、アップロードディレクトリで PHP を実行しないように Web サーバーを設定)。
- 不審なアップロードとアップロードされたファイルへのアクセス試行のログ記録と監視を追加します。
- ロールベースの制限を適用 — コンテンツのアップロードを許可するロールを厳格化し、特権ロールには追加の検証を要求します。
管理者向けの回避策:
- 可能であれば、問題のあるアップロード / 共有機能を一時的に無効化します。
- アップロードアクセスを少数の信頼できるアカウントに制限します。
/uploads/... ディレクトリでの .php の実行を禁止するように Web サーバーを設定します。
参考情報
- 報告されたデモインスタンス:
https://smart-school.in/demo
- MITRE CVE ID 予約済み: CVE-2025-60500