SSTによる安全なWebサイト運営のためのセキュリティ情報

エンジニアブログ
  • shareSNSでシェア
  • Facebookでシェアする
  • Xでシェアする
  • Pocketに投稿する
  • はてなブックマークに投稿する

最近流行りのWebスキミングについて調べてみた

こんにちは!もう新卒エンジニアとは言えなくなった西尾です!(社会人2年目)

最近、世界的に流行っているWebスキミングについて調べていたのですが、意外と日本語の情報が少なかったので、今回はWebスキミングについて調べた内容をブログにまとめてみました。

Webスキミングとは

Webスキミング(Web skimming)とは、その名の通り Web版のスキミング です。具体的には、ECサイトなどの決済画面に不正なスクリプトを埋め込み、ユーザがフォームに入力したクレジットカード情報を窃取する攻撃です。
一般的には「フォームジャッキング」とも呼ばれている攻撃ですが、個人的には「Webスキミング」の方が直感的に分かりやすいかなぁと思ってます。

Webスキミング自体は数年前から発生していたようですが、昨年イギリスの大手航空会社が大きな被害を受けたことがきっかけで有名になり、最近は世界中でスキミング被害が増えているそうです。攻撃が増加した背景としては、現在は中小企業でも簡単に独自のECサイトを開設できる環境であり、先進国を中心にECサイト(ネットショップ)が増えていること1が関係していると思われます。また、サイバー犯罪者がランサムウェアや不正マイニングで稼げなくなっていること2も理由として挙げられます。

2種類の攻撃手法(+1おまけ)

ここからはWebスキミングについて具体的に説明していきます。
私が調べたところ、Webスキミングの攻撃手法はいくつかあったのですが、ここではその中でも主流な攻撃手法である スキマー挿入型サプライチェーン攻撃 の2種類について説明します。また、関連した攻撃手法として、 偽の決済画面に誘導 する手法についても紹介しておきます。

スキマー挿入型

最も定番な攻撃手法で、標的とするWebサイトの決済画面で使用されているJavaScriptを改ざんして直接スキミングコード(スキマー)を埋め込み、サイト利用者がフォームに入力したクレジットカード情報を窃取する攻撃です。
攻撃の流れは下図の通りで、シンプルです。

 

Webスキミング(スキマー挿入型)の流れ

Webスキミング(スキマー挿入型)の流れ

 

  1. 攻撃者が何らかの脆弱性を突き、標的とするWebサイトのサーバに侵入します。その後、決済画面で使用されているJavaScriptを改ざんし、スキミングコードを埋め込みます。
  2. 被害ユーザが決済画面でクレジットカード情報をフォームに入力し、決済処理を実行します。
  3. 2で決済処理を行う(送信ボタンをクリックする)タイミングで、攻撃者のサーバにもフォームに入力されたクレジットカード情報を秘密裏に送信します。

スキマー挿入型の特徴として、攻撃者は各標的の決済画面に合わせてスキミングコードをカスタマイズします。そうすることで、攻撃者は欲しい情報(クレジットカード情報など)だけを確実に窃取でき、さらに被害者のブラウザ上では余計なスクリプトエラーが発生しなくなり、被害者はスキミングされていることに気づきにくくなります。また、Webサイトの管理者もコードの改ざんに気づかない限りは、秘密裏にスキミングが行われていることに気づけないと思われます。

サプライチェーン攻撃

サードパーティのサービスが提供している正規のJavaScriptライブラリを改ざんしてスキミングコードを埋め込み、その改ざんされたJavaScriptライブラリを使用したWebサイト上でスキミングを行う攻撃です。下図は広告配信サービスのJavaScriptライブラリを改ざんした例ですが、攻撃の流れは同じです。

 

Webスキミング(サプライチェーン攻撃)の流れ トレンドマイクロセキュリティブログより転載3

Webスキミング(サプライチェーン攻撃)の流れ トレンドマイクロセキュリティブログより転載3

 

  1. 攻撃者がJavaScriptライブラリの提供者の環境に侵入します。その後、配布されるJavaScriptライブラリを改ざんし、スキミングコードを埋め込みます。
  2. ECサイトが改ざんされたJavaScriptライブラリをダウンロードし、決済画面でそのライブラリを使用します。
  3. 被害ユーザが決済画面でクレジットカード情報をフォームに入力し、決済処理を実行します。
  4. 3で決済処理を行う(送信ボタンをクリックする)タイミングで、攻撃者のサーバにもフォームに入力されたクレジットカード情報を秘密裏に送信します。

この攻撃手法の特徴として、攻撃者は実質1回の改ざんで多数のECサイトにスキミングコードを設置することができます。また、ECサイトの管理者は、自身のWebサイトが改ざんされたわけではないので、スキミングコードに気づくのは困難だと思われます。しかしデメリットとして、この改ざんライブラリが決済画面で使用されないと意味がないのと、Webサイトによってはうまくスキミングできない可能性があります。

偽の決済画面に誘導

Webスキミングというよりフォームジャッキングっぽいですが、偽の決済画面に誘導する攻撃手法についても紹介しておきます。
概要としては、ECサイトを改ざんして攻撃者が用意した偽の決済画面に誘導し、被害者ユーザがその偽の決済画面上で入力したクレジットカード情報を取得する攻撃です。
↓↓詳しくは徳丸さんのブログをご参照ください↓↓

ECサイトからクレジットカード情報を盗み出す新たな手口

代表的な被害事例

ここではWebスキミングと、その犯人であるMagecartが有名になった事件を2つ紹介します。ちなみに Magecart とは、Webスキミングを行う複数の犯罪集団の総称だそうです4

ブリティッシュ・エアウェイズ

ブリティッシュ・エアウェイズ(British Airways)とは、イギリスの大手航空会社で、日本では「英国航空」とも呼ばれています。
この航空会社の公式Webサイトが改ざん被害に遭い、2018年8月21日~9月5日の期間に航空券の予約や変更を行った人の約38万件の個人情報とクレジットカード情報が窃取されたそうです5 6
詳しい攻撃の内容はRiskIQのブログで公開されているので、ここでは簡単に概要だけ説明します。

https://www.riskiq.com/blog/labs/magecart-british-airways-breach/www.riskiq.com

攻撃の流れは下図の通りで、スキマー挿入型の攻撃手法です。

 

ブリティッシュ・エアウェイズの被害事例

ブリティッシュ・エアウェイズの被害事例

 

  1. 攻撃者が公式Webサイト上で利用されている既存のJavaScriptファイルを改ざんし、末尾にスキミングコードを追記します。
  2. 被害者ユーザがWebサイトかスマホアプリから航空券の予約を行い、この際に個人情報とクレジットカード情報をフォーム入力します。
  3. 2で被害者ユーザがボタンをクリックしたタイミングで、フォームに入力済みの個人情報とクレジットカード情報が攻撃者に送信されます。

改ざんによって挿入されたスキミングコードは、整形するとたったの22行しかなく、非常にシンプルなJavaScriptコードでした。また、スマホアプリは公式Webサイトと同じCSSやJavaScriptを読み込んでおり、改ざんされたJavaScriptファイルも読み込んでいたようです。そのため攻撃者は、スキミングする際にスマホ操作のイベントも検出することで、スマホアプリから航空券を予約した場合でもクレジットカード情報の窃取が可能でした。

チケットマスター

2つ目はチケットマスター(Ticketmaster)というアメリカの大手チケット販売会社の被害事例です。
これはMagecartによるサプライチェーン攻撃で、RiskIQによると800サイト以上が影響を受けたそうです。その中でもチケットマスターは最大4万人の個人情報とクレジットカード情報が流出したという報道7もされており、大きな被害を受けていました。
この攻撃の詳細もRiskIQのブログで公開されているので、ここでは簡単に概要だけ説明します。

https://www.riskiq.com/blog/labs/magecart-ticketmaster-breach/www.riskiq.com

攻撃の流れは下図の通りで、サプライチェーン攻撃の手法です。

 

チケットマスターの被害事例

チケットマスターの被害事例

 

  1. 攻撃者はJavaScriptライブラリを提供しているサービス(この事例の場合は「Inbenta」)の環境に何らかの方法で侵入し、配信されているJavaScriptライブラリにスキミングコードを埋め込みます。
  2. チケットマスターが改ざんされたJavaScriptライブラリをダウンロードし、決済画面でも利用します。
  3. 被害者ユーザがチケットマスターの決済画面で個人情報とクレジットカード情報をフォーム入力します。
  4. 3で被害者ユーザがボタンをクリックしたタイミングで、フォームに入力済みの個人情報とクレジットカード情報が攻撃者に送信されます。

改ざんによって挿入されたスキミングコード自体はシンプルでしたが、javascriptobfuscator.comのツールで難読化されていたそうです。
この攻撃はサードパーティのJavaScriptライブラリを改ざんするサプライチェーン攻撃であるため、スキミングコードがECサイトや決済画面以外でも実行する可能性があります。そのため攻撃者は、URLに「order」や「checkout」など特定の単語が含まれる画面上でのみスキミングを実行するように設定し、できるだけ無駄な攻撃を行わないようにしていました。

国内の被害状況

日本でもWebスキミング被害が発生していないか調べたところ、ここ数ヶ月で以下のWebサイトが被害を公表していました。

公表日順(2019年4月~8月)

上記Webサイトのリリースでは、「不正アクセスによりカード入力フォームを改竄され、 入力したカード情報を不正に取得される状態となっていました。」などの記載があったり、クレジットカード情報を非保持化しているにも関わらず漏えいしていること、またセキュリティコードまでが流出していることから、Webスキミングによる被害である可能性が高いと考えています。

国内の被害事例から分かること

上記の被害事例から分かるWebスキミングの特徴として、カードの名義人名・番号・有効期限のほかに、セキュリティコードまで漏えいしていることと、氏名や住所などの個人情報も併せて漏えいしていることが挙げられます。WebスキミングはSQLインジェクションなどでDBに保存されているクレジットカード情報を抜き取る攻撃とは異なり、ユーザがフォームに入力した情報を窃取する攻撃であるため、このような重要情報も漏えいしてしまいます。フォームに入力した情報を窃取する攻撃なので、例えクレジットカード情報を非保持化しているWebサイトであっても漏えい被害にあってしまいます。

次に、上記の被害サイトを見てみると、その多くが中小規模のECサイトでした。Webスキミングが増加した背景でも述べたのですが、現在は中小企業でも簡単に独自のECサイトを開設できる環境にあります。しかしその分、人材やコストの面から十分なセキュリティ対策ができていないECサイトも多く誕生していると考えられるため、中小規模のECサイトはサイバー犯罪者の標的になりやすいのではないでしょうか。

最後に上記事例の漏えい期間に注目してもらうと、その大半がWeb改ざんに気づくまでに数ヶ月かかっていることが分かります。その理由は、多くのWebサイトが改ざんチェックを行っていないか改ざんを見逃しており、実際にカード情報が流出し、悪用されてから改ざんに気づくため、改ざん期間(漏えい期間)が長くなっていると考えられます。実際、上記事例の多くがクレジットカード会社や決済代行会社から連絡を受けて情報漏洩の原因調査を開始していました。

おわりに

本記事では、最近国内でも流行ってるWebスキミングについて調べた内容を簡単にまとめてみました。もっとWebスキミングについて詳しく知りたい方は、ぜひ下記の参考文献をご覧ください。
最後に、ECサイト管理者が行うべき対策は、使用しているソフトやシステムを最新の状態に保つ、適切な管理者パスワードを設定するなど、基本的なセキュリティ対策をとるのが一番だと思われます。また、そのほかにもWAF(Webアプリケーションファイアウォール)や改ざん検知システムを導入することで、改ざん被害を防いだり、改ざんの早期発見が可能となるため、Webスキミングに対する効果的な対策になると考えられます。

  • 更新履歴
    • 「標的型攻撃」を「スキマー挿入型」に変更(2020/2/7)

参考文献

  • shareSNSでシェア
  • Facebookでシェアする
  • Xでシェアする
  • Pocketに投稿する
  • はてなブックマークに投稿する

この記事の筆者

筆者