第7回 基礎のキソ、エブリバディ・セッション管理!
杉山 俊春
株式会社ユービーセキュア
技術本部 VEXグループ リーダー
兼 セキュリティオーディットコンサルタント
2008/10/21
間違った認識は脆弱性のモト――でも何が間違いなの?
勉強会の後半は、セッション管理の具体的な方法について踏み込んだ内容となった。セッション管理ではセッションIDを利用すると前述したが、実際にその「セッションID自体の管理」はどのようになっているのかが重要な問題となることがある。
通常であれば、セッション管理用のライブラリやフレームワークなどが提供する安全な仕組みを用いてセッションIDの管理を行うことが多い。このような既存の安全な仕組み、いわゆる“枯れた技術”を利用することで、Webアプリケーションに発生しがちなセッションIDの問題を回避することが可能となる。特にセッションIDはそれだけで認証状態を管理するなどの用途にも利用されるため、容易に他人のセッションIDを推測できてしまうと、即情報漏えい事故につながってしまうため、厳しく管理する必要がある。
理想的には既存の安全な仕組みのみでセッション管理を行えればよい。しかし、どうしても機能要件を満たすために既存の仕組みを利用できない場合や、前述のクロスサイトリクエストフォージェリ対策としてのトークンを発行する必要がある場合【注】など、自分でセッションID管理の仕組みを作らなければいけないことも少なからずある。
| 【注】 既存の安全な仕組みが利用できる場合もある。また、CookieのセッションIDの仕 組みを利用し、セッションIDを一方向ハッシュ関数などで加工する方法でも対策が可能となる。 |
この場合、自分ででセッション管理の仕組みを作成することになるが、その方法が脆弱になる可能性がある。既存の仕組みでは、セッションIDの生成アルゴリズムがオープンである状態でも他人のセッションIDを推測することは困難な場合が多い。しかし、自前でコーディングしたセッション管理方法では例えば以下のような問題が存在する場合がある(生成の方法によっては下記以外にもさまざまな問題が発生する可能性がある)。
- 外部から観測しただけでも明らかに法則性がある(連番など)
- 容易に推測可能な情報のみから生成されている
- 同じセッションIDを違うユーザーで共有してしまっている(特にクロスサイトリクエストフォージェリ対策のトークンなどで見受けられる)
- セッションIDの安全性が、生成アルゴリズム自体が秘密であることに依存している
このような問題があっても、出来上がったWebアプリケーションの挙動としては、既存の安全な仕組みを利用したセッション管理と似たものとなる場合が多い。そのため、セッションIDは安全か、というような観点でのテストがない場合、危険にさらされてしまうという問題が残ったままとなる。
例えば、独自のアルゴリズムで生成された弱いセッションIDの例を以下に示す。
| 図4 弱いセッションIDの例 |
これらのセッションIDは一見ランダムに見え、ランダムな数字11けたを推測するのと同等の強度があるように見えるが、法則性に気付かれてしまうと、数回程度の試行で破られてしまう可能性がある(大規模なシステムで利用すると、すぐに顕在化する別の問題もある)。
| 講師 | 「このセッションIDは一見しただけでは危険かどうか判断しにくいかもしれません。しかし、簡単に他人のIDが推測可能です」 |
| クウ | (う〜ん。さっぱり分からないな……) |
| 講師 | 「皆さん、このセッションIDがなぜ危険なのか、独自方式の危険性を感じてもらうためにも考えてみてください。宿題みたいな感じで(笑)。続きはWebで!」 |
| クウ | (なんと!ほかにヒントはないのかな?) |
| 【筆者注】 次回、このセッションIDがなぜ弱いのかを解説します。ぜひ、皆さまもどこに問題があるか考えてみてください。 |
| 講師 | 「それでは、今回の勉強会はこれで終わりです。お疲れさまでした。懇親会に行かれる方はこの後……」 |
| クウ | 「うー……。セッションID分からないなぁ……。ナツさんは分かりました?」 |
| ナツ | 「ん? ああ、なんとなく分かったよー」 |
| クウ | 「マジすか! はやっ」 |
| ナツ | 「なんというか、過去に似たようなことやろうとしたこともあるから、って理由で分かったから微妙だけど……」 |
| クウ | 「ヒントを……」 |
| ナツ | 「これ、ヒントいったらほとんど正解いってるのと変わらないから無理だな」 |
| クウ | 「むむむ」 |
| ナツ | 「それはそれで後でやるとして、お茶しに行こうよ。ジュンちゃんあんまり時間ないみたいだし」 |
| クウ | 「ああっ。そうでしたね。行きましょー!」 |

クウ、ナツ、ジュンの3人は会場を出ると近くの喫茶店へ行くことにした。
| ナツ | 「まだ、あそこの会社にいるの?」 |
| ジュン | 「うん。まあ、いろいろあるけど、ほかに行きたい会社があるわけでもないしねぇ」 |
| ナツ | 「そういえば、あの子まだ会社にいる?」 |
| ジュン | 「ああ。えっと、ナッちゃんが辞めたあと、すぐに辞めたよ。理由はあんまり教えてもらえなかったけど」 |
| ナツ | 「ああ。そうだよね。なんか終盤ちょっとあの子、行き過ぎてたとこあったからねぇ……。あまり一緒に遊ばなくなったし」 |
| ジュン | 「そうだねぇ」 |
| ナツ | 「それはそれとして、勉強会は結構頑張ってるのね」 |
| ジュン | 「うん。まあ、いろいろ大変だけどね」 |
| ナツ | 「セッション管理の話とかは、昔よく議論したねぇ」 |
| ジュン | 「そうだねー。特にセッション変数がどうとかは、私よく分かってなかったから、理解するの時間かかった記憶があるな」 |
| ナツ | 「私もよく分かってなかったしね(笑)」 |
| ジュン | 「私は、セッション変数を使えば安全!って思い込んでたけど、よくよく考えるとそうではないよね」 |
| クウ | 「おおお!? そうなんですか? セッション変数使いまくれば安全になるっておまじないのように思ってましたけど……」 |
| ジュン | 「おお。ここに過去の私がいる(笑)」 |
| ナツ | 「久しぶりに技術的な話で盛り上がるのも悪くないね。昔話だとクウが入ってこれないから、教えるくらいのつもりでしようか」 |
| ジュン | 「そうだねー。賛成♪」 |
きょうの格言
![]() セッション管理の理解なくして Webアプリを語ることなかれ
|
【クウたちの壁紙カレンダー、配布中!】 本連載のイラストを担当しているはるぷさんによる、毎月更新のカレンダーが配布されています。ぜひご利用ください!特製ウォールペーパー http://www.ubsecure.jp/wallpaper.php |
3/3 |
| Index | |
| 基礎のキソ、エブリバディ・セッション管理! | |
| Page1 勉強、勉強、また勉強! この業界は狭いのです |
|
| Page2 セッション管理はHTTPの基本 |
|
| Page3 間違った認識は脆弱性のモト――でも何が間違いなの? |
|
もいちどイチから! HTTP基礎訓練中 バックナンバー
| Profile |
| 杉山 俊春(すぎやま としはる) 株式会社ユービーセキュア 技術本部 VEXグループ リーダー 兼 セキュリティオーディットコンサルタント セキュリティコンサルタントとして、主にWebアプリケーションのセキュリティ検査やWebアプリケーション検査ツールの開発などに従事している。大手ショッピングサイトなどの検査実績を持つ。 |
| もいちどイチから! HTTP基礎訓練中 連載インデックス |
TechTargetジャパン
- 実録、「Hardening Zero」の舞台裏 (2012/5/25)
コラムの更新頻度を落として何をやっていたかって? 「守る技術」に焦点を当てたこんなイベントを開催しました - 複雑化、巧妙化する脅威への対策は? (2012/5/23)
データ保護や標的型攻撃対策、クラウドセキュリティ……「第9回 情報セキュリティEXPO」の会場で見つけた製品を一挙に紹介 - 仮想化がはらむ新たなリスク (2012/5/17)
仮想化に伴って生じるセキュリティやパフォーマンスへの影響を慎重に考慮し、うまく制御していく方法を紹介します - 新入生も新入社員も勉強会に寄っといで! (2012/5/14)
週末ともなれば至るところでセキュリティ系勉強会やCTFなどのイベントがあり、ツイートも盛り上がりました
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -



