サイバー攻撃の種類
クロスサイトスクリプティング
クロスサイトスクリプティング(XSS)は、ウェブサイトのセキュリティ上の欠点を悪用した攻撃手法の一つです。
「クロスサイト」とは、攻撃者がターゲットを自身が仕掛けた罠のあるWebサイトから別のターゲットとするWebサイトへと誘導する、つまり複数のWebサイトを横断(クロス)して攻撃が行われることに由来します。
ここでは、その攻撃の流れを簡単に説明します。
攻撃者はまず、XSSに対する脆弱性を持つWebサイト(WebサイトA)を探します。そして、あらかじめWebサイトAのURLに悪意のあるスクリプトを埋め込んだ文字列を作成しておきます。
次に攻撃者は、別の脆弱性を持つWebサイト(WebサイトB)を探します。このサイトBには、ユーザーからの入力の検証やエスケープ(特殊文字を安全な表現に置き換える)処理が不十分であるという脆弱性が含まれています。掲示板やコミュニティサイトなどの動的ページ作成サイトが一例です。
攻撃者は、WebサイトBに準備しておいた悪意のあるスクリプトを含むURLを罠として埋め込みます。特に、他のユーザーがクリックする可能性がある掲示板の投稿やコメント欄などが狙われます。
ターゲットが攻撃者が設置したリンクをクリックすると、WebサイトBからURLに記された脆弱性のあるWebサイトAに移動します。これが、いわゆる「クロスサイト(サイトの横断)」です。
ターゲットが悪意のあるスクリプトを含んだURLによって脆弱性のあるWebサイトAに移動すると、ターゲットのWebブラウザはWebサイトAの表示と共に悪意あるスクリプトを実行してしまいます。このスクリプトはWebサイトA上で動き、ターゲットの情報を攻撃者に送信するか、ターゲットの行動をコントロールします。
スクリプトが実行されると、攻撃者はターゲットの情報を盗むことができます。さらに、ターゲットは気づかずに攻撃者の意図した行動をとらされることもあります。
この攻撃手法の特徴的な点は、攻撃者自身ではなく、脆弱性を持つWebサイトAが攻撃を行ったかのように見えることです。そのため、被害に気づいたターゲットは、攻撃を行っていないWebサイトAに対して誤解を持つ可能性があります。また、そのWebサイトを運営している企業も、大きな損害を受けることがあります。
以上がクロスサイトスクリプティングの流れとその危険性です。自身をこのような攻撃から守るためには、不審なリンクをクリックしない、Webサイトのセキュリティ設定を適切に行うなどの対策が必要です。
クロスサイトスクリプティング(XSS)には、主に以下の3種類があります。(覚える必要はありません。)
1. 反射型XSS(Reflected XSS)
最も一般的なXSS攻撃で、ユーザーが入力した値をそのままWebページに反映させる脆弱性を悪用します。主に、悪意のあるリンクをクリックしたときに発生します。
※上で説明した例は反射型です。ユーザーが送信したリクエスト(例えば、URLに含まれる悪意のあるスクリプト)がサーバーによって処理され、その結果が即座にユーザーのブラウザに「反射」されることに由来しています。
2. 格納型XSS(Stored XSS)
悪意のあるスクリプトがWebアプリケーションのデータベースに保存され、他のユーザーがそのデータを閲覧する際にスクリプトが実行されるタイプです。掲示板やコメント欄でよく見られます。(クロスサイトという名前がついていますが、サイトはまたいでいません。)
3. DOMベースXSS(DOM-based XSS)
クライアントサイドのJavaScriptの脆弱性を悪用する攻撃で、悪意のあるスクリプトがクライアントサイドで実行されるタイプです。例えば、WebページのDOM操作に悪意のあるスクリプトを挿入したり、ユーザーがインストールしたブラウザの拡張機能に悪意のあるスクリプトを仕込んだりして攻撃します。攻撃はサーバーではなく、ブラウザ内が起点となって行われます。(こちらもクロスサイトという名前がついていますが、サイトはまたいでいません。)
すべてのXSS攻撃は、最終的に被害者のブラウザ上で悪意のあるスクリプトを実行することを目的としています。このスクリプトは、被害者のデータを盗んだり、被害者の行動を制御したりするために使用されます。
クロスサイトリクエストフォージェリ
クロスサイトリクエストフォージェリ(Cross-Site Request Forgery、CSRF)は、ログイン機能のあるサイトにログインしている利用者が、悪意のある外部サイトからのリクエストによって、意図せずに予期しない操作を実行させられるセキュリティリスクです。
特に、ログインした利用者の意図を確認せずにリクエストを受け入れるウェブサイトは、攻撃者が用意した罠(例えば、悪意あるリンクや画像など)をクリックすることで、利用者が知らないうちに悪意ある操作(例えば、パスワード変更、情報の送信など)を実行させられてしまう危険があります。
ここでは、その攻撃の流れを簡単に説明します。
前提:この攻撃は、ターゲットユーザーが脆弱性を持つウェブサイト(ここではネットバンキングのサイトとします)にすでにログインしているか、あるいはログインセッションが有効である状態を悪用します。
攻撃者はまず、ネットバンキングのWebサイトがCSRFに対する脆弱性を持つことを見つけます。次に、ネットバンキングのWebサイトの機能(例えば送金や口座情報の変更など)を利用するためのリクエストを作成します。
攻撃者は作成したリクエストをWebサイトB(例えば攻撃者が制御するWebサイトやフォーラムなど)に埋め込みます。そして、ターゲットユーザーがこのWebサイトBを訪れるように仕向けます。
ターゲットユーザーがWebサイトBを訪れ、攻撃者が設置したリンクをクリックしたり、あるいは自動でWebページ上のスクリプトが実行されたりします。(次項で説明するクリックジャッキングが用いられることもあります)
WebサイトBから、攻撃者が準備したリクエストがネットバンキングのWebサイトへと送信されます。このとき、ターゲットユーザーがネットバンキングのWebサイトにログインしている(セッションが有効な)場合、ネットバンキングのWebサイトはリクエストを信頼するユーザーからのものと誤認して処理します。
ネットバンキングのWebサイトは受け取ったリクエストに従って操作を行い、攻撃者の意図した通りの操作(送金、口座情報の変更など)が行われます。ターゲットユーザーは気づかずに攻撃者の意図した行動をとらされることになります。
これがCSRF攻撃の基本的な流れです。
この攻撃は、ユーザーがログインしたままの状態で攻撃者の作成したページを開くと発生するため、ウェブサーフィンを行う際には不明なリンクをクリックしない等の注意が必要です。
また、Webサイトを運営する側としては、CSRF対策としてトークンを用いたリクエストの検証やSameSite属性を利用したクッキーの管理などを行うことが推奨されています。
セッションは、ウェブサイトがユーザーごとに個別の情報や状態を保持できるようにする仕組みです。
これは、ウェブが基本的に「ステートレス」な性質を持つ、つまり各リクエストが独立しており、以前のリクエストやユーザーの状態を覚えていないことを補います。
例えば、オンラインショッピングを想像してください。セッションがなければ、ページを移動するたびにログイン情報を再度入力したり、ショッピングカートに入れた商品を失ったりすることになります。しかしセッションを使うことで、サイトはあなたがログインしていることや、カートに何を入れたかを覚えていられるのです。
セッションは通常、サーバーが生成する一意のセッションIDを介して機能します。このIDは初めてサイトを訪れたときにCookieの形であなたのブラウザに送られ、その後のすべてのリクエストに自動的に付加されます。これにより、サーバーはあなたのリクエストが以前のものとどのように関連しているのかを理解し、個人化された情報や体験を提供できるようになります。
セッションは、ログイン状態の管理、ユーザーの好みの記録、ショッピングカートの内容の追跡など、多くのインタラクティブなウェブアプリケーションにとって不可欠な機能を提供します。また、セッションはセキュリティ上の理由から一定期間後に期限切れになるよう設計されていることが一般的です。これにより、長時間放置されたセッションが悪用されるリスクが減少します。
クリックジャッキング
クリックジャッキングは、インターネット上のサイバー攻撃手法の1つで、ユーザーに見ることのできない、あるいは見間違えるようなボタンをクリックさせ、意図しない操作を実行させる攻撃です。
攻撃は以下のような流れで行われます。
前提:この攻撃は、クロスサイトリクエストフォージェリ(CSRF)と組み合わせて使用されることが多いです。ここでは、SNSやネットバンキングにログイン済みであるとして以下説明します。
- 攻撃者が、見た目は無害そうなボタンやリンクを含むWebページを作成します。しかし、実際にはそのボタンやリンクの上に透明な悪意のある要素が重ねられています。
- ユーザーが攻撃者の作成したWebページを訪れ、無害そうなボタンやリンクをクリックしようとします。
- ユーザーがクリックすると、実際には透明な悪意のある要素がクリックされ、ユーザーが意図しない操作が他のWebサイトで実行されます(例: 不正な送金操作、SNSのいいねやフォローなど)。
- その操作は、ユーザーがログインした状態であるため、システムは正当な操作と判断し、実行されることがあります。
- 結果として、ユーザーは意図しない操作を行ったことによる被害(例: 不正な送金や個人情報の漏洩)を受けることがあります。
クリックジャッキング攻撃は、ユーザーが気づかぬうちに悪意のある操作を実行させることで被害をもたらす、危険な攻撃手法です。
クリプトジャッキング
クリプトジャッキングは、インターネット上のサイバー攻撃手法の1つで、Webサイトを訪れたユーザーのコンピューターやスマートフォンの処理能力(リソース)を無断で使用して暗号資産のマイニングを行うことを目的としたものです。
以下のような流れで攻撃が行われます。
- 攻撃者は、暗号資産のマイニングスクリプトを悪意のあるWebサイトや広告、あるいは侵害された正規のWebサイトに埋め込みます。
- ユーザーがそのWebサイトを訪れると、マイニングスクリプトが自動的にユーザーのコンピューターやスマートフォンで実行されます。
- スクリプトはユーザーのデバイスのCPUやGPUのリソースを無断で利用して、暗号資産のマイニング(計算処理)を開始します。
- このマイニング処理によって、ユーザーのデバイスは遅くなったり、バッテリー消費が増加したり、発熱が激しくなったりすることがあります。
- 攻撃者は、無断で行われたマイニングによって得られた暗号資産を収益として得ます。
クリプトジャッキングは、ユーザーのデバイスを無断で使用して暗号資産のマイニングを行い、ユーザーのデバイスに負担をかけることで被害をもたらす攻撃手法です。
ビットコインのマイニングとは、新たな取引情報をデジタルの帳簿(ブロックチェーン)に追記する仕事のことです。
このブロックチェーンとは、取引の詳細(「誰が」「いつ」「どれだけのビットコインを移動させたか」)が記録されたデータの連鎖です。
マイニングをする人(マイナー)は、複雑な数学の問題を解き、その答えを使って新しいブロックを作ります。その労働の対価として、ビットコインが報酬として手に入ります。
このマイニングのおかげで、ビットコインの取引が正しく安全に記録され、ビットコインのネットワーク全体が正常に稼働し続けます。
DNSキャッシュポイズニング
DNSキャッシュポイズニングは、インターネット上のサイバー攻撃手法の1つで、DNS(Domain Name System)というドメイン名とIPアドレスを対応付けるシステムを悪用して、ユーザーを誤ったWebサイトに誘導する攻撃です。以下がその流れです。
- DNSサーバーは、インターネット上のドメイン名(例: example.com)とIPアドレス(例: 192.0.2.1)を対応付ける役割を果たしています。通常、ユーザーがWebサイトにアクセスする際には、ブラウザがそのドメイン名に対応するIPアドレスをDNSサーバーに問い合わせます。
- DNSキャッシュポイズニング攻撃を行う攻撃者は、偽のDNS応答を送り込むことで、DNSサーバーのキャッシュ(一時保存データ)に誤ったドメイン名とIPアドレスの対応情報を登録させます。
- ユーザーが攻撃対象となったドメイン名にアクセスしようとすると、DNSサーバーは誤ったキャッシュ情報をもとに、攻撃者が用意した偽のWebサイトのIPアドレスを返します。
- ユーザーのブラウザは、受け取った偽のIPアドレスに従って、攻撃者が用意した偽のWebサイトにアクセスしてしまいます。
- この偽のWebサイトで、ユーザーの個人情報やパスワードが盗まれることがあります。
DNSキャッシュポイズニングは、ユーザーを偽のWebサイトに誘導し、個人情報やパスワードを盗むことを目的としたサイバー攻撃です。
セッションハイジャック
セッションハイジャックは、インターネット上でのサイバー攻撃手法の1つで、攻撃者がユーザーのセッションIDを盗み、そのユーザーとして認証された操作を不正に行う攻撃です。
以下がその流れです。
- セッションハイジャック攻撃を行う攻撃者は、様々な手法(例えば、公共のWi-Fiスポットでのパケット傍受や、クロスサイトスクリプティングなど)を使って、ユーザーのセッションIDを盗みます。
- 攻撃者は盗んだセッションIDを使って、Webサーバーに対して正規のユーザーの身分を偽装し、不正アクセスします。これにより、攻撃者はユーザーのアカウント情報やプライベートデータにアクセスできるようになります。
- 攻撃者は、ユーザーの情報を盗んだり、不正な操作を行ったりすることができます。
セッションハイジャックは、ユーザーのセッションIDを盗むことで、アカウント情報やプライベートデータに不正アクセスするサイバー攻撃です。
安全な通信や適切なセッション管理が重要であり、ユーザー自身も安全なインターネット環境を利用することが防御策となります。
セッションIDを盗むことは、すなわち「ログインしている状態を盗む」ことと同義であり、攻撃者にユーザーの権限を与えることになります。
HTTPSの使用、セッションタイムアウトの設定、多要素認証(MFA)の導入など、適切なセキュリティ対策を講じることで、セッションハイジャックのリスクを減らすことができます。
IPスプーフィング
IPスプーフィング(spoofing:なりすましの意味)は、インターネット上でのサイバー攻撃手法の1つで、攻撃者が他人のIPアドレスを偽装することで、自分の正体を隠したり、他人になりすましたりして悪意ある行為を行います。以下にその概要を説明します。
- インターネット上でデバイス同士が通信する際、それぞれのデバイスは一意のIPアドレスを持っています。IPアドレスは、通信の送信元と宛先を識別するために使われます。
- IPスプーフィング攻撃では、攻撃者は自分のデバイスのIPアドレスを他人のIPアドレスに偽装します。この偽装により、攻撃者は自分の正体を隠すことができ、追跡を難しくします。
- さらに、攻撃者は偽装したIPアドレスを利用して、他人になりすますことができます。例えば、信頼された組織や個人のIPアドレスを使って、セキュリティシステムを騙したり、標的となるユーザーやシステムを欺くことができます。
- IPスプーフィング攻撃は、DoS(Denial of Service)攻撃やDDoS(Distributed Denial of Service)攻撃にも利用されることがあります。攻撃者は、偽装したIPアドレスを使って複数のデバイスから一斉にターゲットのシステムにアクセスし、システムをダウンさせることができます。
IPスプーフィングを防ぐためには、ネットワーク上でのアクセス制限や、パケットフィルタリングなどのセキュリティ対策が重要です。また、ユーザー自身も、不審な通信やメールに注意し、信頼できるソースからの情報のみを利用することが求められます。
関連用語
サニタイジングは、プログラムやデータなどの入力を安全な形式に変換することで、悪意のある攻撃を防止するセキュリティ対策の一つです。
主にWebアプリケーションにおいて、入力値に不正なコードが含まれている場合に、それを無害なコードに変換することが行われます。具体的には、特殊文字をエスケープ処理するなどが挙げられます。
※例えば、シングルクォート(’)をエスケープする際には、It’sをIt”sとする方法があります。エスケープすることで、コンピュータにとって何らかの意味を持つ文字だったものが、単なる文字として認識されるようになります。
サニタイジングは、SQLインジェクションやクロスサイトスクリプティングなどの攻撃に対する有効な防御策の一つとして広く使われています。
※サニタイジング(sanitizing)には「消毒する」「無害化する」「不適切な部分を削除する」という意味があります。
ポートスキャンとは、ネットワーク上のコンピューターやデバイスが開いているポート(通信を行うための「扉」のようなもの)を調べることです。インターネット上のコンピューターは、サービスやアプリケーションを提供するために特定のポートを使用して通信を行います。
セキュリティの専門家は、ネットワークのセキュリティ状態を評価するためにポートスキャンを利用することがあります。開いているポートを特定することで、どのようなサービスが動作しているかという情報や、それらのサービスに関連するセキュリティリスクを把握することができます。
しかし、ポートスキャンは悪意を持って行われることもあります。攻撃者は、開いているポートや稼働中のサービスを特定し、脆弱性を悪用してシステムに侵入しようと試みることがあります。
このため、ネットワーク管理者は、不正なポートスキャンを検出し、適切な対策を講じることが重要です。また、不必要なポートは閉じることや、ファイアウォールでアクセス制限を行うことで、セキュリティリスクを低減できます。
デジタルフォレンジックスは、コンピューターやデジタルデバイスからデータを収集、分析する科学的な手法で、主に犯罪捜査やセキュリティ違反の調査に用いられます。
このプロセスには、不正アクセス、データ盗難、サイバー攻撃の証拠を見つけ出し、法的な証拠として利用可能な形で保全する作業が含まれます。
デジタルフォレンジックスの目的は、デジタル環境内で何が起こったのかを正確に理解し、問題の原因や加害者を特定することです。
※フォレンジックス(forensics)は「科学捜査」「裁判証拠収集」などを意味します。