弱みに付け込む:クロスサイトリクエストフォージェリ

弱みに付け込む:クロスサイトリクエストフォージェリ

 次に、入り口の係員が他人の弱みに付け込むような悪人だった場合です。入り口に入ってきた車をだまして、Aゲートではなく、別のところに連れて行くだけでなく、ユーザーに意識させずに何かを実行させてしまうのです。

 これが「クロスサイトリクエストフォージェリ(Cross-Site Request Forgery)」です。

 Forgeryというのは、聞きなれない英語ですが、偽造/捏造(ねつぞう)を意味します。よって、直訳すると、サイトをまたいだリクエスト偽造、といった意味になります。サイトをまたいでリクエストを偽造するというのは、一体どういうことなのでしょうか。

 サイト上に、データの書き込み、修正、削除などの機能を持たせる場合がありますが、基本的にこの処理はそのサイト上で行われることを意図していますし、通常は認証して身元を確認した上で行います。しかし、それを別のサイトからリクエストを行うように仕向けることが、サイトをまたいだリクエストの偽造、つまりクロスサイトリクエストフォージェリ(CSRF)です。

 例えば、あるユーザーが知らず知らずにどこかのサイトの送信ボタンを押したら、そのターゲットがそのサイトではなく、どこか別のサイトの新規登録機能のプログラムを呼び、新規登録機能を実行させてしまうというようなことが意外に簡単です。

 通常、その機能を利用する前に認証が要求されますが、もしユーザーが、そのサイトへのログイン状態を保持するように設定していたら、そのまま実行されてしまいます。こうした方法で、ユーザーが意図せずに、別のサイトに、コメントを書き込んだり、データを削除してしまうことがありうるのです。

 この攻撃は、そのユーザーとサイト双方に被害があるので、なんとか防御したいところです。対処方法の1つとして、ログイン状態を保持しない、つまり、都度ログインを要求することが考えられますが、ユーザーの利便性が悪くなります。

 ほかによく使われる方法として、当該サイトでコメント書き込みをする場合などにフォームの隠しフィールドの中に目印を埋め込んでおくことが挙げられます。ワンタイムトークンと呼ばれますが、認証情報やセッションIDなどから生成したユニークでまねの難しい文字列を生成して埋め込んでおくことによって、それが内部から来た正しいリクエストとそうでないリクエストを識別することができます。

 また、別の方法としては、CAPCHAという読みにくい英数字を入力するようなステップを設けることも1つの方法です。ブログのコメントを入力する際などに見たことがあるかと思います。

さらに弱みに付け込む:クロスサイトスクリプティング

 もう1つ他人の弱みに付け込む方法として有名なのが、「クロスサイトスクリプティング(Cross Site Scripting)」です。クロスサイトリクエストフォージェリーと同じようにクロスサイトという名前がついていますが、クロスサイトスクリプティング(XSS)は、サイトをまたいだ悪意あるスクリプティングのことを意味します。

 スクリプティングですから、サーバーにアクセスするような機能を実行させるのではなく、Cookieを盗んだり、悪意あるページにリダイレクトするといった悪さを行います。すでに説明したようにCookieにはセッション情報が含まれる場合がありますし、サイトによっては、より機密性の高い情報を含んでいる場合があるため、防御が必要です。

 具体的な攻撃の手法としては、アプリケーションの不備を突きます。つまりそのアプリケーションが入力されたjavascriptを、そのまま出力するようにしていると、その出力結果とともに悪意のあるjavascriptが実行されてしまいます。そして、javascriptによってCookieを読むことができるので、画像のリクエストにCookieを付加するなどしてそれを別のサーバーに送信します。簡単に書くと以下のような流れになります。

 リンクをクリック → アプリケーションにjavascriptが渡される → そのまま出力される → avascriptが実行されCookieを取得する → 別サーバーに送信する

 Cookieの値を取得することで、セッションの乗っ取りをしたり、ページ全体を置き換えることによりて偽のページを作り出してフィッシングをしたり、といったさらなる攻撃の機会を与えてしまうことになります。

 対処するためには、アプリケーションの出力時にjavascriptを無効化すること(サニタイズ)が考えられます。

 では、最後にもう1つの攻撃を見てみましょう。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30