クロスサイトリクエストフォージェリ(CSRF)の脆弱性 
-Webアプリケーションの脆弱性入門 4-

Share

「クロスサイトリクエストフォージェリ(CSRF)」は、Webアプリケーションの脆弱性の一つです。この記事では、クロスサイトリクエストフォージェリが何であるか、その攻撃の具体的な仕組みや流れ、想定されるリスクについて解説します。またクロスサイトスクリプティング(XSS)の脆弱性との違い、実際にどのような予防策を取るべきかについても触れます。そしてどのようにして自分のWebサイトやアプリケーションを保護するかについて解説します。

前回までの内容

セッション管理の不備は、Webアプリケーションの脆弱性の一つです。セッションIDが日付・誕生日・ユーザ名など、推測可能なもの作られたりしているなどの問題があると、セッションハイジャック(攻撃者が他のユーザのセッションIDを盗み取り、そのIDを使用してユーザのアカウントに不正アクセスする行為)のリスクを高めます。セッションハイジャックが成立するリスクを高める要因となる脆弱性および攻撃方法には、セッションIDの固定化(セッションフィクセーション)やセッションIDの推測などがあります。脆弱性を悪用した攻撃を防ぐためには、セッションIDを推測困難な値にする、ログイン・ログアウト時に新しいセッションIDを発行する、ワンタイムトークン付与やIPアドレスによる確認などの対策が必要です。

アクセス制御の不備は、Webアプリケーションにおいて、本来付与されている権限の範囲内でのみ動作するような制御が実装されていない問題を指します。これにより権限昇格やパストラバーサル(パラメータを操作することで、本来制限された領域外のファイルやディレクトリにアクセスする行為)などのリスクが生じます。主な対策方法として、権限に基づく機能制限、適切なアクセス制御ポリシーの実装などが挙げられます。

セキュリティ対策の実施は常に最新のセキュリティ情報を踏まえて見直し、強化していくことが重要です。セキュリティ専門家に相談するなどして、適切な対策を実施しましょう。

前回記事「セッション管理の不備/アクセス制御の不備の脆弱性 -Webアプリケーションの脆弱性入門 3-」より

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

クロスサイトリクエストフォージェリ(CSRF)とは(困る女性)イメージ

クロスサイトリクエストフォージェリ(CSRF)は、攻撃者が罠として用意した偽サイトを用いてリンクや画像をクリックさせることで、ユーザが意図していないリクエストを強制的に行わせることができる脆弱性です。例えば、SNS(ソーシャルネットワーキングサービス)で「いいね!」をする、銀行の振り込み操作など、被害者がログインしているWebサービスの操作を攻撃者が悪用することが可能です。

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

クロスサイトリクエストフォージェリ攻撃の仕組みは、Webサイトでログインしたユーザからのリクエストがそのユーザが意図したリクエストであるかどうかを識別する仕組みがない場合、外部サイトを経由してユーザが意図しないリクエストを送信させ、それをサーバに受け入れさせるというものです。例えば、銀行のサイトにログインしている状態で攻撃者が仕掛けた罠サイトのリンクURLをクリックすると、ユーザの意図しない送金処理などが実行されてしまう恐れがあります。

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

クロスサイトリクエストフォージェリ攻撃の特徴は、攻撃者によってユーザが意図しないリクエストを実行させられ、強制的に、情報の変更や購入処理を実行させられてしまうところにあります。注意すべきは、クロスサイトリクエストフォージェリは、システムやアカウントが保有する機能や権限によって様々な被害を受ける可能性があることです。例えば、ユーザの意図しない売買成立での金銭請求、ログイン情報の変更によるアカウントの乗っ取り、データ削除処理の実行によるデータ消失などがあげられます。

クロスサイトスクリプティング(XSS)とクロスサイトリクエストフォージェリ(CSRF)の違い

クロスサイトスクリプティングとクロスサイトリクエストフォージェリは、Webアプリケーションのセキュリティ脅威として知られていますが、その仕組みや対策には明確な違いがあります。クロスサイトスクリプティングの基本的な手法は、悪意のあるスクリプトをWebページに挿入し、他のユーザがそのページを閲覧する際にスクリプトが実行される攻撃です。主に出力に対するエスケープ処理の不備が原因で発生します。一方、CSRFは、ユーザがログインしている状態で、攻撃者が仕掛けた誘導URLをクリックさせることで、ユーザの意図しない操作を実行させる攻撃です。この攻撃は、セッション管理やトークンの処理が不適切な場合に主に発生します。企業や開発者は、これらの違いを理解し、それぞれの脅威に対する徹底的な対策や対応を導入することが求められます。注意深くシステムの保護と保守を行い、ユーザの情報を守ることが重要です。

クロスサイトリクエストフォージェリの原因

脆弱性が発生する原因は、Webサイト側でユーザからの正規のリクエストと外部サイトを経由して偽造されたリクエストを区別できないことにあります。セッション管理のためにCookie、Basic認証、またはSSLクライアント認証を使用しているWebサイトでは、このような問題が発生する可能性があります。特に、影響を受けるWebサイトのうち、ログイン後に重要な処理等を行うサイトは、大きな被害につながる可能性があるため、注意が必要です。

クロスサイトリクエストフォージェリ攻撃の対策

クロスサイトリクエストフォージェリ(CSRF)攻撃の対策として、送信されたリクエストが正しい画面遷移によるものであることを確認し、不正な場合には処理を実行しない仕組みを実装してください。画面遷移の制御に利用可能な要素としては、下記が挙げられます。

1. 推測困難かつランダムな文字列(トークン)

2. Originヘッダやカスタムヘッダの値

3. 再認証による本人確認

トークンはセッション単位のリクエストごとに有効とし、別のリクエストに対して使用不可としてください。

セキュリティ対策の取り組み

セキュリティ対策の取り組み(アンケートバインダー)イメージ

このような攻撃を理解し適切な対策を導入することは、Webセキュリティを保護する上で非常に重要です。また、クロスサイトスクリプティング攻撃により、クロスサイトリクエストフォージェリの緩和策が無効化される場合もあるため、多方面からの脆弱性対策の実施も重要です。企業担当者はこの攻撃の仕組みを理解し、常に最新の対策情報を取得して、安全な環境を保持する必要があります。特に自社のWebサイトを運営する場合、定期的な調査や検証を行い、対策を強化することが求められます。

まとめ

クロスサイトリクエストフォージェリ(CSRF)は、ユーザがログイン状態のWebサイトにおいて、攻撃者が偽造したリクエストを送信させることで、強制的に情報の変更や購入処理等を行わせるものです。例えば、SNSで「いいね!」をする、銀行の振り込み操作など、被害者がログインしているWebサービスの操作を攻撃者が悪用することが可能です。この攻撃を防ぐためには、サイトが正規のリクエストと偽造されたリクエストを区別するために、正しい画面遷移によるリクエストであることを確認する仕組みを実装することが推奨されます。また、企業やサイトの運営者は、この問題をよく知って、対策をしっかりと行う必要があります。

Security Report TOPに戻る
TOP-更新情報に戻る


資料ダウンロードボタン
年二回発行されるセキュリティトレンドの詳細レポート。BBSecで行われた診断の統計データも掲載。
お問い合わせボタン
サービスに関する疑問や質問はこちらからお気軽にお問合せください。

Security Serviceへのリンクバナー画像
BBsecコーポレートサイトへのリンクバナー画像
セキュリティ緊急対応のバナー画像
セキュリティトピックス動画申し込みページリンクへのバナー画像