読書記録:『Webブラウザセキュリティ』
紹介とか
ラムダノートの『Webブラウザセキュリティ』を読んだ。ラムダノートの本はPDF形式でも買える。PCで色々調べながら読むときに気軽にコピペできるので特に最近は重宝しているのだが、この本は過去の自分が物理本のみで買っていた。
フロントエンドはあまり詳しくないけど興味はあるという状態だったので、その中でセキュリティという側面から体系的に説明がされていそう(実際されていた)だったので食指が動いた。
良い本だったのでお勧めです。
ブラウザに対して持っておくといいメンタルモデル
内容を理解するうえで、まずブラウザというのは素朴に作ると非常に危険なものであるというメンタルモデルが大事だと思う。自分はここらへんが不足していたので最初はあまり理解が進まなかった。
Webブラウザは、世界中のあらゆるページのjavascriptを同じプロセス(諸説あり)やアプリ内で実行できるので、取得するリソース間の物理的あるいは論理的な隔離が必要になる。
例えば本書でセキュリティ機構であるSOPが登場するが、これはWebサーバーのAPIなどに勝手に備わっていたり、サーバー側で用意すれば自動で達成されるものではなくて、ブラウザが自主的に行っているものである。ブラウザを安全に使うためには、ブラウザ自身がセキュリティ対策を十分に進める必要がある。ということは、我々がブラウザを使うとき、それは十分にセキュリティに配慮されたものを選ばなければいけないということになる。こうした点はあらためて言語化するとはっきりと理解できていなかったので学びが大きかった。
体形的にまとめられていて理解がしやすい
個人的には以下の3つ章がそれぞれWebブラウザセキュリティを理解するうえでの大きな柱として理解できた。
- 2章: Originを境界としたセキュリティのモチベーション
- 3章: プロセス分離によるリソース保護の観点
- 4章: Cookieをセキュアに扱う方法
これらは雑に言うと公理みたいなイメージで、これらの基本さえ押さえておけば、他の多くの説明をこれらの演繹として理解できるので認知負荷を押さえながら本を読めていい構成だった。
個人的にもフロントエンドはカオスに満ちている世界だったので、その中に一定の秩序を入れられたような感覚になった。卑近な例でいうと個人開発の時に設定するCORSの諸々からおまじない的な印象が消えた。他にはアプリへの有名な攻撃手法とその対策が、本書で導入された体系をもとに導出できるようになったので、アドホックな知識ではなくなった。
それでもセキュリティはいたちごっこで資産はパッチワーク的、全然枯れない
本書でも述べられているが、とはいえWebブラウザ関連のセキュリティは攻撃者とのいたちごっこで、仕様がパッチワーク的になっているものも多い。絶えず新たな攻撃手法や脆弱性が発見されるので、それに対して各々のレイヤーで対処していかないといけないというモチベーションが理解できた。こちらも卑近な例でいうと、めんどうな日々の脆弱性対応業務も(基本的には)ちゃんと必要である。