こんにちは、セキュリティオペレーション部の元田です。
2023年9月22日/23日に開催されたセキュリティ・ミニキャンプ in 山梨に講師として参加し、「libFuzzerで始めるファジング入門」の講義を担当しました。
ソフトウェアの脆弱性を見つける手法として、ファジングの研究が活発化しています。 本講義では、ファジングの基本原理を学び、libFuzzerを用いたハンズオン体験を通じて、 ファジングの技術を習得します。 是非、この機会にファジングの世界へ足を踏み入れてみてください。
参加の経緯
学生時代にセキュリティ・キャンプに受講者として3度参加し、チューターとしても関わらせていただきました。そのご縁で、今回ミニキャンプの講師として登壇することとなりました。
初めて参加したセキュリティ・キャンプは、「セキュリティ・ミニキャンプ in 岡山 2018」で、同世代の米内さんが講師をされていたのが印象的でした。今回、こうして5年越しで私も講師になりました。
なぜファジングをテーマにしたのか
ファジングは学生時代の研究テーマで、他の人にもファジングの面白さを共有したいと以前から考えていたためです。講師のお話を頂いたとき、これしかない、と思いました。
ただ、ミニキャンプで扱うには技術要素が多すぎるため、ファジングの体験をしてもらうことを第一に講義内容を練りました。ファジングを扱うためには、プログラミング言語、脆弱性、デバッグ、ビルド関係の知識が必要です。150分の授業でこれらすべてを深く扱うことは難しいため、ファザーを動かしてみたらこんな感じで脆弱性が見つかるよ、という路線にしました。
ファザーは、関数に対して適用できるlibFuzzerを採用しました。学生時代はAFLを使用していたのですが、初心者がいきなり扱うには難しいと判断し、見送りました。
講義概要
講義では、ファジングの概論、libFuzzerの使い方、ハンズオンとして簡易的なプログラムやリアルワールドのプログラムへの適用を実施し、最後にファジングを扱う研究室と今後の学習に役立つ文献を紹介をしました。
講義の様子
seccampは学生向けということもあり、ファジングを扱う研究室を紹介して、今後研究したい人に刺さればいいなと思い、紹介しました。折角なのでここでも紹介します。
講義資料の一部抜粋
私は、バグバウンティやソフトウェア開発の現場でファジングを使った経験はないため、アカデミア寄りの内容になりました。しかし、研究生活で得た知見を共有することで、一風変わったファジングのハンズオンを味わってもらえたのではないかと思います。
今後に向けて
受講者アンケートからは、未回答の方を除くと皆「満足した」「大変満足した」の回答を頂き、初めての講師としてはよく出来たんじゃないかと思います。
しかし、演習問題を皆終わらせることができなかったり、ハンズオンで余計なコマンドを実行させてしまったりと、反省点が多々あるため、今後セキュリティ・キャンプや他のイベントで講師をやるときは、改善し、より良い講義にしていきたいです。
セキュリティ・ミニキャンプ in 山梨2023 の講師と受講生(出典)
セキュリティ・キャンプに興味をもった方へ
是非、今後の地方大会(ミニキャンプ)や全国大会に挑戦してみてください!
ご応募お待ちしております。