セキュリティキャンプ全国大会2017に参加してきた話
セキュリティキャンプ全国大会2017に参加してきたので感想とか様子を。
www.ipa.go.jp
簡単に言うと、IT系の勉強合宿みたいな感じですね。技術ある若人を育てる場として、様々な企業や団体の方々が協力して開催おり、協議会の方々には本当に感謝しています。
参加にあたって、書類審査的なものがありますが、どんなことを書いたのかはこちらでどうぞ。
kden.hatenablog.com
時系列順でつらつら書いていきます。講義内容のテーマはここで公開されています。受けた内容がどこまで言っていいのか謎なので適度にぼかしつつ。
1日目
そんなに通学圏から離れていない府中だと思っていたのですが、最寄り駅は北府中でした。キャリーバッグかついで駅から向かう間に何人も同じような格好の人がいて、あぁ同士かと思うなど。
到着したホテルは、研修合宿とかに特化した宿泊施設らしいですね。部屋と食堂以外に講義室が2フロア分もあります。構造的にトイレの位置とかがめちゃくちゃわかりにくい。全日通してご飯が美味しかったのですごかった(小並感)
名刺交換は、多分半分くらいの参加者と名刺を交換しました。変形タイプだったり角丸だったりシックな感じだったりという名刺は印象に残りやすい顔を覚えられるとは言ってない
受付して、みんなで名刺交換会です! #spcamp #seccamp pic.twitter.com/zumY0rjl5Z
— セキュリティ・キャンプ (@security_camp) 2017年8月14日
あと、pixivID載せてる絵描きさんもいて オッ ってなりましたね!!!
僕の名刺はこんな感じのものなので、もし手元にある人はああこの人かとか思ってくれるとうれしいです。
セキュリティ基礎
上野さんより、セキュリティ基礎。ディスカッション形式で、グループディスカッションしています。 #spcamp #seccamp pic.twitter.com/rEdhPR87uE
— セキュリティ・キャンプ (@security_camp) 2017年8月14日
「これからAIが進化してもなくならないセキュリティのお仕事ってなんだろう」みたいなことを班で話し合いました。ゼロデイ対策とか、集めたデータの健全性とかそういうのはありそうだねぇみたいな話が多かった印象がありますね。あとは脆弱性見つける人っていなくなるのだろうか、とか。
あとは、ソフトウェアの脆弱性はなんとかなったとしても、例えばSEGVガチャのCPUとかはウエハとか信号のデータ食わせれば事前に判明するのか?Row-Hammer問題を超パワーで発見できる超すごいアルゴリズムみたいなのは生まれるのか?という物理寄りなところが好きです。Row-Hammerは最初聞いたとき感動したレベル。あとPCのメモリに特定の計算させることで電波出してSMS送るみたいなのとか、むしろどうやって機械が発見するんだろうみたいな。
あんま関係ないけど、SUICAカードみたいなあとから変更するのがほぼ不可能なシステムは、状態異常みたいな(?)ミスが構造的に発生しないパラダイムのプログラミング言語を用いて作られたみたいな話を何処かで聞いた気がする。
特別講義 グローバルな活躍のお話/フォレンジックのお話
前半、うんこの話ってみんな言ってるのには納得するしかないですね。うんこ。サイバー攻撃にもルールを定めようという働きがあるという話はちょっと驚いた。
「役に立たないものが作れない人に約立つものが作れるはずがない」には納得ですね。技術力というのもそうですが、役に立たないにも若干の質があり、良い質の役立たなさができる人が一番強いと個人的に思っています。頭のいいバカとでも言うべきか。
チューター紹介
3名のチューターの発表を聞くことができました。2/3が未踏採択者(2016、スパクリ認定,2017)って何事~~~~ 発表スタイルも去ることながら、内容の高度さの説明はわかりやすく発表している印象があり(僕がわかったとは言ってない)、本当に芯からわかってやっている凄腕なのだという空気をヒシヒシと感じました。「高校生レベルの知識層に説明して伝えることができなければ、その人は科学を理解しているとは言えない。」という言葉を思い出す。
グループワーク
「学生が作るのソフトウェアの品質を担保するにはどうすればいいか」みたいなテーマを選んでやることに。「品質ってどういうことだ」「品質が悪いとどういう事が起きるのか」みたいなことを講師やチューターの方々にインタビューしていって、問題を具体的に決めて解決法を考えるという方針でやりました。
2日目
E1~3 BareMetalで遊びつくそう Raspberry Pi
トラックE:西永さんより
— セキュリティ・キャンプ (@security_camp) 2017年8月15日
「BareMetalで遊びつくそうRaspberry Pi」 #spcamp #seccamp pic.twitter.com/JO9y05b7mu
ずっとラズパイ(OSなし)と格闘する講義でした。要約すると、RPiを単なるマイコンとしてみなしてクロスコンパイル環境立てて色々初期化したり設定して使えるようにしよう!あわよくば教育用OS「KOZOS」を移植しよう!という講義内容です。講義当日までにmakefileやリンカスクリプトの書き方、コンパイル環境とアセンブリの勉強をして、当日はLチカとUART回路の設定と割り込みベクタの設定みたいなことをしていました。OS移植まではたどり着かず・・・・・・。レジスタに値代入して設定ポチポチみたいなのは8bitマイコンとかでやったことあるので同じような感じでしたが、IDEとかを介さないず開発環境を立ててJTAGでGDBつなげるとかは初めてで。休憩しつつ11時間と結構ながくやりましたが講師の方の準備が周到すぎて(w 非常に安心して講義を受けることができました。
まあOSまではたどり着いていないので、多用される割り込みやコンテキストスイッチ的な話とかMMUとかみたいな部分はまだわからず、それより上の話も多分OSとしての汎用な部分とlinux特有の部分が交じった知識等、マイコンとOSの間、その先の理解にはまだ穴があるなぁという感じです。事後課題ができるようキットを借りたのでぜひやります(まだやれてない) OSの機能としての知識と、実際にCPU上での実装の話を分けて理解していきたいです。
写真を見た母「あんたの部屋とあんま変わんないね」
僕「🤔(否定できない)」
3日目
B4 Embedded System Reverse Engineering 101
トラックB6:木藤さんより
— セキュリティ・キャンプ (@security_camp) 2017年8月16日
「Embedded System Reverse Engineering 101」 #spcamp #seccamp pic.twitter.com/lImLHrJVMt
ハードウェアに対してはどういう攻撃があるか、部品とはどう通信するかみたいな講義と、某社の某ネットワーク機器を分解してSPIフラッシュメモリの中身を吸い出すという演習。はんだ付けなどで手間取って進みが遅れた雰囲気を感じました。個人的には、吸い出すまではほぼ事前課題にしておいて、じゃあどうやって吸い出したデータの中身を解析していくのか、セキュリティのためにはどうデータを格納しておくべきかという話にガッツリ焦点を当てて欲しかったというのが正直な感想です。これは僕が普段からはんだ付けとかしているから思うことなので普段カーネルのバイナリを目grepするような人からするとはんだ付けとかSPI通信とかは新鮮なのかな。
BusPirate実際に使えたのは良かった。キャンプの直後、スイッチサイエンスからも販売が始まりましたね。
キャンプ中、某講師が「あの機器僕も開発に携わったんだけど、自分の講義で使ったらさすがにまずいかなぁと思ったので使いませんでした」と言っていたのが個人的なツボ。世間って狭いのね・・・。
写真を見た母「やっぱりあんたの部屋とあんま変わんないね」
僕「🤔🤔(あまり否定できない)」
B5 信じて送り出した家庭用ルータがNetBSDにドハマリしてloginプロンプトを返してくるようになるわけがない
トラックB5:蛯原さんより「信じて送り出した家庭用ルータがNetBSDにドハマリしてloginプロンプトを返してくるようになるわけがない」 #spcamp #seccamp pic.twitter.com/c98KMu607m
— セキュリティ・キャンプ (@security_camp) 2017年8月16日
NetBSDがいろんなもので動くんですよ、という講義とRPi用にビルドして動かしてみるという演習。ビルド環境が一瞬で作れるのは確かに凄そう。サポートしているCPUが無茶多いのも強そう。RPiのブートシステムとUNIX系の知識が足りてないのか、imgファイルを差し替えるとNetBSDとして起動するということについてはよくわからなかった・・・・・・。あとPiとPi3ではビルド設定一箇所変えないと動かないんですよ、変えたら、ね?動いたでしょう?という話もありましたが、イマイチ受け止めきれなかった。
ちなみに、講義内容にも予め
と書いてあり、様々な機器がNetBSD評価ボードとして目に映るんですね・・・・・・恐ろしい・・・・・・という感じ。
BoF 発想法セッション
BoF 前半 #spcamp #seccamp pic.twitter.com/UL3izPJmRE
— セキュリティ・キャンプ (@security_camp) 2017年8月16日
キティの生みの親であり東急ハンズの元企画長(?)であり・・・・であり・・・・であり・・・・みたいな謎の経歴のすごいお方が謎のすごい自己紹介をしつつアイデアの出し方とか商品の考え方とかを話していただいた、本キャンプ中で最もベクトルの異なるぶっ飛んだ講義でした。
「どうしても藤沢でDIY店開きたいからって言うから工具とか材料おいてみたんだよ。そしたら最初の3ヶ月くらいは売れたけどそれ以降全然売れないんだ。なぜだと思う?」
------「一回買ったら長く使えるから」
「違う」
------「一個つくっただけで満足したから」
「違う」
------「なぜです?」
「誰も作れないんだこれが、不器用だから、経験がないから。じゃあ何を置いたら売れるようになったと思う?」
「ジグソーパズル。木のネームプレート制作キット。作った感があるお手軽なものが売れたんだなー」
------(ヒェェ商売わからん)
企業プレゼン
某社のPSIRTチームについての紹介のような話でした。どこまで言っていいのかわからないので省略。DEFCON行ってみたい。
4日目
A6 ハードウェアセキュリティ最前線
トラックA6:オシロスコープで解析中!#spcamp #seccamp pic.twitter.com/42Jfisk16m
— セキュリティ・キャンプ (@security_camp) 2017年8月18日
暗号通信というのがありますね、回路ではこんな感じに暗号・復号化をしています。みたいな講義と、FPGAで暗号用の回路を動かしてみるのでサイドチャネル攻撃してみましょうという演習。
ちゃんと処理の前にトリガ用信号出してくれたり、必要なIPコア以外は書き込まれていないので、電源ラインにつながれたシャント抵抗の電圧をオシロスコープでみると結構処理の境目(消費電料の違い)が見える。なので実際のSoC等で見れるかというとまた話は別なのだが、安易な構成にしてしまうと秘密鍵をこうやって見られることがあるんですよね、というお話。
講師の方が、昔は暗号家だったけど正攻法(数学)で解けない暗号をハードウェアから解いちゃうので数学暗号に飽きて今はこっちやってます、とおっしゃっていたのが印象的。応募用紙にも書いたけど物理攻撃っていいですよね。問題のクリティカルさというか、裾野の広さというか。ソフトウエアだけで完結する話だと思った?みたいな気付きを与えてくれるので好きです。
写真を見た母「やっぱりあんたの部屋とあんま変わんないね」
僕「🤔🤔🤔(こんなたかいオシロスコープとFPGAボードは持ってない)」
B7 組込みリアルタイムOSとIoTシステム演習
トラックB7:松原さんの「組み込みリアルタイムOSとIoTシステム演習」で、チーム戦中、リモートからロボットカーのソフトウエアの脆弱性をついて攻撃をする人たち。 #spcamp #seccamp pic.twitter.com/LtbUhdDI3U
— セキュリティ・キャンプ (@security_camp) 2017年8月19日
ネットワークに繋がったロボット搭載マイコンを使ったプチロボコン的なものとCTFを同時開催するみたいな演習。つまりネット経由でロボットを動かしても点になるし、相手のロボットをハッキングしてダウンさせてもOKみたいなルールです。もう少し詳しく言うと、ロボットにはカメラが載っていて、アイテムの写真を撮ることでも特典になります。
僕のチームは連携ミスと言うか不足と言うかでまったくデフォルトのプログラムのまま挑むハメになったため、開幕早々乗っ取られて壊されたり全くコントロールできなかったりと散々でした・・・・・・
ロボットには80番でHTTPサーバーが立っていて、特定のディレクトリパスにGETを投げると動いたりカメラの画像が取れたりします。全くのデフォルトだと、まず乗っ取られます。
次に、パスを変えたチームが2チームありましたが、コントロール用のディレクトリとカメラのディレクトリは別なので、コントロールこそできずともカメラの画像を盗み見ることはできました。あ、Basic認証?にミスると「ばーかばーか」って表示される仕様にはちょっと笑った。
対策としてかんたんかつ有効だったのはポート番号の変更で、1チームはそれをやっていたのでカメラ画像を盗み見ることもできませんでした。なんというか、レイヤの低い部分から対策しないとだめですねって感じです。
ちなにみ僕が思いついた中で一番効果的だと思ったのは「制御PCをアクセスポイントにしてロボットを直につなげる」だったのですが流石にボツ。
ディレクトリへのアクセスかつHTTPのみということで基本的に無線LANアダプタをプロミスキャスモードにすればどうにでもなるとおもって色々試していたんですが間に合わず、結果カメラの画像をちら見する程度に終わってしまった。残念。
企業プレゼン
某社のSOC職の人の話。女の子落とすのとセキュリティ対策は同じですよ~などと。
サプライズ
今年は年齢の若い順に本を受け取れるというサプライズが。以前はグループワークの上位グループからなどだったらしい。ちなみに、20歳を超える辺りで本がほぼなくなったので、大人は自分のお金で買えということらしいです。
5日目
グループワーク
自分の班は「学生が作るソフトのクオリティが低いのは仕方ない」「改善しようと思うきっかけに恵まれないのが原因」「きっかけを与えよう」みたいな論調で話を展開。ただ、この問題定義までかけた時間と解決方法の考案のための時間の配分はミスったかも。コミュニケーションって難しい。
他の班のも、再度うんこの話だったりイキリストというパワーワードだったり面白く聞かせてもらいました。
成果発表
RPiに移植されたKOZOSにLuaインタプリタを移植して、コマンド一行実行するとシェルに帰ってこないというセキュアな環境を作った話とか、C言語でかけないCPUで超セキュアですって言い張る話とか、熱意✕時間って凄い成果を生むのだなあと。三日間同じテーマで取り組むのも非常に楽しそうで、一回しか参加できないのが惜しいですね。
締めのお話
「情報は発信する人の元に集まる」ということです。身近なところから色々やっていきたい。
他
朝
先週は大学の課題のためほぼ引きこもりで午後起きみたいな生活だったので、突然の6時半起きに戸惑う。2日目の寝起きは少し悪かったけど最終日とかはもうお目覚めスッキリで体の慣れを感じた(日中眠くならないとはいってない)
ちなみに、キャンプ中身体的に辛かった点の一つは「好きなタイミングで仮眠がとれない」です。
水
無限にペットボトル水が飲めるのと、定期的にアクエリアスが配布されました。部屋にこもってると水分取るの忘れるからありがたい。
こうやって時系列で書き出してみると、抜けてることが多すぎて、いかに密度の高い日々だったかを改めて感じますね・・・・・。というわけでキャンプを一通り振り返ってみました。物も物以外も色々貰ったし、頑張りましょう💪💪💪
個人的には、流行りの言葉で言うIoTセキュリティというか、ハードウェアや無線通信みたいなあたりのセキュリティの話が聞きたいですね。今後共何かしらの形で協議会には関わっていきたいところはあります。何かご縁がありましたら皆様よろしくお願いいたしますというところで。
色々細かく書いたけどこれ大丈夫なのかな・・・・・