EC事業者必見|XSSの被害事例をもとに攻撃の仕組みと5つの対策を大公開

ECサイトの不正アクセスによる、利用者のプライベートデータやカード漏えいは2023年度になっても一向に無くなりません。過去に制定された「カード情報非保持化」はかなり浸透していますが未だにカード情報漏えい事件は後を絶たず各企業が事件の発表を続けています。

一般社団法人日本クレジット協会の発表によれば、2022年のカード不正利用額は437億円に達し過去最高額となりました。内411億円はクレジットカード情報の漏えい等に番号盗用被害額を占めており2023年の第一四半期も既に113億円となり過去最高を更新する勢いにあります。

一般社団法人クレジット協会より引用:(4)四半期調査:クレジットカード不正利用被害額調査

これらの問題は、各事業者がセキュリティに対しての意識改革をしなければ減ることはなく、日本クレジット協会も非保持化の徹底と新たに契約する事業者には脆弱性診断を求めるようになりました。

この記事ではECの事業者様に意識改革をしていただくために様々なコラムを書いており、以前、非保持化になってもリスクがあることは記載しておりました。今回は過去の事例を通して、オーダー情報から狙われた管理画面の脆弱性に対するXSS攻撃の詳細と防御策について共有します。

 

クロスサイトスクリプティング攻撃によるクレジットカード情報漏えい事例

カード情報漏えい事例|中小企業のECサイトが一時閉鎖になった原因

今回の事例は、ECサイトのサーバーに管理対象外のデータが見つかったことから始まりました。その後、管理画面からクロスサイトスクリプティングの記載が見られる疑わしいオーダー情報が確認され、外部の専門機関による調査により、オンラインショッピングサイトでの購入者の個人データやカード詳細が暴露され、不正利用の可能性があることが確認されました。

この事態の原因は、オンライン販売サイトの脆弱性を利用した悪意のある攻撃者が不正なアクセスにより、決済アプリケーションを不正に改変(ペイメントアプリケーションの改ざん)されたことによるものと発表されています。

 

クロスサイトスクリプティング(XSS)攻撃の仕組みの紹介

上記の事例にあったようなクロスサイトスクリプティング(XSS)によるペイメントアプリケーションの改ざんは実際どの様な仕組みで行われるのでしょうか。

具体的な流れと共に見ていきましょう。

 

スクリプト注入

攻撃者がWEBサイトの脆弱な部分を利用して悪意のあるスクリプトを注入します。スクリプトは通常、ユーザーの入力範囲やコメント欄等に注入し、WebアプリケーションによってエスケープされないHTMLやJavaScriptコードを含むことができます。

 

スクリプトの実行

脆弱性のあるウェブサイトを閲覧したユーザーのブラウザが悪意のあるスクリプトを読み込み、そのまま実行します。ユーザが何も悪いことが起きていないと思っている間に、スクリプトは裏で実行されます。

 

データの収集

実行されたスクリプトがユーザのセッションクッキー、利用者情報、フォームに入力された情報などのデータを収集します。これにより、攻撃者はユーザーのアカウントやユーザーの行動を盗み出すことが可能となります。

 

改ざん操作

収集した情報を利用してフォームの送信先を改ざんしたり、セッション情報を利用してユーザーになりすまし操作を行います。

 

不正送信・不正操作

改ざんした情報を正規の情報として送信することで、不正な支払い処理を実行します。

 

一般の方から見れば非常に複雑そうな手順ですが、攻撃者からすると至極簡単です。もちろんセキュリティがしっかり対策されているECサイトではこの作業を実施するのは難しいです。簡単とはセキュリティの甘いECサイトです。なぜなら、玄関のドアが開きっぱなしになっているようなイメージだからです。ドアが鍵はおろか開けっ放しの状態の家があり、皆さんが空き巣ならどう思うでしょう。

「セキュリティ甘いし簡単に盗めそう」と思うのは間違いないと思います。自社のサイトに上記の操作を実行される隙が無いか、リスクが無いかを確認することから初めて下さい。

▼▼▼自社ECサイトにXSS攻撃のリスクが無いか確認▼▼▼

 

クロスサイトスクリプティング(XSS)への対応策

脆弱性診断を実施してセキュリティリスクがあることを把握した方は次のステップとして対策を実行することになります。対策はフロントだけでなく管理画面も必要です。管理インターフェースに潜在するセキュリティの脆弱性を検出し補うことも非常に大切です。ECサイトでは、限られた人々しかアクセスしない注文情報の管理画面よりも、多くの人々が利用するオンラインショッピングや決済の公開画面を優先する傾向にあります。これは間違いではありません。

しかしながら、アクセス可能な人々が限られているためという理由で、管理画面のセキュリティ対策を軽視すると、被害にあう結果につながりかねません。管理画面もしっかりとセキュリティ対策を実施してください。

以下では、クロスサイトスクリプティング(XSS)に対して効果的な3つの手法を紹介します。

注意していただきたいのは、これらの対応策を単体で導入しても、クロスサイトスクリプティング攻撃を完全に防ぐことは不可能です。各対策を組み合わせて複数レイヤーの防衛を構築し、Webアプリケーションのセキュリティを強化することが重要です。

 

入力値の検証とエンコーディング:

悪意のあるスクリプトがサーバーに送信されないように、ユーザーからの入力すべてを適切に検証し、安全な形式にエンコードする必要があります。これは特にウェブアプリケーションでコメントやフォームデータなどのユーザーがコントロールできるデータを扱う際に重要です。

 

HTTPヘッダーの設定

サーバーから返されるHTTPヘッダーを適切に設定し、XSS攻撃を防ぐことができます。具体的には、Content-Security-Policy(CSP)- HTTPヘッダを使用して、ブラウザに対してページの内容とともにどのスクリプトを安全と見なすべきか明示的に伝えることができます。

 

Cookieに対するHttpOnly属性の使用

HttpOnly属性がつけられたCookieは、JavaScriptからアクセスできないため、クロスサイトスクリプティング攻撃によるCookie情報の盗み見を防ぐことができます。これは、セッションIDなど重要な情報を保持するCookieに対して特に重要な処置といえます。

 

ホワイトリストベースの入力検証

特定の形式しか許可しないフィールドで、ホワイトリストベースのバリデーションを導入することで、悪意あるスクリプトの挿入を防ぐことができます。事前に正しいパターンを定義し、それに一致しない入力は拒否するように設定することで、XSS攻撃を未然に防ぐことができます。

 

サニタイジングライブラリの活用

入力されたデータを安全に出力するためには、サニタイジングライブラリを活用すると良いです。これらのライブラリは、悪意のあるコード片を効果的に除去および無害化します。これにより、ユーザーが意図せずに危険なスクリプトをページに挿入することを防ぐことができます。

 

管理画面は通常、ECサイトの根幹となりファイルをアップロードするなどの行動が許可されています。したがって、ECサイト内のページや決済のアプリケーションが置き換えられたり、データが削除されたり、システムが停止する可能性も存在します。特に攻撃者にとって利益を生み出す決済機能がターゲットにされるケースが最も一般的です。

今回ご紹介していた被害事例も恐らくそのような内容で漏えいしてしまった可能性が高いと考えられます。

 

まとめ「セキュリティ診断を実施して安心安全なECサイトの運営を」

いかがでしたでしょうか?一般の方からするとよくわからない難しい内容かもしれませんが、WEBサイトを作成される方からすると少し手間ですが簡単なことで対策が出来ることはご理解頂けたと思います。XSS攻撃を受けないためには早期にリスクを発見し対策を実施することで予防効果が得られます。

しかし、早期にリスクを発見するには非常に手間かお金がかかってしまうのも現実です。

secuasでは毎月1万円で毎日診断をしてリスクが発生した時点で即時検知、即時通知を行いますので予防対策を実現できます。

まずは、無料診断をして自社のサイトに今あるリスクを把握・対策して毎日診断で予防を実現してください。

[この記事と関連する記事はコチラ]

サイト改ざん、情報漏えい対策|クロスサイトスクリプティング(XSS)の詳細と対策をわかりやすく解説