セキュリティ・キャンプミニとは
学生に対して情報セキュリティに関する高度な技術教育を実施し、次代を担う情報セキュリティ人材を発掘・育成する事業です。(IPAより)
年一回の全国大会とは違い、ミニは年数回各地域・オンラインで行われています。
今回は8/23、8/24の2日間東京で開催されたセキュリティ・キャンプミニCトラック「脆弱性検知シグネチャを作ってみよう」に参加しました!
応募課題晒し
二週間ほどかけて完成させました。
応募課題を書くのは初めてだったのですが、書いているうちに楽しくなって想定より長くなってしまいました。
今まで全国大会に参加された方の応募課題を参考に、IPAやOWASPなどのドキュメント引用を多めにする形式にしました。
一日目
前日からホテルに泊まっていたので焦らずお昼からの講義に臨めました。
倫理講義
最初に全体写真を撮影した後、参加者全員で検事さんによる倫理講義を受講しました。
法律と倫理の違いや倫理を知らなければならない理由を説明していただいたあと、ITに関連する法律(不正指令電磁的記録に関する罪、電子計算機損壊等業務妨害罪)や犯罪件数のデータなどを教えていただきました。
特に、先端技術を学ぶ人間ほど倫理を学ぶべき というお話が印象的でした。先端技術には法・倫理に関するリスクがつきもので、それを正しく理解していないと挑戦できない、もしくは法・倫理を破ってしまうというお話でした。
脆弱性検知シグネチャ作成(一日目)
最初にシグネチャ開発のイロハを学びました。
攻撃と診断は似たようなものだと思っていたのですが、診断は 「安全性(非破壊性)」 「網羅性」 「検知後の精査のしやすさ」 が重要だと知って驚きました。この違いがなかなか理解できずに二日目午前まで苦戦することになります…。
その後は実際に無料セキュリティ診断ツールであるZAPを利用して、診断用のスクリプトを作成していきました。
一日目はディレクトリトラバーサルを検知するシグネチャの作成でした。
私が作成したのは、絶対パスを用いた単純なパターンのみの検知でしたが、講師(プロのエンジニア)のスクリプトは正規表現を用いて相対パスやwindows、Linux両方検知できるようになっていて感動しました。
ホテルに帰ってから自分のスクリプトを修正する時間が楽しかったです。
二日目
脆弱性検知シグネチャ作成(二日目)
二日目はXSS、SQLインジェクションを検知するシグネチャを作成しました。
段々コツがつかめてきて、網羅性も考えながら作成することができました。成長をその場で感じることができてすごくうれしかったです。
SQLインジェクションでは、三種類のシグネチャパターンを教えていただきました。
- エラーを返すようなペイロードを与える
- 正常なリクエスト(A)と、SQLに干渉するが正常なリクエストと同じレスポンスを返す(B)二つのペイロードA,Bを与え差分を比較して検知する(差分検知)
- DBの処理を一定時間停止させるペイロードを与え、遅延時間を計測し検知する
どのシグネチャでも検知はできるのですが、「検査時間」「誤検知の多さ」などで違いがあり上手く使い分けることが重要だと学びました。
講義資料がすごく丁寧でわかりやすくつくられていて、楽しく学ぶことができました。
感想
外部イベントに参加することも、現役のセキュリティエンジニアの方とお会いすることも初めてでとても刺激を受けました。
一緒に講義を受けた関東の学生の方々とお話するのも楽しかったです。お互いの環境が違いすぎて驚きばかりでした。
運営やスポンサー、講師の皆さん、二日間ありがとうございました!
