Fox on Security

セキュリティリサーチャー(インシデントアナリスト)で、セキュリティコンサルタントのキタきつねの独り言。専門はPCI DSS。

VisaのBakaスキマーへの注意喚起

VisaがECサイトの攻撃(カード情報窃取)に使われるBakaと命名された新たなスキマーを使った攻撃への注意喚起を出しています。

www.bleepingcomputer.com

Visaは、盗まれたデータを引き出した後にメモリから自分自身を削除するBakaと呼ばれる新しいJavaScript eコマーススキマーに関する警告を発行しました。
(中略)
構成可能なターゲットフォームフィールドや画像リクエストを使用したデータの引き出しなどの通常の基本的なスキミング機能に加えて、バカは高度なデザインを備えており、熟練したマルウェア開発者の仕事であることを示し、独自の難読化方法とローダーも備えています
「スキマーは静的なマルウェアスキャナーを回避するために動的に読み込まれ、各被害者に固有の暗号化パラメーターを使用して悪意のあるコードを難読化します」とVisaの警告は述べています。

PFDは、開発者ツールを使用した動的分析の可能性を検出したとき、またはデータが正常に抽出されたときに、このスキマーバリアントがメモリから自身を削除することにより、検出と分析を回避することを評価します。」

(Bleeping Computer記事より引用)※機械翻訳

 

Visaの注意喚起(Visa Security Alert)

 

キタきつねの所感

Visaは去年このBakaを2020年2月に最初に発見していますが、既に多数のECサイトに広がっているとしています。

 

ECサイトが侵害を受けた部分については、この注意喚起には書かれていませんが、一度ECサイトに侵入された後、独自のローダーが仕掛けられ、動的にロードし、被害者毎に独自の暗号パラメーターで悪意のあるコードを難読化します。

さらに、検出と分析を困難にするために、動的分析された時と、正常にデータを抽出(カード情報窃取)した際に、メモリからスキマーを削除する機能も備えています。

 

マルウェアローダー

f:id:foxcafelate:20200908060529p:plain

 

狙っているのは清算(Checkout)ページですが、ここでの動作が以下の様に分析されています。

1. ハードコードされた鍵を使用して、ハードコードされたC2 URLを復号化する
2. 2. コードをスキミングするために、C2 URL に送信するための乱数を生成します。
3. スキマー C2 は、_scriptCallback という名前の変数をリクエストを受信した暗号化されたC2 URL (例: https://example[.]com/skimmer.js?q=0.123456890)。この戻り値は復号化され、2 回目にロードされます。C2 サーバは 2 回目の要求に応答し暗号化されたスキミングコードに変換します。

4. その後、ローダーはスキミングコードを解読し、メモリ内で実行しますスキミングコードは、加盟店のサーバーには存在せず、顧客のコンピュータにも保存されません

(Visa Security Alertより引用)※機械翻訳

 

フォレンジック調査ならともかく、一般企業ではカード情報漏えいに気づくのが困難な攻撃である事がよく分かります。

 

更に気になる事が書かれていました。

スキマーがデータを見つけたかどうかを 100 ミリ秒ごとにチェックします (例: 'this.rendered' が True)。この関数はその後、データの取り出しを行い、スキマーがデータの取り出しに成功したことを示す'this.load'というフラグを設定する。

スクリプト3秒ごとに脱出ゲートウェイにデータを送信するかどうかを確認します。キャプチャされたデータフラグが設定されている場合は、不正侵入ゲートウェイのURLは、現在の被害者マーチャントのドメイン名をキーとして使用します。次にスクリプトは、スキミングされたデータを脱出URLのGETパラメータにエンコードします。この URL は画像へのリンクに似ていますが、その場所には画像は存在しません。その後、マルウェアは画像タグを追加して、流出URLを加盟店のWebページにリンクさせ、盗み出されたデータが添付された悪意のあるURLにリクエストが送信され、検出を避けるために3秒後に削除します

(Visa Security Alertより引用)※機械翻訳

 

100ミリ秒毎に対象フィールド(清算ページ)をスキミングし、データ検出したかどうかを100ミリ秒毎にチェックし、3秒毎にデータをゲートウェイに送信するかを判断し、データ送信後は3秒前にその痕跡を削除する

この動作だと非常に少量のデータしか外部に飛びませんので、ECサイト側が例えば外部ファイル転送の容量などを閾値に攻撃を検知する事も困難になります。

 

さらに検出を防ぐために、BakaはXOR暗号を使ってハードコードされた値を暗号化し、難読化することでC2によって配信されたコードをスキミングする様です。これもECサイト(防衛)側の解析を困難にするやり方です。

1. 復号化関数は、文字列を2つの文字列のリストに分割します。
2. 次に、この関数は、2文字の文字列を16進数として解析し、それを整数に変換します。
3. 結果として得られる整数は、復号化関数を作成する際に与えられたキーを用いて復号化されます。
4. 最後に,この関数は整数を文字に変換し,結果として元の平文が得られます

(Visa Security Alertより引用)※機械翻訳

 

ここまで読むと、よほどしっかりした多層防御や検知する仕組みを持ったECサイトでないとスキマーを仕掛けられたら対処(防御)が難しい気がします。

 

しかしVisaの注意喚起には以下のベストプラクティスも書かれていますので、ECサイトは、こちらを参考にすると良いかと思います。

日本ではカード情報非保持のECサイトが多く、自社サイトは安全であると過信している可能性があります。Bakaは一種のAPT攻撃だと思いますが、Visaが注意喚起を出す程に、世界中で流行する兆しを見せている訳ですから、下記の中で適切な対策を自社サイトに取り入れる事を検討すべきかと思います。

ベストプラクティスと緩和策
- E コマース環境において、C2 との通信のための定期的なチェックを実施する。
- サービス プロバイダを介して e コマース環境に統合されたコードに精通し、警戒を徹底する。
- 利用されているコンテンツ配信ネットワークCDN)およびその他のサードパーティのリソースを精査する。
- eコマース サイトを定期的にスキャンし、脆弱性マルウェアがないかテストする。eコマース環境のセキュリティを確保するために、セキュリティに定評のある信頼できる専門家やサービスプロバイダを雇う。質問をし、徹底的な報告を求める。信頼しますが、雇った会社が行った手順を確認してください。
- 定期的にショッピングカート、その他のサービス、すべてのソフトウェアが最新バージョンにアップグレードされているか、またはパッチが当てられているかを確認し、攻撃者が侵入しないようにします。ウェブアプリケーションファイアウォールを設定して、不審な要求や悪意のある要求がウェブサイトに到達するのをブロックします。無料で簡単に利用でき、小規模な商人にとって実用的なオプションがあります。
- 管理ポータルとアカウントへのアクセスを必要な人に限定する
- 強力な管理パスワードを必要とし(最良の結果を得るためにパスワードマネージャーを使用)、二要素認証を有効にします。
- 完全にホストされたチェックアウトソリューションを使用することを検討してください。サイトを保護します。これは、eコマーススキミングマルウェアから加盟店とその顧客を保護するための最も安全な方法です。
- PCIセキュリティ基準協議会(PCI Security Standards Council)が概説している、eコマースのセキュリティを確保するためのベストプラクティスを実装します。
- 2019年10月に発行されたVisaの「What to do if Compromised(WTDIC)」ドキュメントを参照してください。

(Visa Security Alertより引用)※機械翻訳

 

少し補足しますが、CDNが広告経由で攻撃を受けたAdverline(Britishairwaysもこうした攻撃の一種かも知れません)のケースです。

 

ECサイトの定期的スキャンは、脆弱性診断(ASVスキャン等)を指します。カード情報非保持サイトの場合、「推奨策」ではありますが、PCI DSSでは必須(SAQでも)とされる内容です。

本来ECサイトが実施すべき、こうしたスキャンを実施してない事により、ある日突然インシデントに巻き込まれる可能性が高くなります。

 

ソフトウェアのアップグレードは、国内でインシデントが多発しているEC-CUBE等でもよく見受けられますが、それ以外でも、特にサードパーティ製のプラグイン脆弱性に留意が必要です。

 

管理者アクセスは、共通パスワードが多いと侵害リスクが高まる事も含んでいるかと思います。EC-CUBEWordPressでは多要素認証を導入してないが故に侵入されたケースも多く聞きます。管理者アクセスに多要素認証は必須と考えた方が良いかと思います。

 

完全にホストされたチェックアウト(清算)ソリューションの使用は、2つ意味がありそうです。Visaが言っているのは例えばPayPalの様な決済手段を指しているのかと思いますが、日本のカード情報非保持に置き換えると「リンク型」を指しているとも言えます。自社だけで清算ページを守るのが難しい場合は、こうした事も検討すべきかと思います。

 

余談です。RISKIQ社が出したMagecartスキミングツールによる1500以上のECサイトが影響を受けている、との調査レポートが9月2日に出されていますが、Visaの注意喚起はこのすぐ後に出ています。こちらの内容も関連情報として抑えておくべきかと思います。

www.riskiq.com

 

本日もご来訪ありがとうございました。

Thank you for your visit. Let me know your thoughts in the comments.

 

 ビザのイラスト

 

更新履歴

  • 2020年9月8日 AM(予約投稿)