問題の説明
入力検証と出力エンコードが欠落しているため、JavaScript インジェクションが可能になり、反射型クロス サイト スクリプティング (XSS) を引き起こします。
反射型クロス サイト スクリプティングを使用して、Microsoft System Center 2016 の認証済みページに任意の JavaScript を挿入する可能性があります。 以下の GET 要求をインターセプトし、SpaceID を変更して、任意の文字列を Web コンソールの左側のナビゲーション ペインに挿入できます。
GET/OperationsManager/InternalPages/NavigationTree.aspx?SpaceId=1002&ViewId=Favorites_Overview HTTP/1.1
任意の文字列の例を次に示します。
abc%3E%3C","00000000-0000-0000-0000-000000000000");alert(1);//%3E
悪意のある JavaScript が挿入されると、ページの現在の動作が変更されて、トロイの木馬、悪意のある強制リダイレクト、コンテンツのなりすまし、キーロガー、コンテンツの漏えい、ビュー ステートと検証コントロールのトークンの漏えい (CSRF 攻撃の防止の阻止) などが配信される可能性があります。
攻撃は次の手順で構成されています
-
攻撃者は、XSS ペイロードを使用して System Center の特定の認証済み GET 要求を作成し、被害者をだまして特別な URL にアクセスさせるか、ユーザーをだまして特定の要求をトリガーするフィッシング詐欺にアクセスさせます。
-
認証済みの被害者が、ホームページをロード/再読み込みします。
注: この攻撃は、任意の viewID 値と、SpaceID クエリ文字列パラメーターを持つすべての要求に適用されます。
テスト ケース
期待される結果: 無効な SpaceID エラーまたは空のペインで、ランダムな JavaScript の実行なし
結果: 任意の JavaScript が実行されました。
解決策
厳密な入力検証を実装します。 整数のみが SpaceID として受け入れられるため、入力に対するデータ型チェックで十分に脆弱性を修復できます。
SpaceID がサポートされている値 (1001 と 1002) のみであることを確認するためのチェックを追加しました。それ以外の場合、ツリー内のデータは空です。
関連情報
CVE-2020-1331の セキュリティ ガイダンス アドバイザリを参照してください。
セキュリティ分類
反射型クロス サイト スクリプティング、コンテンツのなりすまし