2019.04.05
csrf(クロスサイトリクエストフォージェリ)という言葉を耳にしたことがあっても、内容についてはよくわからないという人も多いのではないでしょうか。csrfとは、webアプリケーションの脆弱性を利用したサイバー攻撃の一種です。この記事では、csrfによって具体的にどのような被害が発生するのか、攻撃の仕組みはどうなっているのかについて解説します。また、予防や対策方法についても詳しく紹介します。
まず、csrfとはどのようなサーバー攻撃なのかを説明します。起こりやすい被害の内容や対象となるアプリケーション、攻撃の仕組みについて解説します。
SNSなどのオンラインサービスを利用している際にログイン状態を保持したまま、たまたま気になった別のサイトを閲覧したことがあるという人は多いのではないでしょうか。csrfとは、このようなログイン状態を狙った攻撃です。具体的には、ユーザーが悪意を持つ攻撃者が作成したページなどにアクセスしてしまうと、本人の意思とは関係なく情報やリクエストを勝手に送信されてしまうというものです。リクエスト強要とも呼ばれます。
明らかなspamの広告などが画面に表示されるわけでもなく、本人が意図しない形で行われるため、ユーザー側が気付きにくいという特徴があります。そのため、被害が起きて初めて自覚するというパターンがほとんどです。このような手口で、webサイトの掲示板やSNSに本人を装って勝手に書き込みされてしまうケースも少なくありません。オンラインバンキングやクレジットカードの情報を盗まれて金銭的な被害に発展する可能性もあります。
攻撃の対象となりやすいのは、トランザクション処理が行われるフォーム画面が自サーバーから供給されたものであることをチェックしていない脆弱なアプリケーションです。具体的に対象となるアプリケーションについて説明します。まず、Basic認証を用いているwebアプリケーションやCookieを用いてセッションIDを搬送している webアプリケーション、Digest認証を用いているwebアプリケーションです。このほか、webクライアントから自動的に得られる情報によってユーザーやセッションを識別しているwebアプリケーションも対象となります。
csrfによる攻撃の仕組みですが、まず悪意を持つ攻撃者が罠となるwebサイトを用意し、巧みな方法でサイトへと誘導します。誘導された被害者がサイトを閲覧してしまうと、閲覧したパソコンからアクセスする意思のないwebサイトの掲示板などのサイトに強制的にログインさせられてしまいます。その結果、ユーザーが意図していないコメントが掲示板に勝手に書き込まれたり、SNSで意図としない情報発信をさせられたりするというものです。ただし、書き込みが行われたwebサイトの接続ログを調査しても、被害者のアクセス情報が記録されているだけですので、まず被害者自身が疑われてしまいます。
ここからは、csrfの攻撃の特徴について詳しく紹介します。有効な対策を行ううえでは、攻撃の特徴を理解しておくことが大切です。
まず、csrfの特徴が、ユーザーがSNSなどにログインしたままの状態を狙ってくることです。たとえば、ログアウトしないまま別のサイトを閲覧中に興味を持ったURLを開いた際、URLに自分のSNSに第三者が作成した文章を投稿するように仕込まれている場合があります。このようなやり方で、ユーザーは強制的に自分の意図しない文章を、あたかも自らの投稿のように発信させられてしまうというわけです。SNSは拡散力が強いため、たったひとつの投稿ですぐに炎上してしまう可能性もあります。SNSではなく、オンラインのクレジット決済や銀行のネットバンキング利用していた場合は、事態はさらに深刻です。個人情報を盗まれる、金銭的な被害が生じるなどの重大な被害へ発展するおそれがあります。ユーザー側にも、利用が終了したらすぐにログオフする、ログインした状態で別のサイトを閲覧しないように注意喚起を促しましょう。
csrfの脅威は、たったワンクリックとワンタップで不正なリクエストを強制させられることです。加えて、オンラインサービス利用の有無やログイン状態にかかわらず、広範囲にさまざまな罠を仕掛けておくことができます。そのため、あらゆる対象者が被害に遭う可能性が高いのです。罠が仕掛けられたwebページには、執拗に不安を煽る文言や言葉巧みな文章によってユーザーを騙すものが多くあります。このようにユーザーに心理的不安を与えることでクリックを迫るという悪質な手口が増えており、利用しているサービスを特性されてしまうという被害が後を絶ちません。
多くのインターネット上のサービスでは、ログイン画面でユーザーIDとパスワードを入力させることで個人を判別する仕組みを取っています。ただし、毎日のように利用するサービスでは都度入力するのは手間でしょう。そのため、多くのユーザーが、ブラウザ上にログイン情報を残しておくことで、次回以降のログイン入力を省略しています。面倒を省くことでユーザーの利便性が向上するだけでなく、サービスへの利用も増えやすくなるため、サービス側でもログイン情報を残せる設定にしているケースがほとんどです。
スマートフォンなどのデバイスの普及もあり、年齢を問わず多くの人がオンラインバンキングやSNSなどの複数のインターネットサービスを当たり前のように利用しています。しかし、こうした背景が、csrfによる攻撃被害を拡大させています。場合によっては多額の金銭的被害を受けるほか、関係ない相手への誹謗中傷を手伝わされてしまう場合もあるのです。まったく意図しない形で炎上や犯罪予告に加担させられてしまうケースもあります。誹謗中傷により、被害者の実生活に悪影響を生じさせてしまうことは犯罪行為です。
結果として、誤認逮捕といった信頼回復が難しい被害へと発展する可能性もゼロではありません。さらに、本人が意図しないため、被害をすぐに自覚することが難しいということがcsrfのやっかいな点です。そのため、SNSに意図しない投稿をしてしまっていても周囲から指摘されるまで気付かずに放置してしまう、金銭被害が起きて始めて気付くという事態になるのがほとんどです。
すでにほかのサイバー攻撃によって、パソコンやスマートフォンが感染してしまっている状態で、csrfの罠に引っかかってしまうと被害がより一層深刻化します。まず、パスワードやクレジット番号といった個人情報を盗まれたり、利用しているオンラインサービスを特定されたりする可能性が非常に高くなります。金銭的な被害に発展するほか、盗まれた個人情報やサービス情報が悪用されて知人や友人が巻き込まれる恐れも出てくるのです。悪意ある第三者は、被害者を装ったなりすましや偽メールなどで友人や知人にコンタクトを取り、さらに彼らの情報まで盗んでしまいます。企業側になんの責任がなくても、提供しているサービスの利用を通じてこのような被害が出てしまうと、悪い噂が広がって風評被害を受けてしまう可能性もあります。
csrfの攻撃の特徴について理解したところで、ここからは予防と対策について解説します。適切な予防と対策を行うことによって被害を未然に食い止められる可能性も高まります。
企業のweb管理者が、システム上に組み込んでおくと良い予防と対策について紹介します。システムにきちんとした対策が施されていれば、それだけ大切なユーザーを被害から遠ざけられます。工数がかかるものもありますが、web担当者がきちんと責任をもって対応しておくことで、より多くのユーザーが安心して利用できるでしょう。
根本的な解決のためには、webアプリケーション側でサイト外からのリクエストを受信、処理しないようにシステムを作りこんでおかなければなりません。たとえば、リクエストの送信元が誰なのか、本当にこのリクエストはユーザーが送った信頼できるものなのかを確認する仕組みが必要です。加えて、リクエストを送ってきたURLの確認、送信時のパラメータに対するチェック機能などを適用し、アプリケーションの脆弱性を排除しておくことも重要です。リクエストを十分検証せずにすぐに受け取ってしまうような脆弱なシステムのままにしておくと、被害が発生しやすくなります。別の言い方をすれば、サービスの提供者側が攻撃を受ける隙のないシステムにしておくことで、ユーザーがcsrfの被害に遭う可能性を低くできます。
加えて、攻撃者に推測されにくい任意の情報を照合する処理をし、すぐに使えるようにシステムに組み込んでおくことも必要です。照合に使う任意の情報としてよく用いられるのは、ランダムな数字や文字列、セッションID、ページトークンなどです。こういったものを使用することで、正規のリクエストなのかどうかをより正しく判断できます。
人間だけが理解できる画像化されたチェックコードを表示し、ユーザーに入力させる「キャプチャ」機能を実装することも有効な対策です。具体的には、あえて歪ませて視認性を下げた文字と数字を画像化し、入力情報に使用するというものです。あるいは、背景にノイズを混入させた画像を認証情報として使用するという方法もよく使われます。このように少し複雑化した入力システムを実装することで、悪意のある第三者に情報を盗まれる可能性を軽減できるでしょう。
ここからは、企業のIT管理者が行うべき防と対策について解説します。システムの作りこみだけではcsrfやその他の攻撃への対策として十分とは言えません。悪意のある攻撃に対しては、総合的で多面的な対策が必要です。システムの改良に加えて、これから紹介する3つの対策もしっかりと行っておきましょう。
一般的な対応では不十分な部分をカバーしてくれるのがセキュリティソフトです。エンドポイントへ総合的なセキュリティソフトを導入し、常に最新の状態にして、脆弱性の対策を図る必要もあります。フリーソフトや有償ソフトなどさまざまな種類がありますが、有償でもできるだけ信頼性の高いソフトを導入するほうが安心で確実です。しかし、攻撃の手法も日々進化しているため、ソフトを導入していれば絶対安全ということはありません。
運用中、万が一新しい攻撃手法などが発見された場合は、被害を最小限に食い止めるために、すぐにサイトの一部、あるいは全体を停止しましょう。そして、被害が広がる前に原因の箇所を修正することです。最新の被害手口からサイトを守るためには、定期的に信頼できる第三者からのセキュリティ診断や監査を受けておくことも大切です。
メールを介した攻撃への対策として、メールサーバーで不審なメールを検知できるように対策しておくことも大事です。すべての受信メールが通るゲートウェイ上で、不正サイトへの誘導などを目的とした迷惑メールを阻止するようにしておきましょう。さらに、webサーバー上の不審な通信を可視化することで、執拗なブルートフォースアタックやサイバー犯罪者などからの脆弱性攻撃の発生を素早く検知することができます。不審な通信が可視化できれば、最新の攻撃方法なども、IT管理者間で共有、分析しやすくなります。
あらかじめ、ネットワーク内部から外部不正サイトへのアクセスをブロックするように設定しておくことも大事です。具体的な対策例としては、ネットワークとネットワークの間に立ち、不正アクセスをブロックするためのシステムであるファイアウォールなどを利用するという方法があります。ファイアウォールは、その名の通り不正のアクセスに対する防火壁の働きをします。送付される情報から接続を許可して良いサイトかどうかを判別し、不正アクセスであると判断した際には、IT管理者に通知してくれるので便利です。より高度なセキュリティ対策には欠かせないものであるファイアウォールの設定は、IT管理者の負担軽減にもつながります。
csrfの主な特徴は、不正なリクエストを強要することで、ユーザーが意図していない情報発信などをさせることです。IT管理者側としては、エンドポイントに総合的なセキュリティソフトを導入し、常に最新の状態にするなどの対策を取っておくこと必要があります。加えて、ファイアウォールを利用して、不正サイトへのアクセスをブロックすることも有効です。攻撃の手口も日々進化していますので、常に最新情報をチェックしておくほか、定期的に第三者によるセキュリティ監査を受けておくことが必要です。万が一、被害が起きてしまった場合に備えて、ユーザーがすぐ連絡できる仕組みや保証についても検討しておきましょう。