httponlyは普及するのか(追記1)

#遅ればせながら、明けましておめでとうございます。

httponlyは普及するのか

という日記を昨年末(12/26)に書きました(今更ながら、日記のタイトルが内容を現してなかったな…)。

httponlyに関して追加の情報がありましたので、本日の日記に記します。

情報の出元は、SLA.CKERSへの投稿です。

Stealing httpOnly cookies with XHR

投稿の内容は、XHRで、httponlyなSet-Cookieヘッダ(レスポンスヘッダ)が取得できてしまうというものです。この投稿には、リクエストで「GET x」など不正なメソッドを使う必要があると書かれています。

しかし、私の環境でのテストでは、「GET」メソッド+getAllResponseHeadersで、レスポンスヘッダ全体を取得することが出来ました。その中には、httponlyなSet-Cookieヘッダも含まれていました。

「GET」「GET x」のいずれにせよ、セッションIDなどのcookieをhttponlyにしても、cookieの値を付け替えるページが存在する場合、cookieを奪われることになります。

なお、昨年末の日記に書いたように、XHRではSame Origin制約が働くため、XSSが存在するページとcookie付け替えのページが、同一のドメインプロトコルにあることが、攻撃成功の条件となります。また、面白いことに、Firefoxのhttponlyアドオンでは、この攻撃は成功しません。

昨年末の日記では、httponlyが効果的な状況として、サブドメイン上の多数のサービスを、cookieでSSOさせているサイトを挙げました。先の攻撃を前提とすると、このようなサイトでhttponlyを有効に機能させるためには、SSO用cookieを発行・付け替えするサーバを少数に絞り込む必要が出てきます(当然そのサーバの守りは固めなければなりません。もしもそのサーバにXSS脆弱性があると、サイト全体がアウトです)。

ところで、この現象はブラウザ(IE6)の「バグ」なんでしょうか。それとも「仕様」と捉えるべきなんでしょうか。私の感覚では非常に微妙です。どちらにしろ、httponlyという機構自体が後付けの機能であって、ブラウザ全体の機能とうまく整合していないような印象を受けました。