セッション管理の不備


セッション管理機構

webアプリケーションでは認証結果の情報を記憶しておく手段として、セッション管理機構がある。その代表的な方法がクッキーなどにセッションIDという識別子を記憶させ、このセッションIDをキーとしてサーバー側で情報を記録する方法。セッションIDをもっていればサーバー側は誰が問い合わせてきたのかがすぐにわかる為、毎回認証行為をする必要がなくなる。

セッションハイジャック

他人がセッションIDを悪用して成りすますこと。第三者がセッションIDを手に入れる方法は主に三つ
- セッションIDの推測
- セッションIDの盗み出し
- セッションIDの強制

セッションIDの推測

これはセッションIDの生成方法が予想しやすいのが原因です。例えばセッションIDが連番になっている、ユーザーIDや日時がセッションIDの元となっている、乱数に規則性があり複数のセッションIDを集めることで規則性を見つけ、結果セッションIDの推測に繋がる、オープンソースのソフトウェアだとセッションIDの生成ロジックがわかってしまい、解読される恐れがある。

セッションIDの盗み出し

セッションIDを外部から盗み出すこと。
- クッキー生成の際のセキュリティ上重要な属性であるDomain、Secure、HttpOnlyに不備があると漏洩してしまう
- ネットワーク的にセッションIDが盗聴される
- クロスサイト・スクリプティングなどアプリケーションの脆弱性により漏洩する
- PHPやブラウザなどプラットフォームの脆弱性による漏洩
- セッションIDをURLに保持してる場合ヘッダから漏洩する

セッションIDの強制

セッションIDを利用者のブラウザに設定することで、攻撃者は自分で設定したため利用者のセッションIDを知っているのと同じ状態になります。これをセッションIDの固定化攻撃という。