オンラインショッピングを利用する際、クレジットカード情報の入力は避けて通れません。しかし、その入力フォームが偽物だったとしたら…?セキュリティ研究者らが発見した長期的なウェブスキミングキャンペーンは、2022年1月から現在まで3年以上にわたって活動を続けており、世界中のECサイトで顧客のクレジットカード情報を窃取し続けています。この攻撃は「Magecart」と呼ばれる手法の一種で、American Express、Mastercard、Visa、JCBなど主要な決済ネットワークすべてが標的となっています。本記事では、この攻撃の仕組みを詳しく解説し、ECサイト運営者と利用者の双方が取るべき対策をご紹介いたします。
この記事のポイント
- 3年以上継続する大規模ウェブスキミングキャンペーンが発覚
- 偽の決済フォームで顧客のカード情報を窃取する巧妙な手口
- 管理者が閲覧している時は自動的に攻撃を停止する検出回避機能
- ECサイト運営者・利用者それぞれの具体的な防御策を解説
ウェブスキミングとは何か—デジタル時代のカード犯罪
ウェブスキミングとは、ECサイトの決済ページに悪意のあるJavaScriptコードを注入し、顧客が入力したクレジットカード情報を密かに窃取する攻撃手法です。従来の物理的なカードスキミング(ATMなどに装置を取り付けてカード情報を盗む手口)のオンライン版と言えます。この攻撃の厄介な点は、正規のECサイトが侵害されているため、利用者からは見分けがつかないことです。URLは正しく、SSL証明書も有効で、サイトの見た目も通常通り—しかし、決済フォームの裏側で情報が盗まれているのです。
「Magecart」という名称は、当初Magentoというオープンソースのeコマースプラットフォームを標的にしていたことに由来しますが、現在はWooCommerce、Shopify、その他あらゆる決済システムが攻撃対象となっています。今回発見されたキャンペーンは、その規模と持続期間において特に注目に値するものです。
攻撃の技術的な仕組み—巧妙に隠蔽されたスクリプト
今回発見された攻撃では、悪意のあるJavaScriptが「cdn-cookie[.]com」というドメインから配信されています。一見すると正規のCDN(コンテンツ配信ネットワーク)やCookie管理ツールのように見せかけていますが、実際には攻撃者が管理するサーバーです。スクリプトは「recorder.js」や「tab-gtm.js」といった、Google Tag Managerなどの正規ツールを装った名前が付けられており、ソースコードを確認しても見逃しやすくなっています。
スクリプトの内部は高度に難読化(コードを読みにくく変換する処理)されており、セキュリティツールや開発者による検出を困難にしています。このスクリプトがチェックアウトページで読み込まれると、顧客が入力するすべての情報を監視し始めます。特に巧妙なのは、Stripe決済が選択された場合の動作です。正規のStripe決済フォームを非表示にし、代わりに攻撃者が作成した偽のフォームを表示します。この偽フォームは見た目が本物そっくりで、顧客は何の疑いもなくカード番号、有効期限、CVCを入力してしまいます。
検出回避の手口—管理者を欺く自己防衛機能
この攻撃が長期間発覚しなかった理由の一つは、その巧妙な検出回避機能にあります。スクリプトは、ページ内に「wpadminbar」というDOM要素が存在するかをチェックします。これはWordPressの管理者ツールバーを示す要素で、サイト管理者がログインしている状態でページを閲覧すると表示されるものです。
管理者ツールバーが検出された場合、スキミングスクリプトは即座に自己削除シーケンスを開始します。つまり、ECサイトの運営者が自分のサイトをテスト購入などで確認しても、攻撃は実行されないのです。これにより、定期的なセキュリティチェックでも攻撃を発見することが極めて困難になっています。一般の顧客がアクセスした時のみ攻撃が実行されるという、まさに狡猾な設計と言えます。
窃取される情報と送信先—あなたのデータはどこへ?
攻撃によって収集される情報は、クレジットカード情報だけではありません。カード番号、有効期限、セキュリティコード(CVC)に加えて、氏名、電話番号、メールアドレス、そして配送先住所まで、チェックアウトフォームに入力されるすべての個人情報が対象となります。これらの情報があれば、不正なオンライン購入だけでなく、フィッシング攻撃やなりすまし詐欺にも悪用される可能性があります。
収集されたデータは、HTTP POSTリクエストによって「lasorie[.]com」というサーバーに送信されます。このサーバーは、制裁対象となっているホスティング業者「Stark Industries」(現在は「THE[.]Hosting」として活動)に関連付けられていることが判明しています。このホスティング業者は、過去にもサイバー犯罪インフラの提供で知られており、攻撃者にとって追跡を困難にする「防弾ホスティング」として利用されています。
実践してみよう
ECサイト運営者の方は、以下のコマンドで自サイトに不審なスクリプトが読み込まれていないか確認できます。
# サイトのHTMLから外部スクリプトを抽出してチェック
curl -s https://your-site.com/checkout | grep -oP 'src="[^"]*"' | grep -v 'your-domain.com'
# 不審なドメインのリストと照合(既知の悪意あるドメイン)
curl -s https://your-site.com/checkout | grep -E '(cdn-cookie|lasorie|recorder\.js|tab-gtm\.js)'
# Content Security Policyの確認
curl -sI https://your-site.com | grep -i 'content-security-policy'
# サブリソースインテグリティ(SRI)の確認
curl -s https://your-site.com/checkout | grep -oP 'integrity="[^"]*"'
これらのコマンドを定期的に実行し、許可していない外部スクリプトが読み込まれていないか監視することが重要です。また、Content Security Policy(CSP)を適切に設定することで、不正なスクリプトの読み込みを防ぐことができます。
セキュリティTips
-
CSPヘッダーの設定: Content-Security-Policyヘッダーで、許可するスクリプトソースを明示的に指定しましょう。
script-src 'self' https://trusted-cdn.com;のように設定することで、未知のドメインからのスクリプト実行を防げます。 -
SRIの活用: Subresource Integrity(SRI)を使用して、外部スクリプトのハッシュ値を検証しましょう。スクリプトが改ざんされた場合、ブラウザが読み込みを拒否します。
<script src="..." integrity="sha384-...">の形式で指定します。 -
定期的な監査: 管理者以外のブラウザ(シークレットモードなど)で定期的にチェックアウトフローをテストしましょう。攻撃者は管理者を検出して攻撃を停止するため、一般ユーザーとして確認することが重要です。
-
決済代行サービスの活用: 自サイトでカード情報を直接扱わず、Stripe ElementsやPayPal Checkoutなど、iframeで決済フォームを提供するサービスを利用することで、スキミングのリスクを大幅に軽減できます。
まとめ
今回発見されたMagecart攻撃キャンペーンは、3年以上にわたって検出を逃れながら活動を続けてきた非常に洗練された脅威です。管理者検出による自己削除機能、正規ツールを装ったスクリプト名、高度な難読化など、攻撃者は検出を回避するためにあらゆる手段を講じています。ECサイト運営者は、CSPやSRIの設定、定期的なセキュリティ監査、決済代行サービスの活用など、多層的な防御策を講じることが不可欠です。一方、利用者としては、不審な決済フォームに注意し、カード利用明細を定期的に確認することが重要です。オンラインショッピングは便利ですが、その便利さの裏側で攻撃者が虎視眈々と狙っていることを忘れてはなりません。
📎 元記事: Long-Running Web Skimming Campaign Steals Credit Cards From Online Checkout Pages


コメント