Hatena::Groupsubtech

#生存戦略 、それは

-> 13 { 02 / 08 }

Rack のセキュリティフィックスと Timing Attack の話し

14:17 | はてなブックマーク - Rack のセキュリティフィックスと Timing Attack の話し - #生存戦略 、それは

さきほど Rack にセキュリティフィックスバージョンが出たんだけど、セキュリティ的に何故に問題があるのかわからなった(Timing Attack をよく解ってなかった) のでメモ。

  • https://github.com/rack/rack/commit/0cd7e9aa397f8ebb3b8481d67dbac8b4863a7f07
  • このコミットで直った。HMAC で生成するハッシュ値の比較チェックを == から別のメソッドで行うようになった。
  • https://github.com/rack/rack/blob/master/lib/rack/utils.rb#L399-L408
  • え、これ戻り値の bool は Ruby の String#== と同一じゃん、なにが問題なんだろう?
  • 攻撃者が指定した digest により、== の比較速度が異なり、HMAC が推測可能になるのが問題
    • これが Timing Attack か!
    • Response Header で X-Runtime を出してると usec 単位で処理時間がばれる
  • secure_compare だとバイト列の比較で最後まで舐めるため、処理速度にばらつきが無くなる

ナルホディウスデスゾ~。mrkn / miyagawa さんに教えて貰った。

なお Rails は

use ActionDispatch::Cookies
use ActionDispatch::Session::CookieStore

な別の middleware で処理をしてるため、Rack の影響は受けない、と。

トラックバック - http://subtech.g.hatena.ne.jp/secondlife/20130208