SSTによる安全なWebサイト運営のためのセキュリティ情報

エンジニアブログ
  • shareSNSでシェア
  • Facebookでシェアする
  • Xでシェアする
  • Pocketに投稿する
  • はてなブックマークに投稿する

書籍「Webブラウザセキュリティ」発刊記念 著者&レビュアー対談(後編)

こんにちは!CTOのはせがわです。

今年1月に発売された書籍「Webブラウザセキュリティ」の著者の米内貴志(つばめ)さん、レビュアーにしむねあさん、キヌガワマサトさん、私の4名でわいわいと本を振り返る対談記事、後編です(前編はこちらからどうぞ)。

セキュリティのためのベストプラクティス

 

はせがわようすけ
はせがわようすけ

でも、Webセキュリティのベストプラクティスは相変わらずわからないままですよね。これがお勧め、これをやりましょうみたいなの。

にしむねあ
にしむねあ

セキュリティを高めるためのヘッダーはブラウザにたくさん実装されていますけど、それらが本当に使われているかというと疑問が残ります。
Chromeを開発したGoogleのサーバーがどのようなセキュリティヘッダーを飛ばしているかっていうと、実はほとんど使っていない。

つばめ
つばめ

Googleの人たちが新しいヘッダーを入れましたと言うときでも、Googleのプロダクト全体に入れましたみたいなのほぼ見ないような気がして、逆に言うと、Googleでも小さい単位でしか入れられないって感じなんだなと思いますね。
だから、これを入れておけば完璧です、間違いありません、みたいなの言えないですよね。

にしむねあ
にしむねあ

一方で、Webの脆弱性検査ツールの中には、特定のセキュリティヘッダーがついていないだけで脆弱性だって指摘するものもあるじゃないですか。
ツールに踊らされて、Googleでさえつけていないヘッダーつけないといけないみたいになってしまうのは、確かに安全になるのでそれはそれでいいっていう考え方はある一方で、あんまりバランスよくないなって思ったりはしますね。

つばめ
つばめ

本の中の記述で、きちんと文脈を作りながら「こういう理由でこの機能は出てきました」って書きたかったのは、新しく出てきた機能だから採り入れるとか、言われたから使うではなくて、なんでこの機能が必要なんだっけっていうのを考えながら使って欲しいなというのがあって。周りの情報に躍らせれて焦りはあるけど実はよくわかってない、みたいな人に本が届いたらいいなと思ってますね。

にしむねあ
にしむねあ

たしかにそうですね。
それと、実装も難しくなってきていますよね。たとえば、Sec-Fetchヘッダーとかって、それを受け取ったサーバー側で結局どうすればいいんですか?みたいな。
新しいセキュリティヘッダーを受け取ったサーバー側のプラクティスが整っていなくて、個々のWebアプリが自分で処理するのか、前段のリバプロなどで処理すべきものなのか。脅威を防ぐっていうのが本来の目的だと思うんで、その目的に対して「こう活用します」みたいなイメージや例が広まって欲しいという思いはありますね。

はせがわようすけ
はせがわようすけ

Sec-Fetchヘッダー難しいですよね。本来のセキュリティの目的で、そういうヘッダーがあることで防げるコンテキストみたいなのがある一方で、かつてのリファラーのように闇雲に使われてヘッダー本来の目的ではない使い方が広まって定着してしまうと、Webに余計な制約がかかってしまうのかなとか。

つばめ
つばめ

今のそういった新しい機能って、出てきた文脈が伝わらずに「こういう機能が増えました」「こういうヘッダーが追加されました」みたいな情報だけが広まってしまうので、コンテキストが見えなくて使いどころがイメージしにくく、開発者としても大変だなと思いますね

にしむねあ
にしむねあ

だからこそっていうのもあると思うけど、議論をちゃんと追えるようにしておくっていうのが重要なのかも知れないですね。どういう経緯で、どういう議論を経て仕様が定まり実装されたのかを押さえておかないと、使い方を間違っちゃうなってのはあるのかもしれませんね。

ブラウザーとアプリケーション開発者の責任分界点

 

はせがわようすけ
はせがわようすけ

Spectreのようなサイドチャンネル攻撃を防ぐための機構って、ぶっちゃけWebアプリを作ってる人間からすると本来は関係ないじゃないですか。

つばめ
つばめ

あんまりWebアプリ開発者の範疇って感じはしないですよね

はせがわようすけ
はせがわようすけ

そうそう、そういう攻撃を防ぐのはOSなりブラウザーなりが頑張ってくれよ、みたいな。
自分は過去からの経緯も見てるから仕方ないなと思うところもあるけど、普通にWebアプリを作ってる人ってどういうふうに捉えてるんだろうね。

つばめ
つばめ

はせがわさんが本のレビューコメントで「この部分はアプリケーション開発者からすると重要性がわからないのではないか」みたいなコメントけっこうつけてくれたじゃないですか。そういう視点の違いみたいなのは執筆中もけっこう悩んで、セキュリティ屋からすればこのあたりは大事だ、責務だ、みたいに思う部分もあったり。
どうすればいいのかなって、まだ答えがないです。

にしむねあ
にしむねあ

サイドチャンネル攻撃を防ぐためのセキュリティヘッダーって、 開発者に付ける付けないを選ばせる基準が分かりにくいっていうか、もちろん付けることによって特定の攻撃を防げるってのはあるかもしれないけど、ブラウザーのサンドボックスがもっと強固に作られていればWebアプリ開発者がヘッダーの有無なんて気にしなくて済んだんじゃないのか?これは本来であればWebブラウザー側の責務じゃないの?みたいなことは正直思いますね。

つばめ
つばめ

採用するかどうかの判断コストが高いわりに得られるものが少ない、みたいな感覚はありそうですね。
そういう機能って、想定されている脅威が限定的じゃないですか。限定的っていうのもちょっと言い方が違うかもですけど。
そんな攻撃者を想定して作らないと駄目?みたいな気持ちになっちゃうような気はするんですよね。

にしむねあ
にしむねあ

そう、正直そう思っちゃいますよね。さっきのはせがわさんの話にもありましたけど、ブラウザーのなかのサンドボックスをもっとリッチに作っていればWebアプリ開発者は気にしなくて済んだんじゃないの?とか。ブラウザー側の責務じゃないの?みたいには感じちゃうっていうか。

はせがわようすけ
はせがわようすけ

要するに、小勝くんがんばれっていう話!?

にしむねあ
にしむねあ

そう、小勝くんがんばれって話。ここはちゃんとTwitterのリンクとかも張っておきましょう。

つばめ
つばめ

実際あれですよね。今、ブラウザーやWebの仕組みすべて作り替えていいっていうんだったらそのあたり考えなくてよくなるようにブラウザーも設計できると思うんですけど、今までのアプリケーションも生き残しつつ、かつセキュリティ機能も提供していくってなると、ああなっていくのも仕方ないんだろうなって思ってしまいますね。
過渡期なんだなってのは僕もまさに感じるところですね。

はせがわようすけ
はせがわようすけ

つばめ、20代らしからぬ発言だ。
Webには過去のしがらみがあるから仕方ないとか。

つばめ
つばめ

あ、いまのはぜんぶキヌガワさんがおっしゃってたことにしてください。

キヌガワマサト
キヌガワマサト

…。

Webは常に過渡期

 

キヌガワマサト
キヌガワマサト

脅威やその対策方法を整理して安全な状態をデフォルトにできるならしたいけど、そういう過去からのしがらみがあるからまずはヘッダーで緩和しましょうね、みたいに増えた感じですよね

つばめ
つばめ

そうですね、仕方ないんだろうなとは思います。

キヌガワマサト
キヌガワマサト

そう、だから最終的にはそれをデフォルトにするっていう流れになっていくんですかね

つばめ
つばめ

まさに、そういう意味でも過渡期なんだろうなって思います。

はせがわようすけ
はせがわようすけ

でもWebって過渡期が定常状態な気はしますよね。

つばめ
つばめ

ふふ、まさにWebですよね。Living Standardそのものですよね。ずっと過渡期。

にしむねあ
にしむねあ

ここ数年、後方互換性を削ぐような変更でもドラスティックに入れるようになってきたなっていうのを感じてて。
例えば、セキュアにするためにTLS1.1をブラウザーからは削除しようみたいな変更がありましたけど、実際にそれによって重要なサイトなのにアクセスできなくなるっていうのもあって。そういう仕様変更もポンポンと入れてくるなって。

つばめ
つばめ

ブラウザーベンダー、ブラウザーのセキュリティを考えてる人たちが持ってる脅威モデルみたいなのって気になりますよね。どういうモデルを置いてどういうアプローチしてるのか、どういう判断軸を持って機能を追加したり互換性とセキュリティのバランスをとっているのかって、具体的なところはあまり外に出てない気がして。

キヌガワマサト
キヌガワマサト

めんどうくさいWebセキュリティ」っていう本があったんですけど、あの本を読んでいた時の感覚としてはWebって解決されていない問題がすごくいっぱいあって、解決策も提案されてない状態みたいなイメージだったんですよ。けど今って、かなり色んなものが解決されてきて、実際に実装も進んできてって、そういう段階に来てるっていうのが「めんどくさいWebセキュリティ」からの10年間の間に変化があったんだなっていうのは思いますね。
新しすぎるっていうか、やっと、これまで解決されなかった問題がようやく解決できるようになってきたっていう感覚が僕の中にある。

つばめ
つばめ

ここからは、大きな丸を埋めたあとの、その周辺の隙間を小さい丸で埋めていくみたいなことがやられていくといいのかなと思いますね。マストで解くべき課題はキヌガワさんも言う通りかなり解かれてきたように思いますので。大きな穴を埋めるのは優先順位付けで違和感あるように見えたりもするけど、少しずつ根絶の方向に向かっていくのかなと。

さいごに、著者として一番伝えたいことは?

 

はせがわようすけ
はせがわようすけ

この手の話題、いくらでも話せそうだけどそろそろ1時間経つし文字起こしきつそうだな。
つばめはこの本に関して絶対つたえておきたいことあればそろそろ言っておいて。

つばめ
つばめ

なんだろ。すげー愚直なことを言うと「買ってください」なんですけど。ストレートすぎるかな。
今回レビューをお願いした方って、7名なんですけど、
レビューをお願いした方って、自分はぜんぜんレビュアーを選べる立場ではないんですけど、この人ってこういう憧れるポイントがあるからそのポイントを僕が見て盗みたいって気持ちでレビューをお願いしているところがあって、それこそ、この場にいる御三方ってブラウザーのセキュリティっていう領域では神みたいだと思っていて。
昔からいろいろ発表とか拝見してて憧れでもあった方、あ、「あった方」って過去形でもない(笑) 今も憧れの方(笑) だったので、そういう方たちの動いているところを見たい、知識をお借りしたいってことでお願いした流れで。それ以外のレビュアーの方々も、標準化に取り組んでいるのでそういう視点があったり、CTFでの攻撃技術に関してリサーチレベルの知識を持っているだとか、それぞれのレビュアーが色んな視点でそれぞれのスペシャリティを持っていて。そういう意識で、この方だったら違う視点のコメントをしてくれそうっていうことでお願いしたっていう経緯があって。
なので、いろんな角度からの話を伺えたのは、本当に本の執筆の過程で嬉しかったところでもありますね。
なんていうか、至れり尽くせりって感じでした。レビュアーさんに関しては。めちゃくちゃありがたかったです。
執筆の過程よりも最後のレビュー受けてる過程がいちばん楽しかった。

はせがわようすけ
はせがわようすけ

レビューおもしろかったですよね。
トータルで何件コメントついたのかわからないくらいたくさんついてた。たぶん平均すると1ページ2,3件は超えてそう。

つばめ
つばめ

そういう意味でも、今回短い期間でお願いしたのにみなさん受けてくださって感謝しかないですね。
今回お願い、お話できなかった方とも別の機会で話せたらいいなと思ってるんですよね。
こんど、僕の会社でブログネタがなくなったらそうしようかな。
「続編やりたいんですけど」って確認しますね。

というわけで、書籍「Webブラウザセキュリティ」のレビューを4人で振り返りながら今のWebのあり方などをワイワイと話してみました。書籍「Webブラウザセキュリティ」は、まさにタイトル通りブラウザーのセキュリティ機能に特化して解説された本で、「XSSは理解しているけどCORSやCSP、それ以降についてはあんまり詳しくない」といった方にお勧めの一冊です。

この本によって、少しでも世の中のWebサイトがセキュアになれば、著者・レビュアーともども幸いです。

  • shareSNSでシェア
  • Facebookでシェアする
  • Xでシェアする
  • Pocketに投稿する
  • はてなブックマークに投稿する

この記事の筆者

筆者

はせがわようすけ

(株)セキュアスカイ・テクノロジー 取締役CTO