
CVE-2026-8347 — Updated!
CVE-2026-8347 は、Concrete CMS バージョン 9.5.0 以前における、不適切な認可レベルと組み合わされた Insecure Direct Object Reference (IDOR) です。この脆弱性は Express アソシエーションの Reorder ダイアログに存在し、Express エントリに対する閲覧権限のみを持つユーザーが、別のエンティティのアソシエーションの順序を変更できるようになります。
CVE-2026-8347 – Concrete CMSにおける安全でない直接オブジェクト参照(IDOR)
概要
CVE-2026-8347 は、Concrete CMS バージョン 9.5.0以前 に影響を与える安全でない直接オブジェクト参照(IDOR) の脆弱性です。この問題は、不十分な認可チェックにより Express Association Reorder 機能に存在します。
ユーザーが関連付けを並べ替える際、アプリケーションはユーザーがExpressエントリを閲覧する権限を持っていることを検証しますが、変更する権限を持っているかどうかは確認しません。その結果、権限が制限された認証済みユーザーが別のExpressエンティティの識別子を操作し、編集権限がなくてもその関連付けを並べ替えることができます。
SQLインジェクションやリモートコード実行の脆弱性とは異なり、この欠陥は悪意のあるコマンドやコードの注入を伴いません。代わりに、ユーザーが制御するオブジェクト識別子(エンティティIDなど)を変更して別のユーザーのリソースを参照することで、破損したアクセス制御を悪用します。サーバーが要求されたオブジェクトに対する認可を適切に検証しないため、攻撃者が変更すべきでないデータに対して操作を実行します。
概念的な脆弱なロジック:
// ユーザーが関連付けの並べ替えを要求 $entityId = $_POST['entityId'];
$entity = $entityRepository->find($entityId);
// ユーザーがエンティティにアクセスできることのみを検証 if ($permissionChecker->canView($entity)) {
// 編集権限を確認せずに関連付けを並べ替え
$associationService->reorder($entity, $_POST['order']);
return response()->json([
'status' => 'success'
]);
}
なぜ脆弱なのか
アプリケーションは、状態を変更する操作を実行する前に閲覧権限のみを検証します。
攻撃者はリクエスト内のentityIdパラメータを変更して別のユーザーのエンティティを参照できます。変更自体に対する認可チェックが実行されないため、並べ替え操作は許可されていないリソースに対して成功します。
影響
攻撃が成功すると、認証済みユーザーは以下を行う可能性があります:
- 別のExpressエンティティに属する関連付けの順序を変更する。
- アプリケーションデータに対して許可されていない変更を実行する。
- 保存された情報の整合性を損なう。
この脆弱性は主にデータの整合性に影響を与え、本質的にSQLインジェクション、リモートコード実行、または認証バイパスを許可するものではありません。
修正されたコード(概念)
アプリケーションは、並べ替えリクエストを処理する前に、認証済みユーザーが特定のエンティティを変更する権限を持っていることを検証する必要があります。
$entityId = $_POST['entityId'];
$entity = $entityRepository->find($entityId);
// 変更権限を検証 if (!$permissionChecker->canEdit($entity)) {
return response()->json([
'error' => 'Access denied.'
], 403);
}
// ユーザーは認可されている $associationService->reorder($entity, $_POST['order']);
return response()->json([ 'status' => 'success' ]);
影響を受けるソフトウェア
- 製品: Concrete CMS
- 影響を受けるバージョン: 9.5.0以前
- 修正バージョン: 9.5.1
緩和策
Concrete CMS 9.5.1 以降にアップグレードしてください。開発者は、状態を変更するすべてのリクエストに対して適切なサーバー側の認可チェックを実施し、ユーザーが明示的に編集を許可されたリソースのみを変更できるようにする必要があります。