(2019/11/25 執筆、2022/1/6修正・加筆)
CSRF(クロスサイトリクエストフォージェリ)はWebシステムを悪用したサイバー攻撃の一種です。攻撃用のWebページを用意して、システムに意図しないリクエストを行うことを強要します。システム側の脆弱性を突くことで、予期せぬ情報発信やログイン中のシステムでの設定変更などの被害に繋がります。
CSRFの恐ろしい点として、予期しないリクエストによりサービスの提供側も、またリクエストを送ってしまった側にも被害が出ることがあげられます。意図せぬ犯行声明をCSRFによりWeb上に投稿され誤認逮捕が起きる事態まで発生しています。
本記事ではCSRFについて起こり得る被害とその事例、対策について解説します。Web上での予期せぬトラブルを避けるためにも、ご一読いただければ幸いです。
CSRF(Cross-Site Request Forgeries、クロスサイトリクエストフォージェリ)は、Webシステムを悪用したサイバー攻撃の一種です。
CSRFの手口は、ユーザーが悪意のあるURLにアクセスしてしまった場合に、意図しないリクエストを特定のWebサービスに送られてしまうというものです。Webサイトのリンクやメールに記載されたリンクをクリックして、URLのアドレスにアクセスすることで特定のWebサービスへのリクエストが送られてしまいます。
特定のWebサービスへのリクエストは、Webサービスによって内容は変わるものの、Webサービスの設定変更や値の入力、操作の実行などに繋がります。また、WebサービスがSNSや掲示板の場合には、悪意のあるURLに設定した内容を投稿してしまうことになります。
ユーザーの意図しない情報・リクエストが送信されてしまうためリクエスト強要とも呼ばれます。ユーザー側は何が起きたのか気が付くことはなく、後から被害にあったことに気が付くのもその特徴です。
CSRFによる攻撃では、いくつかのパターンが確認されています。
一つはサービスにログインした状態のユーザーを狙った攻撃です。ログイン中の状態で、悪意あるURLにアクセスしてしまうと、サービスに対して任意の操作のリクエストを行うことができる場合があります。
例えばオンラインバンキングのサービスにログインした状態で、送金の操作を行うCSRFが行われ、それがサービス側で受理されてしまうことを想定するとその恐ろしさが分かります。
サービスにおける設定の変更(例えばパスワードの変更)のリクエストを行わせ、そこから攻撃を拡げるパターンも起き得るでしょう。
また、別の形のCSRFを利用した攻撃として、ユーザーの意図しない情報発信を行わせるものもあります。SNSや掲示板などに対するリクエストをCSRFにより行われることで、ユーザーの意図しない投稿が行われてしまいます。投稿の内容が問題のあるものであれば、ユーザーの被害に直結してしまいます。上記のログイン状態とも組み合わせて利用されることが想定されます。
CSRFの恐ろしいところは、リクエストを強要させられてしまうことです。サイバー犯罪者は、ユーザーのログインしている状態やサービスを利用しているかどうかの有無を区別せず、広い範囲で罠を作って置きます。複数の種類のオンラインサービスに対しての罠を作っておくことで、被害に遭うユーザーを拡げる手口がとられています。
また、罠が設置してあるWebページへの誘導では、不安を煽るような文言や言葉巧みな文章が利用されます。ユーザーを騙し、心理的不安にさせることで、リクエスト強要に誘導する傾向が見られます。
CSRFではWebを閲覧したユーザー側、サービスの提供側いずれにも被害が起き得ることが一つの特徴です。本項では、被害内容と事例について記載します。
Webの閲覧者(ユーザー)側の被害として起き得るのは、各種サービスの設定内容の変更や操作が行われてしまうことです。ユーザーがサービスにログインした状態で、CSRFが仕掛けられた罠のWebページがサービスに対するリクエストを送り、サービス側がそれを特にチェックせず受け入れてしまった場合には、サービス側でリクエスト内容の処理が行われてしまいます。
ユーザーの設定(例えばパスワード)が変更されて、その後のアカウント悪用に繋がってしまいます。また、リクエスト処理がオンラインバンキングの送金処理やクレジットカードを利用した購入手続だった場合には、ユーザーが意図しない操作で直接的な被害にも繋がり得ます。
別の目的で、CSRFによりSNSや掲示板などに意図しない情報発信を行わされた場合にも、ユーザーは被害を受けます。CSRFにより行われる投稿内容が個人への誹謗中傷や犯行の予告だった場合には、投稿させられたユーザーが加害者として責を負わされる立場ともなりかねません。
さらには、既にサイバー攻撃によって、パソコンやスマートフォンが乗っ取られている状態で、CSRFの罠に引っかかってしまった場合、個人情報を知られたり、利用しているサービスを特定されてしまう恐れもあります。
サイバー犯罪者によりCSRFで個人情報と利用しているサービスを知られてしまうと、金銭的被害だけでなく、なりすましや偽メールなどで友人や知人を巻き込み、二次的な被害を生む事態にも発展しかねません。
CSRFによりリクエストを送られる側(サービスの提供者など)にも被害がでます。
まずはサービスの悪用によりユーザーの信頼が失われることが大きな被害です。犯罪の温床となってしまった場合には、サービスからはユーザーが離れていくことにも繋がりかねません。また、後述しますがCSRFに対して強いWebサイトを作ることも可能なため、その対応を怠っているとも捉えられてしまいます。
またCSRFはリクエストを送信します。頻繁にサービスに対してリクエストが繰り返された場合には、DoS攻撃となります。サービスの遅延や停止にもつながり得る攻撃です。
Dos攻撃についてはこちらの記事も参照ください。
2012年に発生したサイバー犯罪「パソコン遠隔操作事件」は複数の犯罪行為が含まれるものでしたが、その中には「横浜CSRF事件」と呼ばれる内容が含まれます。
横浜CSRF事件では、CSRFの被害を受けたパソコンから、掲示板サービスに犯行の予告が書き込まれてしまいました。このリクエストを強要されたユーザーが誤認逮捕されてしまう事態が起きています。
Webサイトを閲覧したり、Webサービスを利用する個人ユーザーはCSRFにどのように対処すべきなのでしょうか。
最も根本的なCSRFを避ける方法は、不審なWebサイトにアクセスをしないことです。不審なWebサイトを見ただけで判別することは難しいですが、セキュリティソフトによってはCSRFのためのWebページへのアクセスをブロックする製品もあるため活用するのも一つの手段です。
各種のログインをして利用するサービスの場合、利用終了後は必ずログオフしておきましょう。CSRF攻撃ではログイン状態を悪用する事例が多く見られるため、ログオフしておくことでその被害の多くを避けることができます。
CSRFにより被害を受けた場合、即時にその被害を自覚するのは難しいです。
例えば利用しているSNSのサービスで自分が知らない間に投稿をされても、周囲が指摘するまで気が付かなかったというケースが多くあります。また、何らかの形でオンラインバンキングの不正利用、クレジットカードの悪用に発展した場合も、後から気が付く形になるのがほとんどです。
事後となってしまったとしても、身に覚えのない金銭的な被害や情報発信の投稿などがあった場合は、利用するサービスの運営元にすぐに連絡して、対応を相談しましょう。
サービス提供を行う側でもCSRFに対し、システム的な対処が可能です。サービスの信頼を確保する上で重要な対策となります。
CSRFによる不正なリクエストをサービス側で受け付けないようにしておけば、実質的な被害を防ぐことができます。
対策の一つの方法として、リクエストの照合を強化することがあります。CSRFではユーザーに意図しないリクエスト送信を強要するものです。このリクエスト送信が、前のページから正しく送られたものかどうかをシステム側でチェックし、正しいリクエストの場合のみ処理することでCSRF攻撃を防ぐことができます。
リクエストの照合方法は複数あります。CAPTCHA(画像認証)と呼ばれる画面に表示される数字や文字をユーザーに入力させる方法もその一つです。また、トークンと呼ばれる第三者が予測困難なランダムな文字列をシステム上で保持し、リクエスト内にトークンが含まれるかどうかをチェックするワンタイムトークンと呼ばれる方法もあります。
システム側の対策として、サイトの外部からのアクセスを判別して、サイト外部からのリクエストは処理を行わないという方法もあります。
一例として、WebブラウザではReferer(リファラー)というリンク元のページをリクエストに含む仕組みがあります。これを利用することで、サイト外部からのアクセスを判別する一つの方法となります。
※一部ブラウザでは使用できない場合もあります。
本記事では、CSRF(クロスサイトリクエストフォージェリ)の概要とその対策、被害事例などについて記載しました。
CSRFも、本来ユーザーが行うことを想定していなかった操作を、脆弱性としてサイバー犯罪に悪用した攻撃です。サイバー犯罪者はこのような隙を常に探して、攻撃につなげようとしてきます。
これらの攻撃を防ぐためには、Webセキュリティへの興味を持ち、常日頃から意識・学習することが自分の身を守るために必要です。Webを利用する全てのユーザーにとって必要な備えといえるでしょう。
サービス提供者側も、サービスの信頼性を維持し、社会的な基盤として安心して利用できるWebシステムを提供することが求められます。
この記事と一緒に読まれています
クロスサイトスクリプティング(XSS)のセキュリティ対策とは?
2019.09.08
セキュリティ対策
2019.03.12
用語集
2020.03.13
用語集
WEBページの出力処理に関する攻撃「クロスサイトスクリプティング」の解説と対策方法をまとめてみた
2020.03.16
セキュリティ対策
2020.02.14
セキュリティ対策