2022年12月にセキュリティの勉強を始めてから、一つ感じていたことがあります。
- セキュリティの基本がわかっていないから、本や論文を読んでも理解に時間がかかる
- セキュリティの本を読んでもイマイチ、イメージが湧かない
これらの課題を感じていたところ、IPAが提供しているAppGoatというアプリケーションがあることを知りました。
本記事はAppGoatに取り組んでみての、私の感想などを述べたいと思います。
AppGoatで何を勉強できるのか?
AppGoatに取り組むと、WEBアプリケーションに対する攻撃や原理、防御方法などを学ぶことができます。 具体的には、表1記載の攻撃・脆弱性を学ぶことができます。
各攻撃については、大まかに図1のような流れで学ぶことができます。
図1中の「演習(発見)」では、実際に脆弱性があるWEBアプリケーションの画面に、攻撃用のコードを入力するなどして、攻撃者の気分を味わうことができます。また、「演習(修正)」では、脆弱性があるWEBサーバのPHPを編集するなどして、どのように攻撃を防御するかを実践することができます。
必要な知識は何か?
AppGoatの前提知識として、下記が想定されています。
- 基本情報技術者試験の合格者、または同等のスキル
- PHPを使ったウェブアプリケーション開発経験6ヶ月以上の方または同等のスキル
私の場合、応用情報の資格は持っているものの、PHPについては全く知識がなかったため「演習(修正)」のステージでかなり苦労をしました。また、WEBアプリケーションに関する知識もなかったため、完全に理解できなかった攻撃もいくつかあります。それでも、分からない単語や仕組みなどをググりながら勉強することで、学習を進めることができました。
勉強する前と後で何が変わったか?
AppGoatでセキュリティを勉強する前は、攻撃者がどのようにシステムに侵入したり、攻撃を行ったりするのかのイメージがついていませんでした。しかし、勉強した後はサイバー攻撃に対するイメージがなんとなくつくようになりました。特に、外部から入力された値をWEBサーバ上でそのまま使うことによって、様々な脆弱性が生まれることを理解しました。今ではログインフォームや、お問い合わせ窓口など外部から値を入力できる箇所が、攻撃者の攻撃起点になっているという理解をすることができています。
今後何を勉強するのか?
学ぶべきセキュリティの分野は、図2のようにカテゴライズできるのではないかと今の私は考えています*1。
私はデータサイエンティストなので、セキュリティ×機械学習の分野(図2中の〇を付与したカテゴリ)を今後は学びたいと思っています。
具体的には、機械学習システムのセキュリティについては
深層学習のセキュリティ課題と論文まとめ - Qiitaにまとめられている論文やそこで紹介されているサーベイ論文、
AIセキュリティから学ぶ ディープラーニング[技術]入門:書籍案内|技術評論社をチェックしようと思います。また、セキュリティを機械学習によって実現するという分野については、
O'Reilly Japan - セキュリティエンジニアのための機械学習を読んでみようと思っています。
*1:正直、セキュリティ領域の分野が多岐に渡っているため、このカテゴライズで正しいのかよくわかっていない