Hackers use pixel-large SVG trick to hide credit card stealer

Magento eコマース・プラットフォームを使用する約100のオンライン・ストアに影響を与える大規模なキャンペーンは、クレジットカードを盗むコードをピクセル・サイズのScalable Vector Graphics(SVG)画像に隠しています。

チェックアウトボタンをクリックすると、カード詳細と請求データを検証できる説得力のあるオーバーレイが表示されます。

このキャンペーンはeコマースセキュリティ企業のSansecによって発見され、同社の研究者は、攻撃者が3月中旬に公開されたPolyShellの脆弱性を悪用してアクセスした可能性が高いと見ています。

Wiz

PolyShellは、Magento Open SourceとAdobe Commerceの安定したバージョン2のすべてのインストールに影響を与え、認証されていないコード実行とアカウント乗っ取りを可能にする。

Sansec は、脆弱性のある店舗の半数以上がPolyShell 攻撃の標的になっていると警告しており、WebRTC を使用してペイメントカードのスキマーを展開し、ステルス的にデータを流出させるケースもありました。

最新のキャンペーンでは、マルウェアは「onload」ハンドラを持つ1×1ピクセルのSVG要素として標的のウェブサイトのHTMLに注入されることがわかりました。

「onloadハンドラにはスキマーのペイロード全体が含まれており、atob()コール内でbase64エンコードされ、setTimeoutを介して実行される」とSansecは説明する

「この手法では、セキュリティ・スキャナーが通常フラグを立てる外部スクリプトの参照を作成する必要がありません。マルウェア全体がインラインに存在し、1つの文字列属性としてエンコードされる。

疑いを持たない購入者が侵害されたストアでチェックアウトをクリックすると、悪意のあるスクリプトがクリックを傍受し、カード詳細フィールドと請求フォームを含む偽の「セキュア・チェックアウト」オーバーレイを表示します。

このページで送信された支払いデータは、Luhn検証を使用してリアルタイムで検証され、XOR暗号化され、base64難読化されたJSON形式で攻撃者に流出します。

Decoded payload
デコードされたペイロード
Sansec

Sansecは、オランダのIncogNet LLC (AS40663)でホストされている6つの流出ドメインを特定しました。

このキャンペーンから保護するために、Sansecは以下を推奨します:

  • atob()を使用してonload属性の隠されたSVGタグを探し、サイトファイルから削除する。
  • ブラウザのlocalStorageに_mgx_cvキーが存在するかどうかをチェックする。
  • /fb_metrics.phpや見慣れないアナリティクスのようなドメインへのリクエストを監視し、ブロックする。
  • IPアドレス23.137.249.67および関連ドメインへのすべてのトラフィックをブロックする。

この記事を書いている時点では、Adobe はまだ Magento の製品版における PolyShell の欠陥に対応するセキュリティアップデートをリリースしていません。Adobeは、プレリリースバージョンの2.4.9-alpha3+でのみ修正を提供しています。

また、Adobeはこの件に関するコメントを再三求めていますが、回答はありません。

ウェブサイトの所有者/管理者は、利用可能なすべての緩和策を適用し、可能であれば Magento を最新のベータリリースにアップグレードすることをお勧めします。

4/10更新– IncogNETから連絡があり、問題のアカウントを停止したことを確認しました。

.ia_ad { background-color:#width: 95%; max-width: 800px; margin: 15px auto; border-radius: 8px; border:1px solid #d6ddee; display: flex; align-items: stretch; padding: 0; overflow: hidden; }:0; overflow: hidden; } .ia_lef { flex: 1; max-width: 200px; height: auto; display: flex; align-items: stretch; } .ia_lef a { display: flex; width: 100%; height: 100%; } .ia_lef a img { width: 100%; height: 100%; border-radius: 8px 0 0 8px; margin: 0; display: block; } .ia_rig { flex: 2; padding:display: flex; flex-direction: column; justify-content: center; } .ia_rig h2 { font-size: 17px !important; font-weight: 700; color:#line-height: 1.4; font-family:margin: 0 0 14px 0; } .ia_rig p { font-weight: bold; font-size: 14px; margin: 0 0 clamp(6px, 2vw, 14px) 0; } .ia_button { background-color:#border:1px solid #3b59aa; color: black; text-align: center; text-decoration: none; border-radius: 8px; display: inline-block; font-size: 16px; font-weight: bold; cursor: pointer; padding:width: fit-content; } .ia_button a { text-decoration: none; color: inherit; display: block; } @media (max-width: 600px) { .ia_ad { flex-direction: column; align-items: center; } .ia_lef { max-width: 100%; } .ia_lef a img { border-radius: 8px 8px 0 0; } .ia_rig { padding:15px;
width: 100%;
}

.ia_button {
width: 100%;
margin: 0px auto;
}
}

自動ペンテストは6面のうち1面のみをカバーする。

自動ペンテストは、パスの存在を証明する。BASは、あなたのコントロールがそれを止めるかどうかを証明します。ほとんどのチームは、一方を実行し、もう一方を実行しない。

このホワイトペーパーは、6つの検証サーフェスをマッピングし、どこでカバーが終了するかを示し、実務者にあらゆるツール評価のための3つの診断質問を提供します。