いうていけろ

hideo54のブログ

トップページ
技術

セキュリティ・キャンプ全国大会2016に参加することになった

2016年8月9日

この記事は最終更新から半年以上経過しており、内容が古い可能性があります。

イベント参加セキュリティ・キャンプセキュリティイベントIPA応募用紙体験記

タイトルそのままですが、セキュリティ・キャンプ全国大会2016に参加することになりました。選考を通過できてとても嬉しいです...! 各講義も面白そうなものばかりで、とても楽しみにしています...!

さて、せっかくなので、(めっちゃ遅くなりましたが)応募用紙の概要を晒したり、取る講義を晒したりしたいと思います。

応募用紙

応募用紙は、締め切り当日の0時に書き始めました。徹夜で書いても最後まで終わらず(登校時点で3問残っていた)、学校の授業中に紙に下書きして、休み時間に文字起こしして、放課後にまとめて提出する、というハードな応募をしていました。

せっかくなので、応募用紙にどのようなことを書いたのかを公開しておきたいと思います。さすがに原文そのままは恥ずかしいので、概要のみに触れることにします(ゆうてこれでも恥ずかしい)。原文ままを読みたい後輩などがいたら、オフラインで声かけてくれたら見せます。

共通問題1

あなたが今まで作ってきたものにはどのようなものがありますか? いくつでもいいので、ありったけ自慢してください。

黒歴史に触れない範囲でなるべく多く列挙したら、箇条書き14個になった。まあどれもしょぼいんだけど、いろいろやってるよということが伝わればいいなー、と思って書いた。(RPi工作物語が4つ、iOS系が5つ、Web系が6つ)

僕は開発したものをイベントにこじつけることが少なくないので、それらについては各項目に「xxの時に作りました」的な補足を書いた。

それをどのように作りましたか?ソフトウェアの場合にはどんな言語で作ったのか、どんなライブラリを使ったのかなども教えてください。

共通問題1のリスト箇条書きと番号を対応させ、それぞれについて、見所をわりと詳細に書いた。 また、聞かれてないけど、最後には全体の特徴(=日頃の自分の興味)についても書いた。

開発記のブログなどあれば、それも教えてください。コンテストなどに出品したことがあれば、それも教えてください。

このブログについてだけ書いた。GitHubのURLも載せようか迷ったけど、大したもの置いてないので、載せなかった。まともなリポジトリを設けている人は載せた方がいいと思う。

共通問題2

あなたが経験した中で印象に残っている技術的な壁はなんでしょうか?(例えば、C言語プログラムを複数ファイルに分割する方法)

また、その壁を乗り越えるために取った解決法を具体的に教えてください。(例えば、知人に勧められた「○○」という書籍を読んだ)

その壁を今経験しているであろう初心者にアドバイスをするとしたら、あなたはどんなアドバイスをしますか?

「えっ…そんなん山程あったやろうけど覚えとらんし…どうしよ…」と思いつつ、この用紙を書いた時に作ってたアプリでデータ処理関係で悩んだことがあったので、 「過去に経験した技術的な壁は数え切れないほどあるように思いますが、最近の印象に残った壁の一つとして、次のようなものがありました。」 と前置きして、それについて書いた。

他、(明らかに問題では聞かれてないんだけど)自分の経験から思う、一般的に問題が起こった時にどう対処すべきかについてノリで書いてしまった。(絶対「聞いてねぇ…」って思われた気がする)

共通問題3

あなたが今年のセキュリティ・キャンプで受講したいと思っている講義は何ですか?(複数可)そこで、どのようなことを学びたいですか?なぜそれを学びたいのですか?

講義一覧を見て、自分の興味上アプリケーショントラックや検知トラック、集中講義の一部に興味があったので、それを書いた。 理由は、まあ一言でいうと「興味があるから」なんだけど、自分のレベルとかの話も合わせて書いた。

あなたがセキュリティ・キャンプでやりたいことは何ですか?身につけたいものは何ですか?(複数可)自由に答えてください。

  • 自分の作りたいものを安全に作りたい、その上で自学自習よりも効率的で質が担保されている環境で、集中して勉強できる機会が魅力的である
  • プロとの交流、およびそれによる興味の範囲の拡大を期待している

みたいな感じのことを書いた。

選択問題2

Googleは、自社のサービスのセキュリティを高めるために様々なことを行っています。ブラウザからGoogleの検索サービス( https://www.google.co.jp/ )にアクセスを行い、どのようなセキュリティ施策が行われているかを見つけなさい。ブラウザは任意のもので構いません。ブラウザのどういった点からどういった施策を行っていると判断できるのか、その理由も含めてできるだけ多くの項目を回答してください。拡張機能を利用しても構いませんが、ブラウザ以外の方法でアクセスしてはいけません。

ChromeのDeveloper Toolsを使えばいいやと思って、それで得た情報を分析したりして書いた。

大きく分けてTLSとHSTS、QUICについて書いた。QUICは正直知らなかったので、調べて書いた。

TLSは、Developer Toolsを見てわかることのうち、特徴的なものだけ書いた。初めてGoogleのページでこれを見たけれど、意外と知らなかったことが多くて驚いたので、それらについて書いた。たとえば、証明書の有効期間が短いとか、楕円曲線公開鍵(知らなかったので調べて書いた)を使ってるとか。

なんかいろいろ調べて書いておきながら、「この用紙見る人はここに書いたこと知ってるやろうし書かない方がいいのかな…?」とも思ったけど、自分が何を知らなかったかというのと、それをちゃんと調べてみたよというのを示したかったので、文末に「自分の理解を示すために書いた」みたいな注釈を書いた。

送ったあとに「ヘッダーの話するの忘れたー!!」ってなって少し後悔したけど、まあ受かってよかった。

選択問題6

IDとパスワードを入力してユーザの認証を行うWebアプリがあります。あなたがこのアプリに対してセキュリティテストを行う場合、まず、どのようなテストをしますか? なぜそのテストを選択したのか、その背景や技術的根拠と共に記載してください。アプリの内部で使われている技術やシステム構成に、前提を置いても構いません。

「うわ…曖昧すぎてSQLインジェクションしか思い浮かばん…」って思ったけど、よく見たら「 まず 、どのようなテストをしますか?」って書いてあったので、「やったー!」って思って、「1つでええんやな?」って言った後にSQLインジェクションについてのみ書いた。(1つしかわからんけど2つ以上知っているように見せる高等テク)

「理由ゆうてもな…」って感じだったけど、「内部でSQL文実行される仕様なら(たぶんそう)、エスケープ漏れがあればいいね」みたいなことを書いた。

選択問題7

あなたが管理するネットワークに悪意ある第三者が存在しない事を証明する方法を思いつく限り列挙してください。なお、条件として物理的にアクセスされる可能性を想定してください。

めっちゃ必死に(授業中)2hくらい考えたんだけど、「(ケースによるけど大抵は)無理やろ。w」という結論に至ったので、そういう結論に至った思考過程を書いて、「こんな回答でごめんな!w」みたいなことを書いて〆た。(ごめんなさい)

どういう答えが想定されているんだろう。作問者に会ったら聞いてみたい。

選択問題11

2015 年に発行された CVE の内、あなたが興味を持った”サーバに存在した”脆弱性について1つ提示してください。その脆弱性を悪用した攻撃を検知する方法について詳細に記述してください。また、興味を持った理由を記述してください。

正直な話、時間がなかったので「SSHあたりの脆弱性がいいな〜」と思って調べたら、最初にヒットしたCVE-2015-5600を見て「こんな単純な攻撃で済むような脆弱性がOpenSSHにも残されてたんやな〜」と割りと驚いたので、それについて書いた。

まとめ

以上のように簡単にまとめてみると、お察しの通り、ノリはだいたい適当である。(結果発表まで落ちる気しかしなかった理由が伝わっただろう) ただ、考えるのはだいぶ大変だったし、実際の全文を書くのにめっちゃ時間はかけたし、やる気が伝わってくれと思って書いた。

徹夜で書いてる時は終わる気がしなかったし、途中書くのやめて寝ようかとも思ったけど、睡魔よりも行きたさの方が勝っていたので、必死に起きて書いた。(本当に良かった) それでも朝まで終わらなかったので、授業中にひたすら考えて、内職EASYな授業では裏紙に下書きするなどした。

まあそういう感じで、応募用紙送った時は「ぐだぐだだけど、ここまで頑張ったんだから受かってもええやろ」と思ったし、(結果発表までだんだん落ちた気にしかなってなかったけれども)受かって本当に良かった。

とはいえ、受かってこれから頑張ろうってところですので、引き続きより一層頑張りたいと思います…!

取る講義

時間割: https://www.ipa.go.jp/jinzai/camp/2016/zenkoku2016_jikanwari.html

このうち、選択講義については、

  • TLS徹底演習
  • Webアプリケーションの脆弱性の評価と発見
  • オンラインゲームアタック&ディフェンスチャレンジ
  • サーバ運用におけるパスワード管理
  • 次世代プラットフォームのセキュリティモデル考察
  • ID連携基礎

を取ることにした。

正直どれも取りたいものばかりで非常に迷ったし、この機に全く知らない低レイヤーについて学ぶのも良いかもしれないとも思ったのだけれども、結局、自分の興味に近いアプリケーショントラックをメインに取ることにした。

トラックが固定されているわけではないため、他の講義を取った人やその講師から空き時間に話を聞くこともできるらしく、ありがたい。 (個人的にこの選択講義制が割と気に入ったので、今年の部の夏合宿でも選択講義制をとることにしている。)

全体のまとめ

楽しみ。

余談

東京行く機会を与えてもらったついでに、いつもどおり(?)先輩方の家を泊まり継ぎながら、コミケ行ったり遊んだりします。 8/7(日)夜から8/15(月)までいる予定。8/15(月)は今のところ暇なので、何かあれば紹介してください...!