午前I問題
ECサイトの決済ページで利用される外部JavaScriptライブラリ(アクセス解析タグ、チャットウィジェット等)に関する記述として、適切なものはどれか。
ア)外部サイトから読み込むJavaScriptは、読み込み元のサーバに一切変更がなければ、常に最初に確認した内容のまま変わることはない。
イ)外部から読み込むJavaScriptは、読み込んだページと同じDOM(ページ内のフォーム要素等)に対してアクセスできる場合が多く、読み込み元が改ざんされたりサプライチェーン上で悪意あるコードが混入したりすると、ページ内のフォーム入力(クレジットカード番号等)を窃取するコードが実行される危険がある。
ウ)HTTPSで配信されているページに埋め込まれた外部JavaScriptは、通信経路が暗号化されているため、スクリプトの内容自体が改ざんされている可能性を考慮する必要はない。
エ)外部JavaScriptライブラリの脆弱性は、ライブラリ提供元の内部処理に閉じており、埋め込んだWebサイトの利用者に影響が及ぶことはない。
午前I の解答・解説を見る
正解: イ
解説:
- ア)不正解。外部サーバから動的に配信されるJavaScriptは、サーバ側の設定やコード変更、あるいは不正アクセスによって配信内容がいつでも変わり得る。
- イ)正解。外部から読み込まれたJavaScriptは、通常、埋め込み先ページと同一オリジンのスクリプトと同様にそのページのDOM全体にアクセスできる。したがって配信元が侵害されたり、依存するサプライチェーン(サブリソースやCDN、広告タグ等)に悪意あるコードが紛れ込んだりすると、フォーム入力の盗聴や改ざんが可能になる。
- ウ)不正解。HTTPSは通信経路の暗号化・改ざん検知を提供するが、これは「配信元から利用者のブラウザまでの経路」を保護するものであり、配信元サーバ自体が侵害されて悪意あるコードを配信するようになった場合には無力である。
- エ)不正解。埋め込んだJavaScriptはページを閲覧する利用者のブラウザ上で実行されるため、ライブラリ提供元の脆弱性・侵害はそのまま埋め込み先サイトの利用者への実害(情報窃取等)に直結する。
午前II問題
「Webスキミング」および「Magecart型フォームジャッキング」に関する記述のうち、最も適切なものはどれか。
ア)Webスキミングとは、攻撃者がECサイトのデータベースに直接SQLインジェクションを行い、蓄積されたクレジットカード情報を一括で窃取する攻撃を指す用語である。
イ)Magecart型フォームジャッキングとは、攻撃者がECサイト(多くの場合Magentoなどのプラットフォーム)自体や、そのサイトが読み込むサードパーティ製JavaScript(決済連携・分析タグ等)を侵害してスキミング用の悪意あるコードを注入し、利用者が決済フォームに入力したクレジットカード番号等をリアルタイムで攻撃者のサーバに送信させる攻撃である。
ウ)Webスキミングは常に物理的なカードリーダー(スキマー装置)をATMに取り付ける手口を指し、Web上の攻撃には分類されない。
エ)Magecart型攻撃は、HTTPSによる通信の暗号化さえ導入すれば完全に防止できる。
午前II の解答・解説を見る
正解: イ
解説:
- ア)不正解。Webスキミングはデータベースへの直接攻撃ではなく、利用者のブラウザ上でリアルタイムに入力値を盗聴・送信させる手口を指す。DBに蓄積されたデータの一括窃取とは異なる。
- イ)正解。「Magecart」は当初ECプラットフォームMagentoを標的にした攻撃グループ・手法群の名称から広く一般化した用語で、ECサイト自体やサードパーティスクリプト(サプライチェーン)を侵害し、決済フォームへのキー入力やコピー内容を監視・送信する悪意あるJavaScript(フォームジャッキング)を注入する攻撃を指す。利用者が「送信」ボタンを押す前にリアルタイムでデータが窃取される点が特徴である。
- ウ)不正解。物理的なカードスキマーとは異なる、Web(ブラウザ上のJavaScript実行)を舞台にした攻撃であることが「Webスキミング」という名称の由来である。
- エ)不正解。HTTPSは通信経路の暗号化を提供するのみで、フォーム入力がJavaScriptによってブラウザ上で盗聴されアップロードされる場合は経路暗号化とは無関係に情報が窃取されてしまう。
午後問題
M社が運営するECサイトは、決済ページにおいて、自社実装の決済フォームに加え、広告効果測定のためのサードパーティ製アクセス解析タグ(外部CDNから <script src="https://analytics-vendor.example.net/tag.js"> として読み込み)を導入していた。ある日、複数の利用者から「サイトを利用していないのに身に覚えのないクレジットカード利用がある」との問い合わせが相次いだ。
調査の結果、以下が判明した。
- 外部の解析タグベンダーが不正アクセスを受け、配信している
tag.jsの内容が改ざんされ、決済フォームの入力欄(カード番号・有効期限・セキュリティコード)の値を監視し、入力の都度、攻撃者が管理する外部サーバへ非同期通信(fetchAPI)で送信するコードが混入していた。 - M社のサーバ・データベース自体には侵入の痕跡がなく、決済処理を担うバックエンドの実装にも問題は見つからなかった。
- M社は当該タグの読み込みについて、サブリソース完全性検証(SRI: Subresource Integrity)やContent-Security-Policy(CSP)による制限を導入していなかった。
設問1
この攻撃は何と呼ばれるか、名称を答えよ。また、「M社のサーバ・データベース自体には侵入の痕跡がない」にもかかわらず被害が発生した理由を、攻撃の実行場所に着目して50字以内で述べよ。
設問1の解答・解説を見る
正解例:
- 攻撃名:Webスキミング(Magecart型フォームジャッキング)
- 理由:悪意あるコードは利用者のブラウザ上で実行され、入力値をその場で外部に送信するため、M社サーバを経由・侵害する必要がないため(49字)。
解説: Webスキミングの本質的な特徴は、攻撃対象がM社のサーバやデータベースではなく「利用者のブラウザ上で実行されるJavaScriptの実行コンテキスト」である点にある。決済フォームの値はブラウザのメモリ上・DOM上で盗聴され、正規の決済処理とは別経路(攻撃者サーバへの非同期通信)でリアルタイムに窃取されるため、M社のサーバサイドのログやデータベースには一切の異常が残らない。
解説・採点基準(計15点):
| 採点項目 | キーワード | 配点 |
|---|---|---|
| 攻撃名にWebスキミング/Magecart/フォームジャッキングへの言及 | Webスキミング、Magecart、フォームジャッキング | 5点 |
| 理由に「ブラウザ上で実行される」旨への言及 | ブラウザ上、クライアント側実行 | 5点 |
| 理由に「M社サーバを経由しない」旨への言及 | サーバ非経由、直接外部送信 | 5点 |
設問2
M社が再発防止のために導入すべき技術的対策を2つ挙げ、それぞれがどのようにこの攻撃を防止・検知するかを説明せよ。
設問2の解答・解説を見る
正解例:
- 対策1(サブリソース完全性検証、SRI):
<script>タグにintegrity属性で正規のスクリプトのハッシュ値を指定しておくことで、ベンダー側で配信内容が改ざんされハッシュ値が一致しなくなった場合、ブラウザがそのスクリプトの実行を拒否し、悪意あるコードが動作しないようにする。 - 対策2(Content-Security-Policy、CSP):
connect-srcディレクティブで、決済フォームを含むページからの外部通信先を許可リスト方式で厳格に制限しておくことで、たとえ悪意あるコードが実行されても、許可されていない攻撃者サーバへのデータ送信(fetch/XMLHttpRequest)がブラウザによってブロックされ、情報窃取を防止・検知(違反レポートによる検知)できる。
解説: SRIは「改ざんされたスクリプトを実行させない」という予防的対策、CSPの connect-src 制限は「万一悪意あるコードが実行されても外部への情報送信を阻止する」という多層防御・被害極小化の対策であり、両者は補完関係にある。加えて実務では、決済フォームを別オリジンのiframe(決済代行事業者提供のホスト型フィールド等)に分離し、サードパーティスクリプトが直接フォームのDOMにアクセスできないようにする設計も有効な恒久対策として知られる。
解説・採点基準(計15点):
| 採点項目 | キーワード | 配点 |
|---|---|---|
| SRI(integrity属性)による改ざん検知・実行拒否への言及 | SRI、integrity、ハッシュ検証 | 7点 |
| CSP(connect-src等)による外部送信制限への言及 | CSP、connect-src、許可リスト | 8点 |
重要キーワード
| 用語 | 説明 |
|---|---|
| Webスキミング | 決済フォーム等への入力値を、ブラウザ上で動作する悪意あるJavaScriptがリアルタイムに窃取する攻撃 |
| Magecart | ECプラットフォームやサードパーティスクリプトを侵害しフォームジャッキングを行う攻撃手法・攻撃者群の総称 |
| サブリソース完全性検証(SRI) | 外部スクリプトのハッシュ値を指定し、改ざんされたスクリプトの実行をブラウザに拒否させる仕組み |
| Content-Security-Policy(CSP) | スクリプトの実行元や通信先をホワイトリスト形式で制限するHTTPレスポンスヘッダ |
| サプライチェーン攻撃 | 自社ではなく取引先・依存先(外部スクリプト提供元等)を侵害して間接的に標的に被害を及ぼす攻撃 |
| サプライチェーン攻撃(用語集) | Webスキミングもサードパーティ依存を悪用するサプライチェーン攻撃の一種として位置づけられる |
まとめ
- 午前I視点: 外部JavaScriptが埋め込み先ページと同じDOM操作権限を持つ点、HTTPSは配信元の侵害までは防げない点を理解する
- 午前II視点: Webスキミング(Magecart型フォームジャッキング)が、DBへの直接攻撃ではなくブラウザ上でのリアルタイム入力窃取である点を正確に区別する
- 午後視点: サーバに侵害痕跡がない理由(攻撃がクライアント側で完結する点)を説明できるようにし、SRIによる改ざん検知とCSPによる送信先制限という補完的な対策を具体的に述べられるようにする