セキュリティキャンプ全国大会 2023 専門Bチューター参加記
はじめに
セキュリティキャンプ全国大会 2023 に専門Bクラス(Webセキュリティクラス)のチューターとして参加しました。チューターとしてやったこと、講義の感想、その他感想を参加記としてまとめます。
チューターとしてやったこと
チューターとしては主に、ハンズオンにおける受講生の技術面でのサポートと講義中の写真撮影を行なっていました。ハンズオンでのサポートについて、受講生の方々はセキュリティキャンプの応募課題を通過している方々であるため、技術面でのサポートはほとんど不要でした。しかし、windows環境でハンズオンが動かないことが多々あり、主にはwindows環境しか持ち合わせていない受講生の方々のサポートを行なっていました。講義中の写真については、受講生の方々が成果発表の時に活用されており、撮っていて良かったなと思いました。
講義の感想
Bクラスで受講した講義の感想をつらつらと書きます。
B1: Webプロダクトセキュリティへのいざない
5日間で学ぶ講義のイントロダクションについてのお話がありました。講義概要や事前学習をもとに受講生間で疑問点や明確にしたい点の洗い出しをディスカッションを通じて行いました。このような洗い出しを講義が始まる前に行うのは、受講する講義に対して万全な準備を整えておくために有益だと感じました。実際に、受講生の方々は事前に洗い出した疑問点や明確にしたい点を講義中の質問などで解消されていたように感じました。
B2: 開発プロセスを攻撃者の視点で捉える
前半2時間では、「攻撃者の視点を知る」というテーマで、仮想の学習塾へのペネトレ演習やレッドチームのお話がなされました。個人的には管理者権限の権限を駆使し、端末でコード実行することで窃取したCookieを用いてMFAを突破する部分が熱く痺れました。後半2時間では「攻撃者の視点を対策に活かす」というテーマで、CI/CD環境を具体例に攻撃側の目線を対策につなげるための手法を学びました。会社におけるセキュリティを考える際にはまずはシステムの全体像の「グラフ」を作成し、ATT&CKなどのフレームワークを用いた脅威分析によって可能な攻撃を「リスト」形式で明確にする。そして、具体的な防御策を考え、その対策がなぜ必要かを攻撃と紐付けて考えるという話が印象に残りました。
B3: クラウドネイティブセキュリティの実践と戦略
kubernetesを用いたローリングアップデートや水平スケーリング、サーキットブレーカーを用いた障害緩和、サイドカープロキシの自作などの演習を行い、クラウドネイティブ環境における脅威のお話がなされました。自分はkubectlコマンドを使ったこともないk8s完全初心者でしたが、演習を通じてkubernetesの利点とその実現方法が理解できました。kubernetesはとにかく複雑という印象がありましたが、ガチャガチャ触ってみるのが早いなという気持ちになりました。また、マイクロサービスにおいてはサービスを分割することによって、様々な脅威が存在しうるという点が印象的でした。
B4: Webサービスにおける安全な認証とID連携の実装
FIDO、WebAuthn、Passkeyなどの認証技術、ID連携技術であるOpenID Connectについてのお話がなされました。そして、Passkeyを用いたログイン機能とOpenID Connectを用いたID連携機能を実装する演習を行いました。OpenID Connectは自分の研究に密接に関わるためある程度理解ができていましたが、FIDO、WebAuthn、Passkeyなどの認証技術はざっくりとした理解しかできていなかったため、実装して実際に動作させることができてよかったです。また、FIDOで使用される端末のセキュア領域について興味があるため理解を深めていきたいです。
B5: 適応し続けるプロダクトとセキュリティ
不確実性のある環境下でプロダクトセキュリティにどのように向き合っていくべきかというお話がなされました。自分にとっては、探索と深化についての話がとても刺さりました。これは探索によって自身が手をつけられる領域を広げ、深化によって専門性を高めていくという話です。自分の場合は、深化だけをやりがちなので探索によって専門家と建設的な会話ができるレベルの領域を広げていきたいなと感じました。また、講師の方は自分の考えや経験を抽象化するのがとてもお上手な印象があり、思考のまとめ方としてとても参考になりました。
B6: ソースコード解析によるWebアプリケーションの脆弱性調査
CVEをベースとした脆弱性調査とCodeQLを用いた脆弱性調査の自動化を学びました。CodeQLはソースコードからコードに関するデータベースを作成して、それに対してクエリを投げて該当のコードを検索することができるツールです。ユーザが送信された値がアプリケーション内でどう伝搬していくかを追跡するTaint Trackingという手法をCodeQLを用いて自動実行することを演習として行いました。Log4shellのような値の伝搬が多く追跡が困難な脆弱性においても、CodeQLを用いると自動で追跡が可能になることを演習を通じて学びました。CodeQLはどんな脆弱性でも検出できる魔法のツールではありませんが、ソースコード内で生じる脆弱性についてあたりがつけられれば、追跡を自動化することで作業の大幅な効率化が可能になることを実感しました。
B7: Policy as Code入門
ポリシーを記述し、ポリシーに準拠しているかのチェックをコード化によって機械的に実施する「Policy as Code」について学びました。また、Policy as Codeの実装であるOpen Policy Agent(OPA)とその記述言語であるregoを用いて、ポリシーを記述する演習を行いました。様々な場面でポリシーを作成し、ポリシーに準拠しているかを継続的に検証することが求められるため、Policy as Codeの概念はそれを実現するために重要な概念であること実感しました。また、regoの記法はなかなかに独特で、特にイテレーション周りの理解が難しかったため、ポリシーの記述にはなかなかに苦戦しました。
その他感想
スケジュールがなかなかにハード
去年自分はオンラインでネクストキャンプに参加しており、その時もなかなかにスケジュールがハードな印象がありましたが、対面だと5倍増しでハードに感じました。朝早くから夜遅くまでプログラムが組まれており、7時くらいに起き、23時くらいに泥のように眠る規則正しい生活を送っていました。ハードなスケジュールをこなすことで、セキュリティに携わることで必要となる体力をつけさせる意図があるのではないかと考えました。ちなみに、チューターは施設からの外出を許可されていましたが、スケジュールがハードすぎたために期間中一度も施設から出ませんでした…
ご飯は美味しい
ご飯は毎日朝昼晩出ていたのですが、どれもとてもおいしかったです。特に2日目の昼食のカレーに入っていた豚肉?の食感がモキュモキュしており非常においしかったです。
交流がすごい
自分は期間中の交流に特別力を入れていた方ではないと思いますが、それでもたくさんの方々と名刺を交換しました。4日目の夜には名刺交換会なるものが行われ、名刺交換会の会場にはたくさんの人々が密集しており、熱気が凄まじかったです。個人的には、自分の研究分野に密接に関わるOpenID Connectについて話ができる人々と出会えて非常に嬉しかったです。また、自分が普段からXでお見かけしている偉大な技術者の方々の実在を確認できたのは大きな収穫でした。
おわりに
チューターとして対面でセキュリティキャンプに参加できて非常によかったです。チューターとしては至らない点が多々あったかと思いますが、無事に終えることができて安心しています。また、来年から事業会社のPSIRTで働く予定の自分にとって今年のBクラスの講義は全て業務に直結するであろう内容であったため、Bクラスのチューターに応募して本当に良かったなと思いました。セキュリティキャンプ 2023に携わった全ての方々、本当にお世話になりました。そして、ありがとうございました。