2007年11月30日(金曜日)
CSRF と Cookie 漏洩は関係ない
「404 Blog Not Found : Immortal Session の恐怖 (blog.livedoor.jp)」という話。
そしてcookieを奪うのがどれほど簡単かというのは、CSRFの事例が後をたたないことからも伺い知ることができる。
うーむ、CSRFの理解って結構浸透してきたと思っていたのですが、そうでもないようで……。
CSRF は Cookie を奪取してセッションハイジャックするような攻撃ではなく、攻撃者は Cookie の値を知る必要がありません。また、CSRF 攻撃によって攻撃者が Cookie を奪取することもできません。もちろん、別途 XSS があったりすれば Cookie を奪取できる余地がありますが、それは XSS による漏洩ということになるでしょう。
それから、User-Agent の一致チェックは対策としては不十分です。というのも、CSRF では原理上 User-Agent が一致するに決まっていますし、Cookie 奪取を想定するなら、攻撃者が User-Agent を一致させることは容易なはずです (攻撃者が Cookie を奪取できるが User-Agent の値は取れない、という状況は考えにくいので)。まあ、チェックしても害はないので、「念のため」としてチェックを導入しても良いと思いますが……。
また、IP アドレスの一致チェックについても、NAT やらなにやらで複数端末が同一 IP アドレスになるとか、逆にゲートウェイが複数 IP アドレスを持つために同一端末でもアクセスごとに IP アドレスが異なる、という事が起こり得ます。特に後者の場合は正規の利用者がアクセス不能になってしまう場合がありますので、こちらは「念のため」として導入するのにも注意が必要でしょう。
ちなみに秋のDK収穫祭 (side2.net)によると、
そんなこと言われたって、その抜かれてしまったパスワードはkogaidanだったわけですよ。
……だそうで、そもそも Cookie とか CSRF とかあんまり関係ない話だったようです。
- 「CSRF と Cookie 漏洩は関係ない」にコメントを書く
ASP.NET で Path.GetTempFileName() が例外
ASP.NET でテンポラリファイルを使いたくなって、System.IO.Path.GetTempFileName() を使ってみたら
System.IO.IOException: ディレクトリ名が無効です。
という例外が出て死亡し、残念な思いをいたしました。普通に使うと普通に動くのですが、ASP.NET から使うと駄目な模様。
ASP.NET から環境変数 Temp にアクセスした時の値が変なのかと思いきや、Environment.GetEnvironmentVariable("Temp"); の結果には普通に有効なディレクトリ名が入っているし……。原因が今一つ分かりません。
- 前(古い): 2007年11月25日(Sunday)のえび日記
- 次(新しい): 2007年12月1日(Saturday)のえび日記