A Day in the Life

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

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 の影響は受けない、と。

記事の一覧 >

関連するかもエントリー

Rails 3 アプリ + HTTPS で実現する Cookie のセキュリティ
Rails 3 アプリ + HTTPS で実現する Cookie のセキュリティRails 3 で Web+DB vol.71 特集1 第四章に載っている、"HTTPS で実現する Cookie のセキュリティ" の実現方法。HTTPS のみのアプリではやっておくべき。具体的には...
Rails 3 アプリ + HTTPS で実現する Cookie のセキュリティRails 3 で Web+DB vol.71 特集1 第四...
2011-02-01
JSDeferred の envjs + johnson 版のテスト書いた最近 capybara-envjs を使ってみたら、普通に CUI だけで Ajax のテスト書いて実行できて sugeeee って感動し JS のテストが再び熱いセコンドライフですこんばんは。というわけで...
JSDeferred の envjs + johnson 版のテスト書いた最近 capybara-envjs を使ってみたら、普通に CUI...