
CVE-2026-8239 は、Concrete CMS 9.5.0 以前に影響する Insecure Direct Object Reference (IDOR) 脆弱性です。この脆弱性は /ccm/frontend/conversations/get_rating エンドポイントに存在し、攻撃者が任意のメッセージ ID を指定することで、会話メッセージが存在するかどうかを判定し、その評価スコアを取得できるようにします。このエンドポイントは、要求された情報を返す前に適切な認可チェックを実行していません。
製品: Concrete CMS 影響を受けるバージョン: 9.5.0 以前 修正バージョン: 9.5.1 エンドポイント: /ccm/frontend/conversations/get_rating 脆弱性の種類 カテゴリ: Insecure Direct Object Reference (IDOR) CWE-862: 認可の欠如
このエンドポイントはクライアントからメッセージ ID を受け取り、要求元ユーザーがそのメッセージにアクセスする権限があるかどうかを検証せずに、そのメッセージに関する情報を返します。
アプリケーションは所有権や権限を検証する代わりに、ユーザーが指定した識別子を信頼します。
概念的には:
ユーザーが messageId を指定 ↓ サーバーがメッセージを特定 ↓ 認可チェックなし ↓ メッセージの評価を返す
認可チェックが欠如しているため、攻撃者はメッセージ ID を列挙して、アクセスすべきでない会話に関する情報を取得できます。
アプリケーションが会話メッセージを数値 ID で保存しているとします。
正規のリクエストは次のように参照される可能性があります:
GET /ccm/frontend/conversations/get_rating?messageId=125
攻撃者は単純に識別子を変更できます:
GET /ccm/frontend/conversations/get_rating?messageId=126
アプリケーションが 403 Forbidden や 404 Not Found を返す代わりに評価スコアで応答した場合、攻撃者はメッセージが存在することを確認し、その評価情報を取得できます。
これは、オブジェクト識別子だけが変更され、悪意のあるペイロードやインジェクションコマンドが不要であるため、典型的な IDOR です。
攻撃者は以下を行うことができます:
有効な会話メッセージ ID を列挙する。 特定のメッセージが存在するかどうかを確認する。 アクセス権のないメッセージの評価スコアを取得する。 プライベートな会話に関する限定的な情報を得る。
この脆弱性は主に機密性に影響します。認可されていないユーザーが保護されるべき情報にアクセスできるためです。
メトリック スコア CVSS v3.1 (NVD) 5.3 – Medium CVSS v4.0 (Concrete CMS CNA) 6.3 – Medium
ベンダーは実際の脆弱なソースコードを公開していません。次の例は脆弱性パターンのみを示しています。
$messageId = $_GET['messageId'];
$message = $conversationRepository->findMessage($messageId);
// 認可チェックなし return response()->json([ 'rating' => $message->getRating() ]);
アプリケーションはユーザーが指定した ID のみに基づいてメッセージを取得し、その評価をすぐに返します。現在のユーザーがそのメッセージにアクセスできるかどうかは決してチェックしません。
$messageId = $_GET['messageId'];
$message = $conversationRepository->findMessage($messageId);
if (!$authorizationService->canViewMessage($currentUser, $message)) { return response()->json([ 'error' => 'Access denied.' ], 403); }
return response()->json([ 'rating' => $message->getRating() ]);
修正された実装は、評価を返す前に、認証されたユーザーが要求されたメッセージを表示する権限を持っていることを検証します。攻撃者が messageId を変更した場合でも、サーバーは認可を強制し、HTTP 403 Forbidden 応答で不正なリクエストを拒否します。これにより、ユーザーが表示を許可されたリソースのみにアクセスできることが保証され、IDOR が防止されます。