第7回 基礎のキソ、エブリバディ・セッション管理!


杉山 俊春
株式会社ユービーセキュア
技術本部 VEXグループ リーダー
兼 セキュリティオーディットコンサルタント
2008/10/21

(Illustrated by はるぷ)

 間違った認識は脆弱性のモト――でも何が間違いなの?


 勉強会の後半は、セッション管理の具体的な方法について踏み込んだ内容となった。セッション管理ではセッションIDを利用すると前述したが、実際にその「セッションID自体の管理」はどのようになっているのかが重要な問題となることがある。

 通常であれば、セッション管理用のライブラリやフレームワークなどが提供する安全な仕組みを用いてセッションIDの管理を行うことが多い。このような既存の安全な仕組み、いわゆる“枯れた技術”を利用することで、Webアプリケーションに発生しがちなセッションIDの問題を回避することが可能となる。特にセッションIDはそれだけで認証状態を管理するなどの用途にも利用されるため、容易に他人のセッションIDを推測できてしまうと、即情報漏えい事故につながってしまうため、厳しく管理する必要がある。

 理想的には既存の安全な仕組みのみでセッション管理を行えればよい。しかし、どうしても機能要件を満たすために既存の仕組みを利用できない場合や、前述のクロスサイトリクエストフォージェリ対策としてのトークンを発行する必要がある場合【注】など、自分でセッションID管理の仕組みを作らなければいけないことも少なからずある。

【注】
既存の安全な仕組みが利用できる場合もある。また、CookieのセッションIDの仕 組みを利用し、セッションIDを一方向ハッシュ関数などで加工する方法でも対策が可能となる。

 この場合、自分ででセッション管理の仕組みを作成することになるが、その方法が脆弱になる可能性がある。既存の仕組みでは、セッションIDの生成アルゴリズムがオープンである状態でも他人のセッションIDを推測することは困難な場合が多い。しかし、自前でコーディングしたセッション管理方法では例えば以下のような問題が存在する場合がある(生成の方法によっては下記以外にもさまざまな問題が発生する可能性がある)。

  1. 外部から観測しただけでも明らかに法則性がある(連番など)
  2. 容易に推測可能な情報のみから生成されている
  3. 同じセッションIDを違うユーザーで共有してしまっている(特にクロスサイトリクエストフォージェリ対策のトークンなどで見受けられる)
  4. セッションIDの安全性が、生成アルゴリズム自体が秘密であることに依存している

 このような問題があっても、出来上がったWebアプリケーションの挙動としては、既存の安全な仕組みを利用したセッション管理と似たものとなる場合が多い。そのため、セッションIDは安全か、というような観点でのテストがない場合、危険にさらされてしまうという問題が残ったままとなる。

 例えば、独自のアルゴリズムで生成された弱いセッションIDの例を以下に示す。

図4 弱いセッションIDの例

 これらのセッションIDは一見ランダムに見え、ランダムな数字11けたを推測するのと同等の強度があるように見えるが、法則性に気付かれてしまうと、数回程度の試行で破られてしまう可能性がある(大規模なシステムで利用すると、すぐに顕在化する別の問題もある)。

講師 「このセッションIDは一見しただけでは危険かどうか判断しにくいかもしれません。しかし、簡単に他人のIDが推測可能です」
クウ (う〜ん。さっぱり分からないな……)
講師 「皆さん、このセッションIDがなぜ危険なのか、独自方式の危険性を感じてもらうためにも考えてみてください。宿題みたいな感じで(笑)。続きはWebで!」
クウ (なんと!ほかにヒントはないのかな?)

【筆者注】
次回、このセッションIDがなぜ弱いのかを解説します。ぜひ、皆さまもどこに問題があるか考えてみてください。




講師 「それでは、今回の勉強会はこれで終わりです。お疲れさまでした。懇親会に行かれる方はこの後……」
クウ 「うー……。セッションID分からないなぁ……。ナツさんは分かりました?」
ナツ 「ん? ああ、なんとなく分かったよー」
クウ 「マジすか! はやっ」
ナツ 「なんというか、過去に似たようなことやろうとしたこともあるから、って理由で分かったから微妙だけど……」
クウ 「ヒントを……」
ナツ 「これ、ヒントいったらほとんど正解いってるのと変わらないから無理だな」
クウ 「むむむ」
ナツ 「それはそれで後でやるとして、お茶しに行こうよ。ジュンちゃんあんまり時間ないみたいだし」
クウ 「ああっ。そうでしたね。行きましょー!」

 クウ、ナツ、ジュンの3人は会場を出ると近くの喫茶店へ行くことにした。

ナツ 「まだ、あそこの会社にいるの?」
ジュン 「うん。まあ、いろいろあるけど、ほかに行きたい会社があるわけでもないしねぇ」
ナツ 「そういえば、あの子まだ会社にいる?」
ジュン 「ああ。えっと、ナッちゃんが辞めたあと、すぐに辞めたよ。理由はあんまり教えてもらえなかったけど」
ナツ 「ああ。そうだよね。なんか終盤ちょっとあの子、行き過ぎてたとこあったからねぇ……。あまり一緒に遊ばなくなったし」
ジュン 「そうだねぇ」
ナツ 「それはそれとして、勉強会は結構頑張ってるのね」
ジュン 「うん。まあ、いろいろ大変だけどね」
ナツ 「セッション管理の話とかは、昔よく議論したねぇ」
ジュン 「そうだねー。特にセッション変数がどうとかは、私よく分かってなかったから、理解するの時間かかった記憶があるな」
ナツ 「私もよく分かってなかったしね(笑)」
ジュン 「私は、セッション変数を使えば安全!って思い込んでたけど、よくよく考えるとそうではないよね」
クウ 「おおお!? そうなんですか? セッション変数使いまくれば安全になるっておまじないのように思ってましたけど……」
ジュン 「おお。ここに過去の私がいる(笑)」
ナツ 「久しぶりに技術的な話で盛り上がるのも悪くないね。昔話だとクウが入ってこれないから、教えるくらいのつもりでしようか」
ジュン 「そうだねー。賛成♪」

(次回に続く)

きょうの格言

セッション管理の理解なくして
Webアプリを語ることなかれ
セッション管理は最早Webアプリケーションで
欠かせない技術となっている。

どのような仕組みでセッション管理が成り立っているか
再確認しよう!

【クウたちの壁紙カレンダー、配布中!】

本連載のイラストを担当しているはるぷさんによる、毎月更新のカレンダーが配布されています。ぜひご利用ください!

特製ウォールペーパー

http://www.ubsecure.jp/wallpaper.php

3/3

 

Index
基礎のキソ、エブリバディ・セッション管理!
  Page1
勉強、勉強、また勉強!
この業界は狭いのです
  Page2
セッション管理はHTTPの基本
Page3
間違った認識は脆弱性のモト――でも何が間違いなの?


Profile
杉山 俊春(すぎやま としはる)

株式会社ユービーセキュア
技術本部 VEXグループ リーダー
兼 セキュリティオーディットコンサルタント

セキュリティコンサルタントとして、主にWebアプリケーションのセキュリティ検査やWebアプリケーション検査ツールの開発などに従事している。大手ショッピングサイトなどの検査実績を持つ。

もいちどイチから! HTTP基礎訓練中 連載インデックス

TechTargetジャパン

Security&Trust フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH