第 35 回山陰 ITPro 勉強会に参加してきました。

今回は Web アプリケーションセキュリティの第一人者 徳丸浩 さんの 6/21 に発売された、体系的に学ぶ 安全な Web アプリケーションの作り方 第 2 版 脆弱性が生まれる原理と対策の実践についての講演でした。

普段 Web アプリケーションを作る身として、せっかく作ったサービスが脆弱性でハッキングされたり、情報が漏洩してしまったら元も子もないので、セキュリティに関する知識も勉強したいと思いエントリを決意。

最初に参加者全員で自己紹介を行い、そこからメイン講演へ。

メイン講演前半

講演前半では第 1 版と第 2 版の差分についての話がありました。 第 1 版が出版された時(2011 年)とは、普及している技術や環境が違うので例えばガラケーの項目やレガシー IE の項目について削除されているようです。 また増えた項目としては、OWASP Top 10に出てくるような最近流行っている脆弱性の項目(クリックジャッキングや Web API 等)が追加されています。

おすすめの読み方

また、この本を実物で見てもらうと分かりますが相当分厚いです。 そのため、徳丸さんは章ごとに次のような読み方を推奨していました。

  • 1 章 ざっと読んでみる
  • 2 章 実習環境のセットアップなので、普段ここらへんの技術を触ってる人はそこまで必要ない
  • 3 章 できればちゃんと手を動かして進める
  • 4 章 4.1 と 4.2 節 を読んだ後、4.3 節からは最初の 1 ページぐらいをざっと読む
    • その後、必要な節を手を動かしながら読む
    • 逆引き的な使い方を想定
  • 5 章 読み物的にざっと読んで、後で該当機能を実装する際に詳しく読むとよい
  • 6 章 読み物のとして読む
  • 7 章 診断体験ができるのでやるのをおすすめ
  • 8 章 読み物的に
  • 9 章 読み物的に

メイン講演後半

講演の後半は実際に付属してくるサンプルアプリケーションのデモでした。 7 章で使う脆弱性たっぷりの Bad Todo List というアプリがあり、そこからいくつかの脆弱性を解説してもらったり、4 章にある新しい脆弱性の解説がありました。特に 4 章では一つの脆弱性ごとに一つのサンプルアプリケーションがあるので、かなり充実していました。

質問含め興味深かった内容

講演も終わり質問もいくつかあって、その中で興味深かったトピックを書いておきます。

脆弱性診断のための対策

本来は脆弱性を見つけるために脆弱性診断サービスを利用するが、最近は脆弱性診断で指摘されないように脆弱性診断対策をしてしまっている状態になっていることも多いらしい。しっかりと必要な脆弱性対策を見極めて脆弱性診断のためのコードを減らしていけるようにするのが理想とのことでした。

受発注の発注側にもセキュリティのリテラシーは必要になってくる

例として建築物が取り上げられて、建物の場合に耐震偽装などが発覚した際、もちろん一番悪いのは偽装をした建築者だが、確認を怠ってしまっていたマンションデベロッパー等の発注者側も責任が問われてくる。プログラムでも同じように、受注者がセキュリティに注意するのは前提だが、発注側も最低限のセキュリティに関する知識と確認が今後も必要になってくるだろうとありました。将来的にはソフトウェア開発にも建築物でいう建築基準法のように法律が適用されるような未来もありえるかもしれないらしいです。

グループ・ディスカッション

講演の後にグループ・ディスカッションのセッションがありました。 4〜5 人に分かれて、徳丸さんが用意したいくつかのテーマから一つ選んで話し合い、発表するというものでした。

私の参加したチームでは、”ユーザが弱いパスワードをつけてしまう問題にサービス・プロバイダとしていかに対処するか?”について話し合いました。 パスワードを使わない Medium のログイン方法だったり、BtoB のサービス、BtoC のサービスに分けて考えて有効な方法について話し合いました。

他のチームの発表も聞いて色々な意見も聞けて有意義でした。 また、その時に出てきた話で、基本的にフレームワークに沿って開発ができていれば、フレームワーク側である程度セキュリティを担保してくれるという話もありました。私が普段使っている Rails もちゃんと Rails way に従って開発することの重要性を改めて感じました。

イベントに参加して

普段 Web アプリケーションを作っていて、何かと抜け落ちてしまうことも多い脆弱性対策。診断業者に任せるのではなく、エンジニア全員がしっかりとした知識を身につけて、適切なツールやテストを用いて検査できる仕組みや取り組みをしていきたいと思いました。また個人で開発しているアプリなども、本を読みながら実際にできているか確認してみたり、わざと脆弱性を作ってみながら勉強していく方法もいいなと思います。

機会があれば、セキュコンの CTF にも参加してみたりして、日々セキュリティに触れられる環境にもしていきたいですね。