ITエンジニアが仕事に対して思うこと

ITエンジニアとして働く中で感じたことを、現場の温度感そのままに言語化するブログです。設計・実装・運用のリアル、学び続ける負荷、品質とスピードのせめぎ合い、コミュニケーションの難しさなど、きれいごとだけでは語れない「仕事の実態」を整理します。誰かを責めるのではなく、なぜそうなるのかを構造で捉え、明日から少し楽に、少し強く働ける視点を提供します。新人から中堅、マネジメントまで参考に。

情報処理安全確保支援士令和6年春期問1 ‐CSRF攻撃の メカニズムと対策を完全攻略 【動画解説付き】

www.youtube.com 情報処理技術者試験(令和6年春期 午前 問1)の過去問を題材に、クリックしただけで勝手に送金されてしまう恐ろしい「CSRF(クロスサイトリクエストフォージェリ)攻撃」のメカニズムと、その正しい対策方法について分かりやすく解説します。似ているようで全く違うXSSとの違いや、現代の最新Webセキュリティ事情についても触れています。Webセキュリティの基本を学びたい方必見の内容です。 まずはCSRF、つまりクロスサイトリクエストフォージェリについて理解しましょう。これはWebアプリケーションのセッション管理の不備を突く攻撃手法です。サーバーが人ではなくブラウザのCookieを信用してしまう仕様を悪用し、正規サイトにログイン中の利用者が罠サイトをクリックすることで、利用者の権限で勝手に意図しないリクエストを送信させてしまいます。例えば、勝手に送金操作を行わせるといったことが可能になります。 このCSRFに対する有効な対策として、いくつかの方法があります。一つ目はパスワードの再入力です。重要な操作の直前にパスワードを要求することで、攻撃者がリクエストを自動送信できたとしても、パスワードを知らないため攻撃を食い止めることができます。二つ目はトークンによる照合です。ログイン後に毎回異なるランダムな値をサーバーから発行し、リクエストごとにその値を照合する方法です。攻撃者はこのランダムな値を予測できないため、リクエストを偽造できなくなります。三つ目はRefererチェックです。リクエスト中のRefererという情報を確認し、どこから来たリクエストかを判定するものです。罠サイトからのリクエストであれば、正しいリンク元とは異なるため拒否することができます。 一方で、CSRF対策としては効果がない、間違えやすい対策があります。それがサニタイジングです。サニタイジングとは、リクエストに含まれる特殊文字を置き換えて無害化する処理のことです。これは悪意のあるスクリプトをWebページに埋め込み、利用者のブラウザ上で実行させるXSS、つまりクロスサイトスクリプティングに対する有効な対策です。CSRFはスクリプトを実行させる攻撃ではなく、正規の機能を悪用する攻撃であるため、文字を無害化してもリクエスト自体は有効なままサーバーに届いてしまいます。そのため、サニタイジングはCSRFには無効なのです。 さらに、最新のWebセキュリティ事情として知っておくべき技術もあります。一つはSameSite Cookie属性です。現在のブラウザはデフォルトでこの属性がLaxに設定されていることが多く、多くのCSRFは自動的にブロックされます。もう一つはAPIベース認証です。Cookieを使用せずヘッダを使って認証を行う方式であれば、CSRFのリスクは低くなります。最新のWeb開発の枠組みでは、標準でこれらの対策が組み込まれていることも押さえておきましょう。