2008年12月18日(木曜日)
魔王
公開: 2008年12月20日20時15分頃
読み終わったのでメモ。
- 魔王 (www.amazon.co.jp)
佐藤 智仁 【私のターニングポイント】 (engekilife.com)でオススメされていたので買ってみました。
なかなか味のある小説。「魔王」と「呼吸」の2本立てなのですが、これは……ある意味、超能力バトル小説?
「呼吸」の最後の方の犬飼の台詞は何を表しているのか……。
- 「魔王」にコメントを書く
森の生活 29日目: クローバーファームとぎんのジョウロと
公開: 2008年12月20日18時45分頃
街へいこうよ どうぶつの森 (www.amazon.co.jp)、29日目。
知らない人から手紙が来ました。
いつも買っている花のタネは「クローバーファーム」の製品だったようで。添付されていたのは「ぎんのジョウロ」。どういう効果があるのだろう……。
※しかしこれ、タヌキ商店が勝手にメーカーに個人情報を流しているということ?
関連する話題: ゲーム / Wii / 任天堂 / どうぶつの森 / 街へいこうよ どうぶつの森
セッションIDが推測可能な脆弱性
公開: 2024年12月21日22時20分頃
興味深いのでメモ: 「セッション ID が推測可能な脆弱性の件 (d.hatena.ne.jp)」。「JVN#07468800 futomi's CGI Cafe 製高機能アクセス解析CGI におけるセッション ID が推測可能な脆弱性 (jvn.jp)」の内容についての考察ですね。
元々はこんな生成の仕方だったようで。
my $seed = $ipaddress.$remote_port.time.$ENV{'HTTP_USER_AGENT'};
my $sid = Digest::Perl::MD5::md5_hex(Digest::Perl::MD5::md5_hex($seed));
seedのMD5ハッシュ値のMD5ハッシュ値を採用していますが、seedに乱数も何も入っていないので、生成のアルゴリズムが分かれば推測できるというお話ですね。いちおうtimeが入っていますが、状況によってはかなり候補を絞り込めるでしょう。一回で成功しなくても、何度もトライすれば良いわけですし。
※ちなみに Perl の time は1970年1月1日0時0分0秒からの経過秒数です。
で、これが修正後だそうで。
my $seed = $ipaddress.$remote_port.time.$ENV{'HTTP_USER_AGENT'}.Data::Random::String->create_random_string(length=>'32', contains=>'alphanumeric');
my $sid = Digest::Perl::MD5::md5_hex(Digest::Perl::MD5::md5_hex($seed));
seedにData::Random::String->create_random_string() の結果が付け加えられました。Data::Random::Stringのソース (search.cpan.org)を見ると、単なる rand() ですね。Perl の rand() って最初に呼ぶときに srand(time) されるのではありませんでしたっけ、と一瞬思ったわけですが……
In versions of Perl prior to 5.004 the default seed was just the current time.
以上、srand - perldoc.perl.org より
それは昔の話でした。実際に手元の ActivePerl5.10 で試した範囲でも、srandを呼ばない場合と srand(time) と srand() とは、全て異なる結果になりました。
逆に言うと、5.004より古いPerlで実行する場合は srand(time) されている可能性があるので、timeの値が推測できるとセッションIDが推測されるおそれがあるのかも。まあ、今どきそんな古いPerlは動いていないだろうと思いますが。
※しかし、Digest::Perl::MD5::md5_hex を2回通しているのが何のためなのかよく分からないですね。
関連する話題: セキュリティ
- 前(古い): 2008年12月15日(Monday)のえび日記
- 次(新しい): 2008年12月19日(Friday)のえび日記