はじめに
先日セキュリティキャンプ2022全国大会に参加してきました!
セキュリティキャンプの存在は高専生だったことから知ってはいたのですが、当時はつよつよな人たちが集まるイベントで自分には関係ないと思っていました。そんな私がなぜセキュリティキャンプに参加しようと思ったのかというと、Web開発においてより質の高い成果物を出せるようになりたいと考えていたからです。大学生になってからはじめたWeb開発である程度機能自体の実装をできるようになった現在、次はパフォーマンス等の質の部分にフォーカスして開発をしていきたいと思っていました。このような課題を持っていた中で、セキュリティキャンプはプロダクトの質につながるセキュリティを学ぶことができる良い機会だと思いダメもとで応募してみました。
そもそもセキュリティキャンプとは
セキュリティ・キャンプとは、日本における将来の高度IT人材となり得る優れた人材の発掘と育成を目的とした独立行政法人情報処理推進機構(IPA)の事業の一つです。
現代においては、情報セキュリティの脅威は高まる一方です。
本事業では、セキュリティ分野に興味を持ち、将来同分野で活躍したいという意志をもった若者に対して、高度な情報セキュリティ技術の習得機会を提供しています。また、モラルや法律遵守の意識、セキュリティ意識、職業意識、自立的な学習意識についても向上のための機会を提供しています。
本事業は、2004年度のスタート以来、2021年度のセキュリティ・キャンプまでで計989名の将来が有望なIT・情報セキュリティ人材を輩出しています。セキュリティ業界はもとより各方面から、高度な情報人材育成に有益なイベントとして高く評価されています。
引用: https://www.ipa.go.jp/jinzai/camp/2022/zenkoku2022_about.html
応募課題
応募課題では調べてみてまとめるような課題だけでなく、過去の経験や興味のあることに関するものも出題されました。幸い現在就活生なので過去の経験や興味分野についてはまとめておりおり簡単に解答することができましたが、より一層深掘りをすることができ良い機会でした。
また、応募課題の内容と解答については別途こちらの記事にまとめています。
選考通過
事前課題
- 作って学ぶ、Webブラウザ
講師の方が用意してくださったvulbrというある程度HTML/CSSをレンダリング、JavaScriptを実行することができるブラウザに対して、h2タグを反映させるなどの機能追加を行いました。
- 実践 Linux コンテナ実行基盤セキュリティ
講師の方が用意してくださったブログをもとに、DockerやKubernetesについて手を動かしながら概要を学びました。
専門講義
- 作って学ぶ、Webブラウザ
- マイクロサービス/分散モノリス的アーキテクチャへの攻撃手法
- Policy as Code入門
- モダンな開発環境のセキュリティおよびCI/CDパイプラインのセキュア化
- ソフトウェアサプライチェーンセキュリティのこれから
- 実践 Linux コンテナ実行基盤セキュリティ
作って学ぶ、Webブラウザ
Webブラウザは私たちとインターネットを繋ぐための身近な存在ですが、大規模すぎるプロダクトがゆえに全貌を理解することは困難です。本講義では、仕様を読み解きながら自分で簡単なブラウザを作ることによって、HTML、CSS、JavaScriptへの理解を深め、Webセキュリティにおけるブラウザの役割について少しでも詳しくなることを目標とします。
引用:https://www.ipa.go.jp/jinzai/camp/2022/zenkoku2022_program_list.html#list_b1
マイクロサービス/分散モノリス的アーキテクチャへの攻撃手法
近年クラウドサービスやマイクロサービスアーキテクチャの普及が進むと同時に、それらの攻撃手法もまた研究されており、セキュリティエンジニアの間では関心の強い分野の一つとなっています。本講義は現役のペネトレーションテスターが業務等で得た知見を元に作成しており、クラウドサービスやマイクロサービスアーキテクチャで構築されたWebサービスに対するリアルな攻撃手法をハンズオン形式で学び、習得することを目的としています。
引用:https://www.ipa.go.jp/jinzai/camp/2022/zenkoku2022_program_list.html#list_b1
Policy as Code入門
情報セキュリティの分野でも、いままで人が作業していたようなことをソフトウェアの力を使って置き換えるようなエンジニアリングの動きが近年広がっています。その一つとして、組織やチームで定めたポリシーにしたがって判断をしたり、ポリシーに準拠しているかのチェックをコード化によって機械的に実施する「Policy as Code」という考え方があります。この講義では「Policy as Code」がどのような取り組みなのか、具体的にどのようなことができるのかについて実例とともに紹介していきます。また、Policy as Codeの分野で注目されている実装のOpen Policy Agent(OPA)とその記述言語であるRegoについても簡単に紹介し、実際にポリシーをコードで記述するハンズオンまで実施したいと思います。
引用:https://www.ipa.go.jp/jinzai/camp/2022/zenkoku2022_program_list.html#list_b1
モダンな開発環境のセキュリティおよびCI/CDパイプラインのセキュア化
この10年で、ソフトウェアを開発する環境は大きく変化してきました。 インフラストラクチャはCloud基盤の利用が増え、ソフトウェアのテストやデプロイの際はCI/CD(継続的インテグレーション/継続的デリバリ)パイプラインを通じてデプロイされるようになりました。また、開発はリモートワークを前提とした、境界防御によらないゼロトラスト環境の社内IT基盤上で行われています。
本講義の前半では、現代のプロダクション環境を攻撃および保護するためにはどのような手法を用いることができるのか、主にマルウェアなどを用いたクライアントサイドへの攻撃や、サプライチェーン攻撃の視点から、総合的に攻撃手法および対策を講義した上で、ハンズオンを行います。
後半では、セキュリティ対策として焦点の当たることの少ないCI/CDパイプラインのセキュア化についてハンズオンを通じて攻撃手法と対策を身に着けていただいた上で、その上で残る課題について解説することを予定しています。
引用:https://www.ipa.go.jp/jinzai/camp/2022/zenkoku2022_program_list.html#list_b1
ソフトウェアサプライチェーンセキュリティのこれから
現代のソフトウェアの開発・運用プロセスは多くの人・組織・ソフトウェア資産に立脚するようになってきています。多くの便利な OSS パッケージが 1, 2 回のコマンド実行で手に入り、1 つの YAML ファイルがテストやデプロイの継続的実行を可能にし、便利なソフトウェアを動かすための環境は世界の誰かがコンテナイメージとして公開してくれている、そんな体験をする機会が多くなってきたのではないでしょうか。
しかし、この喜ばしい時代の流れの中で、「一つのソフトウェアを作って届けるという工程に関与する人の数」が爆発的に増加してきているのも事実です。この流れが、ソフトウェアサプライチェーンのセキュリティへの関心を急激に高めています。本講義では専門講義「モダンな開発環境のセキュリティおよびCI/CDパイプラインのセキュア化」で取り扱う内容と連携しながら、ソフトウェアサプライチェーンセキュリティのこれからについて検討します。
引用:https://www.ipa.go.jp/jinzai/camp/2022/zenkoku2022_program_list.html#list_b1
実践 Linux コンテナ実行基盤セキュリティ
コンテナ型仮想化技術やコンテナオーケストレーションツールの登場により、Web アプリケーションをはじめとした様々なシステムがコンテナ実行基盤上で実行することは、いまや当たり前になりつつあります。コンテナはサンドボックス技術の一つでもあるため、それを使った開発や運用は安全だと思われますが、適切に対策しないと、アプリケーションだけでなく、隔離されているはずのホストOS自体も攻撃されてしまう可能性があります。
本講義では、そういったセキュリティ上の問題を理解するために、コンテナやその実行基盤に対する攻撃手法やそれらの対策について学びます。また、フルスクラッチでコンテナを作成することで、コンテナを支えている要素技術について学び、コンテナ実行基盤を深く学ぶための素地を身に着けます。
引用:https://www.ipa.go.jp/jinzai/camp/2022/zenkoku2022_program_list.html#list_b1
グループワーク
グループワークではセキュリティキャンプ終了後にグループでどのような活動をしていくかの話し合いを行いました。そして、私のグループでは半年間週一で進捗報告会を開催することに決まったのですが、グループワークが夜に行われてしまったために、悪ノリが発生してしまい先週掲げた目標に達成しなかった場合連帯責任で筋トレとい罰則も追加されてしまいました。
最後に
Webバックエンドを開発する際はフレームワークがある程度対策を行ってくれるので、セキュリティについては知識程度くらいで大丈夫だと思っていましたが、セキュリティキャンプの講義を通してバックエンドの開発者でも知識としてだと不十分でしっかりとどのような点に脆弱性が生まれ、どのような対策を行っていくか考えていくことが大切であることを実感しました。
セキュリティキャンプに参加していなかったらきっと触れることがなかった内容ばかりなので、講師の皆様をはじめ関係者の方々セキュリティキャンプを開催していただきありがとうございました。