#uruu_sushi アウトラインメモ
うるう年なので#uruu_sushiを食べてきた。
脆弱性報告
- バグハンター
- HackerOne: Vulnerability Coordination and Bug Bounty Platform
- Bug Bountyのプラットフォームなども最近できてきた
- 報告者/企業のレーティングなどができる
- 特定のレーティング向けの案件なども存在する
- 脆弱性報告はやり取りのコストがある
- そのため単純にBug bounty programが増えるだけだと嬉しくない
- 報告したことに対して即時レスポンスがあると報告者として安心できる
「報告者としては新規報告先とのやりとりは結構負担になるので、報告先が増えてもそんなに嬉しくない」
— サスケ (@kyo_ago) February 29, 2016
#uruu_sushi
報奨金制度
- バグハンター同士、企業間同士の脆弱性に関する情報共有する場所がない
- 報告を受け付ける側も脆弱性報告により新しい攻撃方法を知ることがある
- 関連サービスに同様の問題があり、そちらを直すことができる
- 共通脆弱性評価システムCVSS
- ドメインに依存しないので、指標として扱いやすい
- 逆にオープンリダイレクターの扱いが高いなど、現実の扱いと異なるケースもある
Case
- 安全にファイルダウンロードを実装するのは難しい
- ServiceWorkerは本当に安全?
- HTMLをHTTPSでホスティングするサービスで何か悪さができてしまわないか
- 普通にウェブサイトで普通のXSSというような問題は少なくなってきてる
- Railsのようなフレームワークに普通に乗っていればそういう問題はおこりにくい
- ブラウザというサンドボックスはある程度安全
- そこから外れたものを作った場合に問題が起こりやすい
- Electron, Firefox OS
#uruu_sushi これの話 "Firefox OS is not helping the web — Anne’s Blog" https://t.co/XhdnAdaDTX
— azu (@azu_re) February 29, 2016
XSSとかSQLiとかはどんどん減ってきてる。今はアクセス権問題が割合として増えてきている #uruu_sushi
— azu (@azu_re) February 29, 2016
仕様とセキュリティ - azu
セキュリティな問題のある仕様の変更や、 現実の実装に合わせた仕様の定義とうような変更があったよ的な話をしました。
Object.prototype.
hijack- How should browsers mitigate Proxy-related security issues? · Issue #272 · tc39/ecma262 | ECMAScript Daily
<script>
window.__proto__ = Proxy.create({
get: function(target, name) {
console.log("data=" + name)
}
});
</script>
<script src="http://victim/test.csv"></script>
- POC on Chrome(
chrome://flags/#enable-javascript-harmony
) - Changed in ES2016 Draft 2016-02-15
Object.prototype
is an immutable prototype exotic object.
– Release ES2016 Draft 2016-02-15 · tc39/ecma262
- WHATWG HTML define Window
- Define security around Window, WindowProxy, and Location properly · whatwg/html@acae3df
Node.js と ES6 modules
- 002: ES6 module interop by bmeck · Pull Request #3 · nodejs/node-eps
- interoperabilityに関するIssue
- interoperability優先 vs 原則
- interoperabilityは大事だが、何のためにES6モジュールを使うのかを見失っている可能性
- 静的に解析出来る
- ブラウザ/Nodeどちらでも動く
- 本来はこの2つが目的だったはず。interoperabilityのためにこれが犠牲になってしまうのでは。
- npmというエコシステムの互換性
- 互換性という魔法のコトバがある限り意見の一致が難しい
- Python 3になってはいけない
- 意見が割れてる、議論になってない
Python3ifyじゃなくて、Python3ishだった https://t.co/fwE7PBbIkQ #uruu_sushi
— teppeis (@teppeis) February 29, 2016
どうやって脆弱性の探し方を学ぶのか
- 脆弱性の探し方はどうやって学ぶのか
- コード書くときにコード書くパターンがあるように、脆弱性を探す人も脆弱性を探すパターンがあるはず
- 検査的な文字列パターンを持ってる
- 特殊なツールは使ってない
- 逆に普通の開発者がどうやってセキュリティ的な問題を見つけたり、どういうツールを使ってるのかを知らない
セキュリティ診断
- バグハンターのような特殊な人達に調査を頼むのと、脆弱性診断サービスの違い
- セキュリティ業界とウェブ開発者の意識の違い
- セキュリティ業界が最新のウェブに疎く見える問題
- ウェブ側もセキュリティをよくわからない問題
- 間に繋ぐような人が重要という話
おわり
セキュリティ寿司は久々な気がする。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。