セッションハイジャックについて勉強してみた 1

notoです。

10月中にwebサービスつくりたいと思ってましたが、どうやらもう少しかかりそうです。

webサービスで心配なのはセキュリティ。攻撃手法はCSRF XSS SQLインジェクション セッションハイジャックと色々ありますが、セッションハイジャックについて勉強してみました。

セッションハイジャック

セッションIDが第三者にしられた場合、その利用者に成りすましてアクセスされる可能性がある。 第三者がセッションIDを悪用して成りすますことをセッションハイジャックと呼ぶ。

セッションハイジャックの影響

  • 個人情報等の閲覧
  • 利用者の持つ権限での操作(商品の購入など)
  • 利用者のIDによる設定の変更など

セッションハイジャックの手法

分類 攻撃手法 脆弱性
セッションIDの推測 セッションIDの推測 自作セッション管理機構の脆弱性
セッションIDの読み出し XSS XSSの脆弱性
HTTPヘッダインジェクション HTTPヘッダインジェクションの脆弱性
Refererの悪用 URL埋め込みのセッションID
セッションIDの強制 セッションIDの固定化攻撃 セッションIDの固定化攻撃の脆弱性

セッションIDの推測

攻撃手法

  • 対象アプリケーションからセッションIDを集める
  • セッションIDの規則性の仮説を立てる
  • 推測したセッションIDを対象アプリケーションで試す

脆弱性が生まれる原因

推測可能な情報を元にセッションIDを生成していること。 webアプリケーション内でセッションIDを生成していること。

対策

PHPが備える管理機構を利用する。 PHPでは以下の情報の組み合わせをMD5でハッシュ化したものをセッションIDとしている

  • リモートIPアドレス
  • 現在時刻
  • 乱数

より安全に

安全な乱数を元にセッションIDを生成するよう変更することが可能。 php.iniに以下の設定を行う。

1
2
3
[Session]
session.entropy_length = 32
session.entropy_file = /dev/urandom

これでよりセキュアなアプリケーションを作成することができますね。これからしばらくはセキュリティのことでいこうかな。。。 引用及び参考にさせてもらっているのは 体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践 です。

セキュリティに関してはネットでの情報はあまり信頼できないし、どういった攻撃手法でどういう対策を行うべきか知りたかったので購入してみました。それにしても分厚いね。。。

参考文献

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

Comments