第8回 これだけは知っておきたいセッション変数の基礎


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

(Illustrated by はるぷ)

 並べて足して入れ替えて……




そして週明け……


クウ 「おはよー」
ユウヤ 「おはよ。勉強会はどうだった?」
クウ 「なんか宿題が出たよー!」
ユウヤ 「ああ、なんかWebにも上がってたね」
クウ 「おおっ? そんなところチェックしてるんだ」
ユウヤ 「まあね。いろいろ知っておかないといけないし。それより、宿題解けたんか?」
クウ 「いや……。さっぱり……。難しいよね、あれ」
ユウヤ 「いや、簡単だったぞ?」
クウ 「ええっ! もう解けたの??」
ユウヤ 「……まあ、頑張って解いてくれ」
クウ 「むむむ……」

【関連記事】
基礎のキソ、エブリバディ・セッション管理!
http://www.atmarkit.co.jp/fsecurity/rensai/httpbasic07/httpbasic01.html




クウ 「やっぱり分からないー。答え教えてー」
ユウヤ 「しょうがないなぁ」
クウ 「教えてください><」
ユウヤ

「これは、典型的な脆弱なセッションIDだね。まず並べ替えてみるとよく分かる。まず、先頭の文字で並べ替えてみる」

クウ 「並べ替えて意味あるの?」

c.
g.
b.
j.
d.
i.
e.
h.
f.
a.
23317998991
23317998031
34428009092
34428009172
45539110123
45539110273
56640221344
78862443596
89973554687
90084665648

ユウヤ 「もう、これだけで攻略された、っていっていいくらいなレベルだが、例えば、『c』と『g』を比べてみよう。9、10文字目以外全部同じだ」
クウ 「ホントだ……。『b』と『j』とかもほとんど同じ……」
ユウヤ 「次に、先頭の数字が近い『b』と『c』について比べると、これまたとても似ている」
クウ 「どこが……?」
ユウヤ 「鈍いな……。『c』の各けたに1足したらほとんど同じだ」

c'.
b.
34428009002
34428009092

クウ 「ホントだ……」
ユウヤ 「さらに、同じようにして、全部、先頭が『1』になる値を各けたに足す」
クウ 「ふむ……」

a.
b.
c.
d.
e.
f.
g.
h.
i.
j.
12206887860
12206887870
12206887880
12206887890
12206887900
12206887910
12206887920
12206887940
12206887940
12206887950

ユウヤ 「さすがにこれで、ほぼ連番っぽくなっているのは分かるよな?」
クウ 「おおっ! ホントだ! すごーい!」
ユウヤ 「さらに、これが、最後のけたを除いたら時間、つまり1970年1月1日00:00:00 UTCからの経過秒数だって分かれば完ぺきだな」
クウ 「ふむふむ」
ユウヤ 「脆弱なセッションIDで、『時間』をキーにして単純な変換をするだけというのは簡単に思いつくから結構やってしまいがちだな。だから、見る人が見れば、時間さえ分かればセッションIDが作れてしまうってのは簡単に分かるよ。逆に、この問題がいつ作られたかも丸分かりだね」
クウ 「なるほど……」
ユウヤ 「むしろ、普通は、時間をキーにして作られていないか? から疑ってかかるくらいだけどね」
クウ 「ユウちゃん、よく知ってるね。そんなのどこで習ってくるの?」
ユウヤ 「まあ、常識だな」
クウ 「くぅ……」

 セッションIDのようにランダム性が必要となる値を生成する際には、時刻のように簡単に分かってしまう値をキーにしたり、簡単な変換ルールに頼ってしまったりしないようにする必要がある。また、時刻のように一意にならない可能性のあるものをキーにした場合、異なるユーザーで同じセッションIDを利用してしまう可能性があるため、注意が必要である。

きょうの格言

セッション管理は
セッション変数を理解することから
セッション変数は非常に便利だが、使い方によっては
考えなければいけない点が多くなる場合がある。

セッション変数の仕組みについて正しく理解し、
安全に利用しよう!

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

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

特製ウォールペーパー

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

4/4

 

Index
これだけは知っておきたいセッション変数の基礎
  Page1
誰もが最初は初心者でした
  Page2
セッション変数、利用方法をお間違えなく
  Page3
セッション変数で気を付けるべき“セッションフィクセーション”
セッション変数、どこに格納する?
Page4
並べて足して入れ替えて……


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

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

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

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

TechTargetジャパン

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

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

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

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

@IT Sepcial
ソリューションFLASH