CookieのSameSite属性は新人さん⁉

今回は脆弱性診断の文脈で語られるCookieの属性について少しお話したいと思います。

 Cookieには様々な属性を設定できますが、今回はその中でもSameSite属性に焦点を当ててお話ししたいと思います。というのも、先日とあるベテラン開発エンジニアの方とお話しする機会がありました。ある脆弱性診断の結果として「CookieのSameSite属性が設定されていないので、明示的に設定することをお勧めします」とお伝えしたところ、そのエンジニアの方から「今ってSameSite属性の設定有無も報告されるんですね。私が現役で開発していた頃は、Secure属性とHttpOnly属性だけが一般的だった記憶です」と教えていただきました。

 その話を聞き、「確かに脆弱性診断の報告会でCookie属性について説明する際、Secure属性やHttpOnly属性についてはあまり質問が出ないが、SameSite属性については時折、詳細を尋ねられるな」と気づきました。そこで、その理由が個人的に気になり、調べてみることにしました。 

脆弱性診断とCookieの属性

 Webアプリケーションの脆弱性診断では、セッション管理や認証関連の項目でCookieが登場します(サービス提供会社によって項目名などは異なります)。例えば、セッション管理にCookieを利用する場合、Cookieの値が容易に予測できるものは使用を避けるべきであるとか、Cookieの有効期限は短めに設定すべきである、といった点が挙げられます。

 その中で、Cookieの取り扱いをより安全にするための設定、すなわちCookieの属性設定に関する検証も行われます。特に、以下の属性の設定有無がよく挙げられる検証項目です。

  • Secure属性
  • HttpOnly属性
  • SameSite属性

 今回は各属性の詳細を掘り下げることがテーマではないため、より詳しい情報はMDN Web Docsなどの関連ページでご確認ください。  

各属性の登場した時期

 今回のテーマである『他の属性と比べて、なぜSameSite属性の知名度は少し低いのか』という問いに対し、私は『SameSite属性は比較的新しい仕様のはず』という仮説を立てました。そこで、各属性がいつ頃から使われているのかを調査しました。

Secure属性 

 Secure属性は、1997年に公開されたRFC 2109で登場します。このRFC 2109は、簡潔に言えばWebにおけるCookieの基本的な仕様を定義したものです。つまり、Secure属性はCookieの登場とほぼ同時に使われていると考えられます。 

HttpOnly属性

 HttpOnly属性は、Internet Explorer 6 SP1の機能として2002年に登場したと言われています。残念ながらInternet Explorerに関する公式ドキュメントは見つけられませんでしたが、インターネット上の多くの情報源でそのように言及されています。

以下はOWASPのHttpOnlyに関する記載の一部です。

Who developed HttpOnly? When?
According to a daily blog article by Jordan Wiens, “No cookie for you!”, HttpOnly cookies were first implemented in 2002 by Microsoft Internet Explorer developers for Internet Explorer 6 SP1.

OWASP

SameSite属性

 さて、本題のSameSite属性が登場したのは、2016年です。そう、執筆時点(2025年7月)からわずか9年前なのです!

 SameSite属性は、『draft-west-first-party-cookies-07』という、将来的にRFCとして標準化されることを目指すインターネットドラフトとして、2016年に提案・公開されました。

まとめ  SameSite属性まだ新人⁉

 実際のところ、これだけのデータで『他の属性と比べて、なぜSameSite属性の知名度が少し低いのか』という問いの本当の理由を断定することはできません。しかし、非常に分かりやすい理由の一つとして『SameSite属性が登場してからまだ10年も経っていないから』と言えるでしょう。

おまけ

 定かではありませんが、実際に脆弱性診断においてSameSite属性の設定について報告するようになったのも、おそらく2020年前後の時期からだったように記憶しています。

 また、CSRF(クロスサイトリクエストフォージェリ)の検証を行う際、認証用CookieにSameSite属性が設定されているかどうかが、その検証結果を大きく左右するケースも見られるようになりました。脆弱性診断でCSRFを報告する際、実際に検証を行わず(CSRFトークンの有無だけで判断するなど)報告すると、誤検知につながる可能性がありますのでご注意ください。