セキュリティ・キャンプ2013 お疲れ様でした
今さらという感じもありますが、セキュリティ・キャンプ2013にWebセキュリティ・クラスの講師として今年も参加しました。
Webセキュリティ・クラス以外の実施内容については様々な記事をご参照いただくとして、ここではWebセキュリティ・クラスでの講義内容をご紹介したいと思います。
今年のWebセキュリティ・クラスでは、DOM based XSSを中心に、クライアントサイドで発生する脆弱性を中心に取り上げて講義および実習を行いました(参考:▶ セキュリティ・キャンプ2013:Webセキュリティクラスのご紹介)。ビデオ内でも話していますが、取り上げる内容をクライアントサイドに限定したのは、SQLインジェクションのような古くから存在するサーバ上の問題点については根本的な解決方法も見出されているものの、DOM based XSSのようなクライアントサイドで発生する問題についてはJavaScriptコード量の増加とともに増えつつあるにも関わらず、対策方法なども充分に議論されていないことから、将来を担う学生にはぜひ今から取り組んで欲しいと考えたからです。
講義としては、DOM based XSSに限らずJavaScript周辺で引き起こされる問題点やContent-Security-Policyに関する議論に加え、チューターによるこれまで発見した脆弱性の具体例など例年以上に他では聞くことのできないような、講師でさえもワクワクするような内容ばかりでした。
実習は、講師陣で作成した脆弱性の多数含まれるサンプルWebアプリケーション(SNSサイトを模したもの)を対象に、(1)参加者を3グループにわけ各グループで脆弱性を探す、(2)発見した脆弱性を修正する、(3)発見した脆弱性について実際に脅威が引き起こされるシナリオを想定し具体的な攻撃方法を検討する、というかたちで行い、仕上げとしてそれぞれのグループで発見した脆弱性への攻撃を他グループが修正したWebアプリケーションに対して適用することで、修正方法が妥当であるか、脆弱性に対する脅威が現実的に成立し得るのかの確認を行いました。
一般的に、脆弱性を探す場合にはXSSであればalertを表示させXSSが存在すること、SQLインジェクションであればSQLインジェクションが存在すること程度の確認しか行いませんが、今回は脆弱性に対する脅威をきちんと考えて欲しいという想いから具体的な攻撃方法までグループ間で考えてもらうことにしました。
写真は、3グループ(「CROSS」チーム、「SITE」チーム、「SCRIPTING」チーム)に分かれてそれぞれの修正したWebアプリケーションに対して互いに発見した脆弱性が残っているか確認させたあとの「スコア」です。脆弱性の修正や発見だけでなく、具体的な脅威の検討に加え、模擬戦形式を採ることで、普段ではなかなか体験できない機会を与えることができたのではないかと思います。
キャンプ参加者から、将来のWebアプリケーションセキュリティを支える人材が育つことを切に願っております