意図しない処理が実行されているCSRF(クロスサイトリクエストフォージェリ)とは?

意図しない処理が実行されているCSRF(クロスサイトリクエストフォージェリ)とは?
  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

CSRF(クロスサイトリクエストフォージェリ)とは、ユーザーに攻撃用のURLを踏ませることでなりすましてSNSへの投稿や不正な書き込みを行うことができてしまうサイバー攻撃です。

リクエストの整合性を確認したり、不明なリンクへのアクセスをブロックすると行ったことが必要です。

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

CSRF(クロスサイトリクエストフォージェリ)とは、XSS(クロスサイトスクリプティング)やSQLインジェクションと同じようにWebアプリケーションの脆弱性を利用したサイバー攻撃の一種です。

正規のリクエストとは別のサイトからリクエストを送ることによって、不正な書き込みやアカウントの設定など気づかないうちに行われてしまいます。

リクエストの整合性を確認・トークンの照合や不明なリンクへのアクセスを控えると行ったことが必要です。

XSSについてはこちら
SQLインジェクションはこちら

CSRFの攻撃手法

CSRF攻撃は以下のような手順で行われます。

  1. 攻撃者が罠URLをメールやサイトに仕掛ける
  2. ユーザーが罠URLにアクセスする
  3. 偽サイトから成りすましのリクエストが本物のサイトへ送られる
  4. 本物のサイトに不正な書き込みが行われる、書き込みを行なっているのは攻撃者だが発信元はユーザーとなってしまう

ログインしているユーザーが攻撃者の仕掛けたURLを踏んでしまうと、意図しないアクセスが成立してしまい、不正書き込みなどが発生してしまいます。

URLには書き込みなど行う処理が含まれているため、ログインしているユーザーだと処理がそのまま実行されてしまい、事件に発展するといったことが起こってしまいます。

また、実行したIPアドレスやアカウントは、ユーザーの情報であるため犯人であると間違えられる可能性があります。

CSRFの被害と被害事例

CSRFが行われてしまうと、以下のような被害が起こります。

不正書き込みや閲覧・設定の変更

ログインされているユーザーにCSRFが行われてしまった場合、不正な書き込みが行われてしまいます。

ログインされている状態が成立しているからこそ不正な書き込みや閲覧・設定の変更が可能となってしまうのです。

SNSなどであれば、意図しない書き込みや誹謗中傷が行われてしまい、被害にあった方からの賠償つながりかねません。
設定画面やユーザー変更画面を見ることができてしまえば、セキュリティを低く設定できてしまったり、ユーザー情報によるアカウント乗っ取りにもつながります。

また、ECサイトなどであれば金銭的な被害にも繋がってしまう可能性があるので、注意が必要です。

CSRFの被害事例1:ぼくははまちゃん事件

mixiにある、URLをクリックしてしまうと「ぼくははまちゃん!」という日記が勝手に書き込まれてしまうというCSRF攻撃がありました。

ユーザーがURLをクリックするとユーザー権限が攻撃者に渡ってしまい、不正な書き込みを行うことができてしまいます。

今回は悪質な不正書き込み以外は被害がはなかったものの、脅迫や場合によってはECサイトでの購入やネットバンキングでの送金など勝手に行うことが可能です。

不明なURLだと思った際には、押さないようにしましょう。

参考:「ぼくはまちちゃん」 ――知られざるCSRF攻撃

CSRFの被害事例2:Twitterでも起きていたCSRF

攻撃者が不正なURLを閲覧させることによって、端末のSMS経由でアカウントが操作されるというものでした。

不正なリンクを閲覧した場合、ツイートすることができたりダイレクトメッセージを読むことが可能となってしまいます。

SNSなどのリンクでは、不正なものか判断することが難しいため閲覧してしまうことが多いです。
しかし、不正なサイトかどうか判断することができるセキュリティソフトを導入しておくことでブロックすることができます。

被害規模などは公表されていませんが、現在は修正され安全に使うことができます。

参考:他人のアカウントからツイート投稿も、Twitterが脆弱性を修正

CSRFの対策

CSFRは、ユーザー側とサービス提供者側の双方で対策が必要になります。
両者の視点からの対策方法をご紹介します。

ユーザーが行う対策

不正サイトのブロック

セキュリティソフトなどによる、不正サイトや悪質サイトのブロックを行うことで未然にリクエスト送信やアクセスを防ぐことができます。

アクセスを防ぐことができれば、そのサイトに対してリクエストを送ることができないため、有効な手段と言えます。

常時ログインにしない

ログインした状態で強制的にリクエストが送信されてしまった場合、書き込みを行うことができたり情報の変更ができたりと好ききなようにできてしまいます。

しかし、ログアウトしている状態であれば強制的にリクエストが送信されたとしても、ログインし直さなければならない状態なので、不正に処理が実行される訳ではないためCSRFを防ぐことが可能です。

不明なリンクにアクセスしない

不明なリンクにアクセスすることによって、攻撃者のサイトに訪問するきっかけになってしまいます。

ログインしていた場合、ログイン・クレジットなどの情報が漏洩してしまう可能性にもつながります。

見覚えのないリンクであれば、踏まないようにしましょう。

提供者が行う対策

アクセストークンを使う

リクエストを送信する際にトークンをリクエストパラメータに記載しておくことで、
リクエストの整合性を確かめることができます。

サーバー保存されているトークンとアクセス時に含まれている値が合わなければリクエストは受け付けず、リクエストは実行されないのでCSRFは起こりません。

開発側がきちんと設定しておくことで、被害にあう可能性を低くすることが可能ですので開発を行う際に導入しましょう。

外部からのリクエストには応答しない

外部からのリクエストに応答しないことによって、書き込みに対応することができるため、CSRFが起こり得る環境を防ぐことができます。

開発段階で、実行できるリクエストを限定などしておくことで、対策することができます。

また、ファイアウォールなどの対策を行うことで不正なアクセスも防ぐことができるので、有効な手段です。

まとめ

今回は、CSRFについて解説していきました。

被害事例をみてわかる通り、不正書き込みやメッセージの閲覧も可能となってしまう問題に発展します。

おもしろ半分であればまだいいものの、場合によっては脅迫や情報漏洩・金銭的な動きも出てしまう可能性があるので注意が必要です。

Webアプリケーションを開発している方も、ユーザーもどちらも対策することが可能です。

お互いに、セキュリティ対策を行うことで被害にあう確率を低くすることが可能ですので、対策を行なっていきましょう。

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

記事が気に入ったら
wp.supportを "いいね!"
Facebookで更新情報をお届け。

WordPressの保守・セキュリティ対策なら「wp.support」