水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > 2008年のえび日記 > 2008年12月 > 2008年12月18日(木曜日)

2008年12月18日(木曜日)

魔王

公開: 2008年12月20日20時15分頃

読み終わったのでメモ。

佐藤 智仁 【私のターニングポイント】 (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回通しているのが何のためなのかよく分からないですね。

関連する話題: セキュリティ

最近の日記

関わった本など