はじめに
どうも、カヌです。最近はすっかり気温も下がって秋、そろそろ冬ですね。
もう秋も終わりで冬じゃねーかという突込みもあろうとは思いますが、今年の夏くらいの思い出のお話をしたいと思います。
個人的な話だとEC-Councilの認定でフォレンジック分野のCHFI(Computer Hacking Forensic Investigator)認定を受けたり、9月末に遅めの夏休みを堪能したりしておりました。今回のブログネタはいろいろ有った夏のど真ん中、夏真っ盛りな8月に開催されたセキュリティ・キャンプ2025ミニ(東京開催)の講師をしました!という話を書きたいと思います。
特に技術面での監修や文章校正をメインで実施していたので、裏話的な部分(何を目指したか)や大変な中でも面白さがありました、という話を書かせて頂きます。
改めて自己紹介となりますが、私の経歴は以下のとおりです。
所属はセキュリティデザインコンサルティング部で、これまでの経歴としては脆弱性診断業務(Web/Android/Windowsアプリ診断)やソースコード診断、VexCloudのエンジン・個別の脆弱性検査プログラム(シグネチャ)開発を経験してきました。
セキュリティ・キャンプとの関わりですが、2011年のセキュリティ&プログラミングキャンプ「セキュアなOSを作ろうクラス」の修了生になります。
最近業務で興味を持ち調査していた技術としては、ブラウザのセキュリティAPI(Crypto API)や、実装方法にRFCが存在せずブラウザ独自の拡張となっているContent Type Snifferの仕組みを理解するために、ChromeやFirefoxのソースコードを読んでいました。また、/dev/urandom や/dev/random の実装を確認するために、Linuxカーネル(v6.15.5)のコードを解析し、乱数シードがどのように取得されているかを調べたりもしています。
他にも趣味ではWindowsのネイティブアプリをRustやC#で作ったりだとか、LLMを活用したアプリの制作などいろいろやっています。
今度、この技術ブログで上記に触れてもよいかもしれませんね。
こんな私ですが、今回セキュリティ・キャンプ2025ミニに副講師として参加させていただきました。
講義の形式
講習は、脆弱性や攻撃手法ごとに、次の3段階で構成しました。
1と3は講義形式で、2は実技形式です。
- 脆弱性の仕組みや背景、代表的な攻撃手法、そして修正の考え方について説明(20~30分)
- 脆弱性を検査するプログラムの検討と実装(80~90分)
- 参加者が実装した検査プログラムについて解説(20~30分)
今回扱った脆弱性は、ディレクトリトラバーサル、クロスサイトスクリプティング、SQLインジェクションの3種類です。
いずれも「説明 ⇒ 検討・実装 ⇒ 解説」という流れで進め、理解と実践の両面から学べる構成にしました。
自分の役割について
講習全体のまとめ役と講師の両立
今回の自分の役割は、講習資料全体のレビューと担当講師の両方です。資料全体の整合性とわかりやすさを確保しながら、実際の講習で説明を担当しました。
レビュアーとして注力したポイント
- 技術的な矛盾や不足点がないか確認しました
- 初学者でも理解できる表現になっているか検討しました
- 検査プログラム実装時の注意点や安全性に関する補足を追加しました
- 資料全体の流れと読みやすさを改善しました
講師としての役割
講師としては、ディレクトリトラバーサルの全パートとSQLインジェクション攻撃の解説パートの資料作成と解説を担当しました。

▲セキュリティ・キャンプ2025ミニ当日の様子
特にディレクトリトラバーサルは個人的に好きな脆弱性であり、検査プログラムの実装から担当できたことはとても嬉しく感じています。構成としてはユービーセキュアのブログをベースに、セキュリティ・キャンプ用にDASTツールの開発ベンダーならではのノウハウを盛り込んでいます。
例えば、SQLインジェクションの解説ではDBMSの挙動に関する話やプレースホルダ周りの細かい内容、機械検査で破壊的な挙動を起こすリスクを理屈だけではなく自分の手を動かして学べるような形で盛り込みました。
自分がメインで担当したディレクトリトラバーサルではファイルシステムとは何かという基本的な話から攻撃方法、検査方法、改善方法までステップバイステップで盛り込んでいます。
この2つの脆弱性については伝えたいポイントがかなり多く、自分のこだわりを反映した資料になったため、説明パートも担当させてほしいとお願いして実現しました。
余談ですが、ゼイジャッキー(脆弱性をモチーフにしたユービーセキュアのオリジナルキャラクター)の原案は私が考案しており、愛着もあります(少し話がズレますがディレクトリトラバーサルのカエルの足跡が ../になっています。これはディレクトリをピョンピョン遡っていくイメージを表しています)。
セキュリティキャンプ(参加者側)での経験
参加者だった当時の自分は「無理難題が与えられたけれど、気合でこなしているうちになんとなく理解できてきた」という事前課題の経験をしました。
当時は分かる部分もあれば分からない部分もあり、事後学習をしないと完全には理解できない場面も多くあったと感じています。また、考え方が大切なのはもちろんですが実際に手を動かして何かをやることの重要性も強く意識しました。
これらの経験から、そうした要素を今回の講習にも取り入れたいと考えたのです。言い換えると、2日間で参加者の皆さんがすべてを理解できる講義は目指さず、2日間で「コンセプト」をしっかりと理解してもらうことを重要視します。
その後の学習に活かして学習を自力で進めてもらえる内容にした方が良いと感じるようになりました。
まとめると、次の通りです。
- 2日間で、準備した全ての内容について完全に理解してもらうことを目標にしない。
- まずは「コンセプト」を確実に理解してもらうことを重視する。
- 講習後に自分の力で学びを深められる入口を提示することを意識する。
この3点を軸に、講義資料を作成しています。
キャンプへのモチベーション
当初のモチベーションは、ベンダーフリーであることを意識しながら、参加者の皆さんに「来てよかった」と思ってもらうことでした。加えて、自分自身が過去にセキュリティ・キャンプに参加した経験から、「自分で調べるのが難しい技術を、現場で働く専門家から直接教えてもらえると非常にうれしい」という気持ちが強くありました。
この思いを一言でまとめるなら、「一人の技術者・専門家として、後進を育成したい」という点に尽きるのだと思います。
今回は個人としてではなく、ユービーセキュアの一員として課題を作成しました。そのため、「ユービーセキュアだからこそ提供できる、受講者に喜ばれる内容とは何か」を考える過程そのものが、とても楽しい時間となりました。
検討の中では、どのような講義を行うべきかを様々な視点から議論しました。最終的には、「検査プログラムを実装してもらう」という方向性が浮かび上がり、複数のツールを候補に挙げながら検討を重ねた結果、ZAPを採用することに決まりました。
準備期間にやったこと
ZAPの検査スクリプトAPIリファレンスの作成
ZAPで動く脆弱性検査スクリプトを作る上で課題になったのは、「調べてもスクリプトのAPIリファレンスが出てこない」という点でした。
ZAP自体を操作するWebAPIのリファレンスは存在するようですが、今回やりたいZAP Scriptを作るという目標においては若干種類の異なる資料でした(最悪WebAPIから叩けばいいのですが、理想としてはちょっと違うなーという気持ちです)。
これは課題作成上かなり致命的で、サンプルコードは「なんとなく書けるが明確にAPIの仕様に則っている」とは言えない状態でした。
なので、ZAPのソースコードを解析してAPIリファレンスを独自で作りました。
一旦このリファレンスは開発時に使うことを目標に作っています。
HttpMessageクラスや、ScriptのAPIとなる部分についてだけそれっぽい関数・メソッドを抜き出して以下のようにMarkdownに整理しました。

どこのクラスに何のメソッドがあるかについては自分で探しましたが、1日以内でAPIドキュメントの整理を終わらせるには量が多いメソッド群です。そのためメソッドの整理はChatGPTにお任せしました。
せっかくなので受講者の皆さんにも配布してみましたが、当日開いて参照してくださっている方がチラホラいて、念のため配布して良かったと思っています。リファレンスの作成をどうやったかについては別途ブログ記事を書きたいと思っています。
講習資料の作成
資料作成当初は登壇時に口頭で補足すればよいと想定して講習資料を作成していました。しかし、書き進めるうちに、その方針では2日間では消化しきれず、受講者の理解も難しくなることが明らかになりました。
そこで中途半端に分量を減らすのではなく、むしろ増やす方向へと方針を切り替えました。登壇時は要点だけをかいつまんで、内容をとにかくかみ砕いて伝えることを重視しました。細かい解説は資料を読めば理解できるように丁寧に記載することで、2日間という制約の中でも最低限の理解度に到達できる資料に仕上がるのではないかと考えるようになりました。
この構成であれば、重要度は高くないものの理解を深めると効果的な周辺知識についても、キャンプ修了後の事後学習で補完できるのではないかと見込んでいました。技術をかみ砕いて伝える際には、背景技術がどのように関連して動作しているかを、1ステップずつ順序立てて解説することを大切にしました。
例えば、ディレクトリトラバーサルはOSのファイルシステムと密接に関係するとか、ファイルシステムとは何か、OSの違いによって何が異なるのかといった基礎から、一足飛びにせず一歩ずつ説明することを意識しました。
さらに講習資料をより分かりやすくするため、まず用語を統一しました。社内では誤検知を「過剰検知」、検知漏れを「過少検知」と表現することがしばしばありますが、講習資料では「誤検知」と「検知漏れ」に統一しました。
あわせて、読み手によって理解の差が出やすい体言止めを徹底的に避けるように心がけています。具体的には、「○○だったら検知」という表現を「○○だったら検知します(または検知しません)」のように書き換え、文脈を切り出して読んでも意味が通るようにしました。
社内だと「SQL文に干渉できている」という前提で話していますが、今回は社外に対する講義です。つまるところ社内の常識(用語、前提)は通用しない世界です。
特に説明が複雑なSQL Injection攻撃の解説では「SQL文に干渉できる場合こうなるはず」と「SQL文に干渉できない場合こうなるはず」の前提が我々の頭の中と受講者の頭の中でそろっていないと、送信するペイロードの理解ができなくなってしまうので、資料には前提を明示することや一般的な用語を使用することを徹底しています。
このあたりは社内の関係者であれば前提を深く共有しているため問題になりにくいのですが、今回は2日間で比較的密度の高い内容を扱います。そのため、前提知識がないと理解しづらくなる記述を可能な限り減らすことを目指しました。さらに、セキュリティ・キャンプミニの修了後にも「教科書」として活用してほしいという意図を持って構成を検討しました。
キャンプ当日の話
1日目は朝9時30分に現地に到着して、資料の最終調整や進め方の認識を合わせておこうということで講師3名が集合し話していました。実際のところ講義は15時開始だったので2時間程度暇を持て余した感はありましたが、余裕をもって臨むことができたと自分の中では理解しています。
実際に講義が始まってみると、今まで準備した甲斐もあり比較的スムーズに進められた気がしています。ただ、少し環境面でトラブルも発生したのでその対応に追われてちょっと大変だったなと思う反面、こういうのがキャンプだしやっぱり非日常感のあるお祭りっぽくて好きだなと思った瞬間でもありました。

▲講演中の様子
2日目は、朝8時30分くらいに現場に到着して1日目に発生した環境面のトラブルに対応していました。無事に講義を開始でき、トラブルに巻き込まれていた参加者も問題なく復帰できたため安心しました。
講義で一番意識したところは、1日目・2日目両方とも、以前書いた通り「とにかくコンセプトを理解してもらう」ということです。
1から10まですべてを理解することは非常に困難だと思っていて、資料の中身の6割程度はコンセプトになっているので講義中になんとなく知ってもらって、残りの4割は教科書を見てもらえたらいいなと思いながら講義をしました。
コンセプトを理解した上でプライベートでも手を動かして学び続けられるようになってくれれば、自分の役割は果たせたのではないかと感じています。
これはあくまでも主観ですが、学習で困るところって手を動かす方法が分からないという所が一番だと思っています。そこを乗り超えるコツが伝わっていたらうれしいなと思っています。
セキュリティ・キャンプ2025ミニ(東京開催)に参加した方へ
- 「何かをやってみたい」という根源的な気持ちはずっと持ち続けてもらえたらうれしいです
- 技術を好きであってほしいです。「好きこそものの上手なれ」と言いますし、これは自身の能力をより成長させられる大きなポイントだと思っています
- 最初はみんな初心者です。最初はうまくできないのが当たり前です。ちょっとでもできるようになったら、まずはその成果やご自身の成長を喜んでください。その喜びを積み重ねながら、成長を続けていってみてください
- 技術への向き合い方は人それぞれです。一つのことを突き詰めるもよし、幅広く分野を横断して知見を広げるもよし。無理せず続けられる向き合い方を自分なりに探して行けるとより良いのかなと感じています
- 人と競い合う必要はないので、好きだな・楽しいなと思っている間はぜひご自身のペースで続けてほしいなと思っています
こんな思いがあります。
今回「分からないけど始めてみたい!」という方も何名か参加してくださいました。
「やってみたい」という気持ちが一番の原動力だと思うので、その気持ちはずっと忘れないでほしいなと思っています。
キャンプ後の話(総まとめ)
キャンプの講師という仕事は大変でありながらも、自分自身が教えたいことはしっかり形にでき非常に楽しく充実したものでした。自分以外の講師2名、他にもお手伝いしていただいた方のおかげでセキュリティ・キャンプ2025ミニの講師をやり切ることができたと思っています。
この機会を通じて、セキュリティを知らなかった方もしくは知っていたけれどもう一歩踏み込めなかった方、またはもっと深堀りしたかった方など様々かと思いますが、より一層セキュリティに興味を持ち、楽しいなと思っていただけたなら幸いです。
今回、セキュリティ・キャンプ2025ミニ(東京開催)の講師依頼をしていただいた東京都立産業技術高等専門学校様へのお礼となりますが、貴重な機会を頂きありがとうございました。
