Chapter 06無料公開

あと書き

yu fujioka
yu fujioka
2020.10.18に更新

以前 React の Web アプリを診断した際に、React のエスケープ機構とインジェクションが刺さり得るケースについて調査しましたが、情報が散らばっていて自分でまとめる必要があったので、その時の経験を元に記載しました。
参考にした情報は2018年頃のものが多く、React Hook を考慮した内容ではありませんが、いずれのケースも今なお刺さるものだと思っています。

Vue についてはこの機会に改めて調べたのですが、公式ドキュメントでセキュリティについてしっかりとまとめられており、Vue を使って実装する方は是非公式ドキュメントをご一読いただけたらと思います。
また、セキュリティエンジニアの方も今回用意した Playground や dotboris/vuejs-serverside-template-xss で実際に遊んでみて、最近の Web アプリの攻め方の一環として参照していただけると嬉しいです。
※ SPA は既存の自動診断ツールが当て辛いので、どうしても手動の検証が肝になる印象です。


この本で紹介したアンチパターンは2020年9月〜10月時点で調査したものであり、フレームワーク側の進化によってこれらの脆弱性が減っていくことが期待されますが、攻撃者達のさらなる解析や攻撃によって新たに認知される脆弱性も増えていくと思います。

また、脆弱性というものは XSS だけに限った話ではありません。
この本で紹介したアンチパターンに気をつけていてもそれ以外の脆弱性によってセキュリティ・インシデントが発生する恐れは常にあるので、機微なデータを扱うアプリは常に

  • セキュア・コーディングによって認識している攻撃を未然に防ぐ
  • QA でもセキュリティを意識した入出力の検証を行う
    • その際は <script>alert(1)</script> のような単純なパターンではなく、HTML の挿入で触れたような element.innerHTML に刺さるパターンをインプットにしましょう
  • ライブラリの脆弱性を定期的に検知し、更新する
  • バックエンド側で攻撃を検知し、アラートをあげる
  • インシデントが発生した場合に素早く的確に対処できるようにワークフローを確立しておく

といった対策が求められます。