Menu
Close

CSRFとは?基本の仕組みや有効な対策を解説!

目次

クロスサイトリクエストフォージェリ(CSRF)は、Webシステムを対象とした一種のサイバー攻撃で、攻撃者が特別に作成したWebページを通じて、ユーザーの意図に反するリクエストを強制的に実行させます。

このプロセスは、システムのセキュリティ上の弱点を悪用し、情報の不正な公開や、ログイン状態での設定変更など、さまざまな悪影響を及ぼす可能性があります。CSRF攻撃の特に深刻な側面は、予期せぬリクエストが原因で、サービスを提供する側だけでなく、リクエストを送信したユーザー自身にも被害が及ぶことです。

例えば、ユーザーが知らないうちに不正な行為を宣言する内容をWeb上に公開し、その結果、誤認逮捕に至るケースも発生しています。

この記事では、CSRFが引き起こす潜在的な被害と具体的な事例、さらにはこれらの攻撃から身を守るための対策について紹介します。オンライン上で安全を確保し、予期せぬトラブルから自身を保護するために、これらの情報を理解し、適切な予防措置を講じることが重要です。

自社で簡単にセキュリティ対策ができる脆弱性診断ツールについて詳しくはこちら

脆弱性診断ツールおすすめ30選を徹底比較!無料・有料に分けて紹介

クロスサイトリクエストフォージェリ(CSRF)とは?

クロスサイトリクエストフォージェリ(CSRF)は、Webアプリケーションのセッション管理に存在する脆弱性を悪用したサイバー攻撃の形態の一つです。

この攻撃手法では、攻撃者がログインしているユーザーを騙して不正なリンクをクリックさせ、その結果、ユーザーが意図せずにWebアプリケーションに対して不正なリクエストを送信することになります。Webアプリケーションは、これらのリクエストを正規のユーザーからのものと誤認し、不正な命令を実行してしまいます。

攻撃により、ユーザーはECサイトやオンラインバンキングで知らないうちに決済を行わされたり、SNSや掲示板で意図しない投稿をされたりするなどの被害に遭う可能性があるでしょう。Webアプリケーションが、ログイン中のユーザーからのリクエストを正規のものと不正なものとを区別するメカニズムを持っていない場合、CSRF攻撃のリスクは高まります。

クロスサイトリクエストフォージェリ(CSRF)の仕組み

CSRFによる攻撃では、いくつかのパターンが確認されています。

一つはサービスにログインした状態のユーザーを狙った攻撃です。ログイン中の状態で、悪意あるURLにアクセスしてしまうと、サービスに対して任意の操作のリクエストを行うことができる場合があります。

例えばオンラインバンキングのサービスにログインした状態で、送金の操作を行うCSRFが行われ、それがサービス側で受理されてしまうことを想定するとその恐ろしさが分かります。サービスにおける設定の変更(例えばパスワードの変更)のリクエストを行い、そこから攻撃を拡大するパターンも起こり得るでしょう。

また、別の形のCSRFを利用した攻撃として、ユーザーの意図しない情報発信を行わせるものもあります。SNSや掲示板などに対するリクエストをCSRFにより行うことで、ユーザーの意図しない投稿が行われてしまいます。投稿の内容が問題のあるものであれば、ユーザーの被害に直結してしまいます。上記のログイン状態とも組み合わせて利用されることが想定されます。

CSRFの恐ろしいところは、リクエストを強要させられてしまうことです。サイバー犯罪者は、ユーザーのログインしている状態やサービスを利用しているかどうかの有無を区別せず、広い範囲で罠を作って置きます。複数の種類のオンラインサービスに対しての罠を作っておくことで、被害に遭うユーザーを拡大する手口がとられています。

また罠が設置してあるWebページへの誘導では、不安を煽るような文言や言葉巧みな文章が利用されます。ユーザーを騙し、心理的不安にさせることで、リクエスト強要に誘導する傾向が見られます。

「クロスサイトスクリプティング(XSS)」の違いとは?

クロスサイトスクリプティング(XSS)は、CSRFと比較される別のサイバー攻撃手法です。XSSもWebアプリケーションやWebサイトの脆弱性を利用しますが、ユーザーが情報を入力する場所に悪意のあるスクリプトを注入し、それが実行されることで被害をもたらします。

たとえば、掲示板や申し込みフォームに不正なスクリプトを埋め込むことで、情報の入力を行ったユーザーに意図しないスクリプトを実行させ、個人情報の窃取やWebページの改ざんを行わせるのです。

CSRFとXSSは、いずれもWebアプリケーションのセキュリティ脆弱性を悪用する代表的なサイバー攻撃手法であり、Webサイトやアプリケーションの運営者はこれらの脅威に対する防御策を講じることが重要です。

具体的には、CSRF対策にはトークンを使用してユーザーのセッションを検証する方法や、Refererチェックなどがあります。XSSの対策には、ユーザーからの入力を適切にエスケープすることや、コンテンツセキュリティポリシー(CSP)を設定することが有効です。

これらの対策を実施することで、攻撃者がこれらの脆弱性を悪用するのを防げます。

クロスサイトリクエストフォージェリ(CSRF)の攻撃経路2つ

クロスサイトリクエストフォージェリ(CSRF)には2種類の攻撃経路があります。

  1. GETリクエスト
  2. POSTリクエスト

1.GETリクエスト

GETリクエストの場合、銀行のWebアプリケーションでは、GETリクエストとハイパーリンクの配信が悪用される可能性があります。リクエストのパラメータ(金額と口座番号)を変更するだけで、容易に実行可能な偽造リクエストが作成できてしまいます。

また、偽造リクエストは、Cookieによって管理されたセッションが有効な限り、銀行の任意のユーザーに対して有効です。偽造リクエストを作成した後は、ユーザーを騙して、銀行のアプリにログインした状態でこの要求を送信させる方法を考えます。一般的な手法として、ユーザーの注意を引くための無害なハイパーリンクを作成して送信する方法があります。

攻撃者が標的となるユーザーのメールアドレスを特定すれば、多くの銀行の顧客に対してこのメールを送信できます。そして、ユーザーがログインした状態でこのリンクをクリックしてしまうと、ログインしているアカウントから攻撃者に金銭を送金するまでの流れができあがってしまうのです。

2.POSTリクエスト

同じ銀行のアプリケーションがPOSTリクエストのみを受け付けるケースでは、先ほどのハイパーリンクの配信は機能しません。そのため、悪意のあるユーザーはHTMLフォームを作成します。リクエストには、ユーザーIDと送金金額、そして送金先のアカウントを定義するためのCookieが必要です。攻撃者はこのリクエストを改変し、CSRF攻撃を実行できます。

手順は、Cookieを偽造リクエストに付与してサーバーに転送を処理させるだけです。これを実現するために、見かけ上は無害なハイパーリンクを作成し、ユーザーをトリガーページに誘導します。

認証されたユーザーがこのページにアクセスすると、ブラウザはサーバーにリクエストを転送する前にセッションCookieを付与。サーバーは攻撃者のアカウントに送金してしまいます。

クロスサイトリクエストフォージェリ(CSRF)攻撃による被害とは

CSRF(クロスサイトリクエストフォージェリ)攻撃は、Webの利用者だけでなく、サービス提供者にとっても深刻な脅威をもたらす特徴を持ちます。ここでは、CSRF攻撃が引き起こす可能性のある被害の種類と、その実際の事例について詳細に解説します。

  • 機密情報の漏えい
  • 不正なアクションの実行
  • セッションハイジャック
  • 悪意のあるスクリプトの実行
  • 悪用された権限

機密情報の漏えい

CSRF攻撃を通じて、攻撃者はユーザーのWebアカウントに不正アクセスし、機密情報の変更や盗難を行うことが可能になります。例えば、ユーザー名やパスワード、個人情報などの重要なデータが盗み出される危険性があります。さらに、攻撃者はこれらの情報を変更したり、削除したりすることで、被害者のアカウントを完全に乗っ取ってしまうかもしれません。

乗っ取られたアカウントを悪用して、攻撃者は様々な犯罪行為を行うことが可能です。例えば、被害者になりすまして不正な金銭取引を行ったり、機密情報を外部に漏洩させたりするなどの危害を引き起こすリスクがあります。また、アカウントを経由して他のユーザーに対する攻撃を仕掛けることもできるでしょう。

CSRF攻撃による不正アクセスは、個人情報の流出や金銭的な損失、さらには二次被害の発生など、深刻な影響をもたらす可能性があります。Webアプリケーションの開発者は、適切な対策を講じてCSRF攻撃を防ぐことが重要です。同時に、ユーザー側も不審なリンクやフォームには十分注意を払い、セキュリティ意識を高めていく必要があるでしょう。

不正なアクションの実行

CSRF攻撃は、ユーザーのアカウントを乗っ取ることで、攻撃者にWebアプリケーション上での様々な不正行為を可能にします。攻撃者は、本人の意図しない操作を実行することができるのです。

例えば、攻撃者はユーザーのアカウントを使って、不正な商品購入を行うかもしれません。ユーザーに無断で高額な商品を注文したり、大量の商品を購入したりすることで、金銭的な損害を与えることが可能です。

加えて、攻撃者はユーザーのプライバシー設定を無断で変更し、本来非公開であるべき情報を公開状態にしてしまうかもしれません。個人情報や機密情報が流出することで、ユーザーのプライバシーが侵害され、信頼性が損なわれる危険性があります。

セッションハイジャック

攻撃者がユーザーのセッション情報を取得し、セッションハイジャックを実施することも可能です。攻撃者はユーザーのアカウントに不正にログインし、ユーザーと同等の権限でアカウント操作や機密情報へのアクセスを行えます。ユーザーは、自分のアカウントが攻撃者に乗っ取られたことに気づかないまま、大きな被害を受けるリスクがあります。

悪意のあるスクリプトの実行

CSRF攻撃は、クロスサイトスクリプティング(XSS)攻撃の足がかりとしても利用される可能性があります。攻撃者は、CSRF攻撃を通じて被害者のブラウザ上で悪意のあるスクリプトを実行させることができます。このスクリプトは、ユーザーの知らないうちに悪意ある動作を行うかもしれません。

悪用された権限

ユーザーが管理者権限を持つアカウントでログインしている場合、CSRF攻撃により攻撃者は管理者権限を乱用し、システム内のデータの改ざん・他ユーザーのアカウントへのアクセスなどさらに深刻な被害を引き起こすことがあります。

攻撃者は、ユーザーの特権を利用してシステム内の機密データや機能にアクセスし、改ざんや破壊行為を行うことができます。さらに、CSRF攻撃はユーザーの信頼を悪用し、社会工学的手法を駆使してさまざまな詐欺行為に利用される場合があります。これには、フィッシング詐欺や個人情報の窃取などが含まれます。

CSRFは、Webサービスの安全性に対する重大な脅威であり、ユーザーとサービス提供者は、セキュリティの意識を高め、定期的な監視と適切な対策を講じることが必要です。

クロスサイトリクエストフォージェリ(CSRF)の被害例

CSRF攻撃の被害事例として、2012年6月に発生した第三者のPCを利用した遠隔操作事件があります。

この事件では、CSRFを悪用した攻撃者が関東地方のある市の公式ホームページに殺人予告の書き込みを行いました。結果として、遠隔操作されたPCの所有者4人が誤って逮捕されるという誤認逮捕の事態に至りました。

この事件が拡大した一因として、当時の捜査機関がサイバー攻撃に関する十分な知識を有していなかったことが挙げられます。攻撃者はサイトアクセス時の暗号化など、巧妙な手法を駆使して追跡を困難にし、犯人特定には多大な時間が費やされました。

犯人の逮捕に至ったのは事件発生から約半年後の2013年2月であり、この一連の事件は、Webセキュリティの重要性と緊急性を改めて浮き彫りにした事例と言えます。

ユーザー側に必要なセキュリティ対策

CSRF攻撃から保護するためには、Webアプリケーションを利用するユーザーと、それを提供する運営者の両方が、適切かつ定期的にセキュリティ対策を講じることが不可欠です。以下では、ユーザーが実践できるCSRF対策について3点紹介します。

  • オンラインサービスを利用後は必ずログアウトする
  • 不審なサイトやメールにはアクセスしない
  • 身に覚えのない送金等はすぐに運営に連絡する

オンラインサービスを利用後は必ずログアウトする

CSRFはログイン状態を悪用して不正なリクエストを送信する攻撃であるため、オンラインサービス利用後は速やかにログアウトする習慣を身につけることが重要です。ログアウトすることで、セッションの乗っ取りを防ぎ、攻撃者がアカウントを不正利用するリスクを減らすことができます。

不審なサイトやメールにはアクセスしない

未知の送信元からのメールに含まれるリンクには、安易にアクセスしないことが肝心です。不審なメールは開封せずに削除し、アンチウイルスソフトウェアを用いて定期的にメールのスキャンを行うことが推奨されます。また、Webサイト上で見かける不審なURLも同様に、クリック前にその安全性を慎重に確認することが重要です。これらの行動は、CSRFのみならず、多くのオンライン脅威から自身を守る基本的な対策となります。

身に覚えのない送金等はすぐに運営に連絡する

金銭取引を行うネットバンキングやECサイト、情報発信が可能な掲示板サイトでは、クロスサイトリクエストフォージュリ(CSRF)による被害が特に起こりやすいことが知られています。したがって、記憶にない送金履歴がある場合や、自分の記憶と異なる投稿が掲示板にある場合は、直ちに該当サービスの提供元に報告することが重要です。この迅速な行動が、さらなる被害の拡大を防ぎ、問題の早期解決に繋がります。サービス提供者と連携することで、自身だけでなく他のユーザーのセキュリティも守ることに繋がります。

サービス提供者側に必要なセキュリティ対策

Webサービス運営者はCSRF攻撃への対策をシステムレベルで実施することにより、サービスの信頼性を高め、ユーザーを守る責務があります。

不正なリクエストを阻止することで、攻撃による被害を事実上防ぐことが可能です。主な方法は4つあります。

  • 画像認証やワンタイムトークンによってリクエストの照合を強化する
  • サイト外からのリクエストを受信・処理しないように設定する
  • 常に最新の状態を保ちセキュリティ対策を徹底する
  • リンク元を確認する

画像認証やワンタイムトークンによってリクエストの照合を強化する

1つ目の対策は、リクエストの検証を強化することです。

CSRF攻撃は、ユーザーが無意識のうちに意図しないリクエストを送信することを目的としています。リクエストが正当な前のページから送られたものであるかをシステムで検証し、正当なリクエストのみを処理することで、攻撃を阻止できます。

リクエスト検証の手法には複数の方法があり、CAPTCHA(画像認証)や、システムが生成する予測不可能なランダムな文字列(ワンタイムトークン)を用いる方法があります。これらの手法は、不正な自動化されたリクエストを効果的に識別し、防ぐのに役立ちます。

サイト外からのリクエストを受信・処理しないように設定する

2つ目の対策は、サイト外からのリクエストを受信・処理しないように設定することです。外部からのアクセスを特定し、それがサイト外部からのものであればリクエストを拒否することも重要な対策です。

Webブラウザがリクエストと共に送信するRefererヘッダを利用することで、このような判定が可能となります。Refererヘッダは、リクエストが発生した元のページ(リファラー)を示す情報で、サービス側は外部からの不正なリクエストを識別できます。

常に最新の状態を保ちセキュリティ対策を徹底する

3つ目の対策は、常に最新の状態を保ちセキュリティ対策を徹底することです。サービスのセキュリティを強化するためには、適切なセキュリティソフトウェアの導入が欠かせません。

特に企業環境では、標準のセキュリティ機能を超えた保護が求められます。振る舞い検知機能を持つセキュリティソフトウェアは、未知の脅威に対しても高い防御力を提供します。

さらに、セキュリティソフトウェアの定期的な更新、オペレーティングシステムやアプリケーションのパッチ適用は、既知の脆弱性を突く攻撃から保護する上で不可欠です。システムは常に最新のセキュリティ状態を維持し、さまざまなセキュリティ脅威に対して有効な防御を実現します。

リンク元を確認する

4つ目の対策は、リンク元を確認することです。Webアプリケーションでは、Refererヘッダを利用してリクエストの元が正当なものかどうかを判断し、不正なアクセスを防ぐ手段を取ることが可能です。

Refererヘッダには、ユーザーがリクエストを送信する際に使用しているURLの情報が含まれます。もしRefererヘッダを検証した結果、予期されたページ遷移をしていないことが明らかになれば、そのリクエストがCSRF攻撃によるものである可能性が高くなります。この方法を用いることで、Webサーバーは正当なリクエストのみを処理し不正なリクエストがあった場合にはそれを拒否できます。

正しい対策をとることでクロスサイトリクエストフォージェリの被害は防ぐことが可能

この記事では、クロスサイトリクエストフォージェリ(CSRF)への対策などについて詳しく解説しました。

CSRFは、ユーザーが意図せずに行うリクエストを不正に実行させ、アカウントのなりすましや金銭的損失などの被害を引き起こす可能性のある攻撃手法です。このような攻撃から保護するためには、確実なセキュリティ対策を施すことが重要です。

トークン使用は、CSRF対策の中でも特に効果的な手段の一つです。最新のWeb開発フレームワークやライブラリを活用することで、自動的にセキュリティトークンが生成され、各リクエストに検証用のトークンを含めることが可能になります。このプロセスにより、不正なリクエストを効果的に排除し、システムの安全を確保できます。

また、定期的な脆弱性診断を通じてシステムの安全状態を評価することをおすすめします。外部の専門ベンダーによる診断サービスの利用や、自社での脆弱性診断ツールの導入により、システムに存在する潜在的な脆弱性を発見し対処することが可能です。

予算やタイミングなどを考慮し、自社に最適な診断方法を選択することが肝要です。これらの対策を適切に実施することで、CSRF攻撃によるリスクを軽減し、より安全なWeb環境を提供することが可能になります。

デジタル化の窓口 製品比較表サイドバナー

目次

おすすめ比較一覧から、
最適な製品をみつける

カテゴリーから、IT製品の比較検索ができます。
1762件の製品から、ソフトウェア・ビジネスツール・クラウドサービス・SaaSなどをご紹介します。

すべてみる