<競技の内容>
コンテスト当日に作成したソフトウェアを持ちより,問題が含まれているテキストファイルを読み取り, そのテキストファイルに含まれている文字列がSQLインジェクション攻撃かどうかを機械学習の手法を用いて判別し, その正解率を競います.
競技の参加は個人でもチームでも構いません.
(注意)競技のときには参加者の方が作成したソフトウェアを預かったうえで, プロジェクタで検知の様子を投影するということを予定しております. 作成したソフトウェアの情報を第3者に知られたくない場合は参加者の方のコンピュータを用いて競技を行うという形式で対応させて頂きます.
<競技の流れ>
競技は全部で3回行い,3回のラウンドの成績について競い合います. 競技の大まかな流れは以下の通りです.
(1)インストラクション
(2)Round 1
(3)システムの再設定(必要があれば再学習)
(4)Round 2
(5)システムの再設定(必要があれば再学習)
(6)Round 3
(7)参加チームによるプレゼン
(8)成績発表
各Roundでは,SQLインジェクション攻撃の文字列と, 正常文字列(SQLインジェクション攻撃でない文字列)を混ぜた問題を出題します. したがって,SQLインジェクション攻撃をどれだけ正しく判別できるかどうかだけでなく, 正常文字列をどれだけ正しく判別できたかということも評価の対象になります. 問題は各Roundで攻撃・正常合わせて50個~100個程度出題します.
プレゼンでは,参加者が作成したソフトウェアの工夫などについて話をして頂く予定です. ただし,第3者に公開したくない部分については話をして頂く必要はありません. プレゼンの後で参加者の方に良いと思った参加者(またはチーム)に投票し, その結果を成績評価に反映することを予定しています.
<競技の参加方法>
問題の文字列が含まれているテキストファイルを入力し,判別結果をテキストファイルで出力するソフトウェアを作成してください. 機械学習の手法を取り入れる必要はありません.
(1)問題はテキストファイルで出題しますので,テキストファイルを入力できるようにしてください.
(3)判別結果については,攻撃と判別したら1を,正常と判別したら-1を改行して出力してください.
(4)出力は半角数字の1と-1のみでお願いします.
(5)出力するテキストファイルの名前は ans.txt でお願いします.
(6)判別結果を出力するイメージサンプルはこちら。
excelのvbaで上記機能を実装したサンプルのソフトウェアを用意していますので参考にしてください. このソフトウェアを自由に改変し,それを用いて競技会に参加して頂いて構いません. (機械学習のアルゴリズムを実装している部分は,参加者各自で改変してください.) 競技会への参加を希望される方にはexcelで作成したソフトを無料で配布します. 詳細は
静岡理工科大学松田研究室のWebページ(http://matsudalab.office-server.co.jp/security_machine_learning/saml_index.html)にて。
<出題する問題について>
攻撃検知は(フォームの入力部分に)インジェクションされる文字列で行ってください. 攻撃として出題される文字列は以下のものになります.
・SQLインジェクション攻撃が成立する文字列
・SQL文として文法的に成立しないが,エラーメッセージを引き出せる可能性のある文字列
一方,正常として出題される文字列は以下のものになります.
・個人情報に関する文字列
・一般的な日本語、英語の文章
・その他Webフォームに入力される文字列のサンプル
☆競技会には観客が入ることがあります。
☆競技会終了後、懇親会を開催する予定です。