セキュリティ・キャンプ2013に参加してきました。

 セキュリティ・キャンプ2013に参加してきました。

 セキュリティ・キャンプとは、情報セキュリティについて本格的に学びたいという意欲を持った学生(22歳以下)向けの合宿イベントで、毎年夏に開催されています。今年は海浜幕張駅から歩いて数分のクロス・ウェーブ幕張にて、4泊5日で開催されました。

 今年は様々なメディアさんにも取材されており、すでにいくつか記事も上がっています。


f:id:b07c00:20130815010530j:plain

 会場の画像です(なぜか夜ですがw)。

 今年のセキュリティ・キャンプで扱われた分野(クラス)は「ソフトウェアセキュリティクラス」「Webセキュリティクラス」「ネットワークセキュリティクラス」そして「セキュアなシステムを作ろうクラス」の4つでした。

 ソフトウェアセキュリティクラスは名前からすると少し分かりにくいですが、主にバイナリ系を扱うクラスで、バッファオーバーフローDEP、ASLR、ROP辺りがキーワードになります。Webセキュリティクラスは、主にブラウザ上で動作するアプリケーションのセキュリティに関する技術を扱うもので、キーワードはXSSSQLインジェクション、CSRFなどです。そしてネットワークセキュリティクラスは、その名の通り(TCP/IPを中心とした)ネットワークにフォーカスしており、パケット解析、MalwareやExploitなどからの攻撃検知や、ネットワークに繋がる各種機器へのファジングといったことが題材になるようです。

 最後にセキュアなシステムを作ろうクラスについてですが、このクラスはさらにゼミという形式で扱う内容を参加者ごとに分けており一概に説明できないのですが、12ステップで作る組み込みOS自作入門の著者である坂井弘亮氏や、30日でできる!OS自作入門の著者である川合秀実氏が講師で参加されてることから、OSにどうセキュリティを組み込むかといった点にフォーカスしたクラスのようでした。

 各クラスどういった内容を扱うのかは、応募用紙からも推測できると思います。

 セキュリティ・キャンプの講義は、各クラスに分かれてやる"専門"と、全クラス合同でやる"共通"があります。その他にもBoFといういくつかの講義から参加者が選んで参加できるものもあるのですが、基本はこの2つです。

 1日目はすべて共通の講義で、特別講義とグループワークがありました。

 特別講義では、独立行政法人 情報通信研究機構NICT)の井上大介氏をお呼びして「可視化システム」についての講義がありました。DAEDALUSNIRVANAは井上氏のチームが開発した可視化システムです。

 そもそもソフトウェアはデータであり、物質として目に見えるものではないです。キーボードをカタカタ入力して$が#に変わっても技術者ではない普通の人には何が起こったのか分かりませんし、facebookでalertが出せてもそのクリティカル度合いを測れません。なんさま目に見えないので、すごさも危険性もまったく分からないわけです。しかしネットワークからの攻撃やシステムの状態を可視化することで、専門的なことは分からなくともなんかヤバそう、とか、なんとなくすごい、みたいなことをイメージしやすくなります。

 またこういった可視化の技術は、プレゼンテーションにおいてもとても映えます。本当に井上氏の講義はすごく面白く、またカッコよかったです。まさに可視化を研究されてる人ならではのプレゼンテーションだと感じました。

 グループワークについても紹介しておきましょう。

 グループワークというのは、全クラスの参加者をまぜこぜにして11つほどグループを作り、各グループで自由に発表したいことを作り出す講義(?)です。最終日に各グループ5分間だけプレゼン時間が与えられ、その時間内で好きなことをプレゼンテーションできます。毎年参加者は自由すぎる発想を持っており、今年はトイレのセキュリティだったり、二次元と三次元を繋げる方法だったりと、例年のごとくフリーダムでした。既存技術や実現方法にとらわれず、なんでもかんでも話せるところグループワークの魅力だと思います。

 2日目~4日目午前までは、主に専門講義になりますが、その前に3日目の夜のBoFについて書いておきたいと思います。

 BoFというのは選択式の講義で、用意されたいくつかの講義から参加者が選んで参加できるというものです。大学の授業と似ているかもしれません。ちなみにここで用意されている講義は専門とはまったく別のもので、また技術的な内容以外も扱われます。どちらかというとグループワークと似ており、講義というより議論といった感じで、参加者もいっしょに考えてもらう形式です。用意された講義には、セキュリティ分野のキャリアプランからアセンブラ短歌まで、本当に多種多様なものがありました。

 2日目以降は、BoF以外の時間は基本的に専門講義にあてられます(本当は企業見学やチュータープレゼンなども入っているのですが、これは講義ではないので)。

 私は2010年から講師としてソフトウェアセキュリティクラスに参加しており、今年で4回目となります。去年までずっと"マルウェア解析演習"を講義に入れていたのですが、今年は初めて、脆弱性攻撃一本でいくことになりました。マルウェア解析を楽しみにしていた参加者もいて申し訳なかったのですが、その分、脆弱性攻撃について深く扱えたのかなと思っています。

 脆弱性攻撃もいまは複雑化しており、キャンプ期間中にすべてを伝えるのはとても難しいのですが、まずはLinux環境でサンプルプログラムに対してExploitingを試してもらい、続いてWindows環境でのshellcode作成と防御手法を考える、そして最後に実際に発見されたAdobe Readerの脆弱性を利用するExploitを解析してもらうという流れで進みました。正直な話をいうともう少しカリキュラムを減らした方がよかったかなとも思いましたが、扱った内容をサイボウズライブに公開すればキャンプが終わってからも勉強は続けられるため、期間中は多少無理をしてもたくさんのことを扱うことにしました。

 また、たのしいバイナリの歩き方を編集の方に無理をいって、参加者(10名)分+α送っていただきました。技術評論社さん、本当に感謝です!

 f:id:b07c00:20130814135303j:plain

 専門は4日目の午前中までにすべて終わり、4日目午後からはCTFになります。CTFとはセキュリティコンテストの一種で、様々なセキュリティ分野における課題が出題され、それを解いて得点を得る形式の競技です。またキャンプのCTFでは授業で扱った内容やそれに近いものも多く出題されるため、復習的な意味合いもあります。

 CTF自体は世界的にもさまざまな国で開催されており、日本でも2012年にキャンプとは別にSECCON CTFというものが国内の学生向けに開催されています。2013年からは学生、社会人問わず、誰でも参加できるようになり、キャンプも終わってすぐですが、さっそく8/22~23にかけてSECCON×CEDEC CHALLENGEと題し、横浜大会が開催されます。もしCTFに興味がわいたら、SECCON CTFに参加してみるのもよいかもしれません。

 そして最終日の5日目です。

 最終日は、グループワークの発表、各クラスの発表と、参加者にとっては発表が続きます。正直、プレゼン資料を作ったこともない、人前で発表したこともないという学生が、キャンプ期間中というとても短い時間で演習をやり、プレゼン資料を作り、それを全員の前で発表するという、よく考えるとものすごいスケジュールになっていると思いますが、それでもなんだかんだでそれをこなしている参加者は本当にすごいと思いますし、逆に本気出せばここまでやれる人たちが集まっているのかなという感じもします。また5日目は講師にとっては一番楽しみな日でもあります。グループワークも各クラス発表も参加者がどんなことを話してくれるのかわくわくしています。

 発表内容は各クラスそれぞれで、脆弱性を調査、解析したり、セキュリティ機能を作ったり、ファジングしたりと様々です。クラスでやることは毎年異なっているのですが、今年はより実践的な内容が多かったように思えます。

 そんなこんなで発表は終わり、表彰式→閉会式でキャンプは終了となります。

 私はやっぱり「技術を楽しんでほしい」ってのが一番意識していることなので、参加者から「スゲー楽しかったです」という感想をもらえると「よっしゃー!」って感じになります。結局のところ、楽しいという原動力がなければ10年以上何かを続けることは難しいんじゃないかと思います。

 というわけでセキュリティ・キャンプ2013のレポートは終わりです。

 これからじょじょにアップされるであろう参加者のレポートを楽しみにしながら、私自身も学生に負けないように技術を磨いていこうと思います。参加者のみなさんお疲れ様でした。そして来年以降、キャンプに挑戦してみようと考えている方は、ぜひ今年の応募用紙をみて、来年に向けて勉強していってください。少しずつでも続けている(前に進んでいる)ことが大事だと思います。

 では参加者のみなさん、お疲れ様でした!