datchの日記

気がついたら社会人。気になる技術的なことについて少しずつ書いていけたらと思っております。

セキュリティミニキャンプに参加しての感想

先週、インターンTA業務終了直後にセキュリティミニキャンプに参加してきました。
どこまで書いていいか分からないので、あまり深くは触れない程度に書いておきます。

セキュリティミニキャンプとは?



IPAが行っているセキュリティキャンプセキュリティ・キャンプ実施協議会)通称「セキュキャン」の地方版。

その名の通り、学生(ただし、博士過程は除く)を対象にセキュリティスペシャリストの発掘・発展を目的としたイベントである。
最近では、セキュリティ・キャンプの応募用紙が、パケット解析ツールを使って手に入れるという、始まる前からレベルの高さを示しており、一時期話題になったのは記憶にあたらしい。
右の記事はパケット解析ツールを使わずにやる、という技を見せて話題になったページ。(セキュリティキャンプ 2014, Network クラスの Write-up | みむらの手記手帳
全国大会の方は4泊5日で開催されており、クラスもいくつかに別れているので、それぞれの分野でセキュリティの知識を深めることが出来る。

地方版のミニキャンプは既に開催時からある程度の分野が決められており、日数も一泊二日と少ない。
今回自分が参加したミニキャンプ in 東北ではWebアプリケーションセキュリティに力を入れている様に感じた。*1
さすがに地方版ということもあり応募用紙も普通にダウンロードできるし、書ける欄もそこまでなかったので、応募時からヤバいという感じではなかった。
http://www.security-camp.org/minicamp/tohoku2014.html

参加する動機



動機は2つある。

1つ目は単純な技術的興味である。
セキュリティは守る方法をただ丸暗記することは攻撃する側と比較すると簡単(最近の言語なら便利な関数が用意されており、その関数1つを使用するだけ)で、フレームワークやライブラリなどが解決してくれる場合も多い。
ただし、実際に理解するとなるとブラウザの挙動や文字コードやハードウェアの特性や原理など、それぞれの分野でまったく異なる範囲の知識と深い理解が求められる。
それが単純にエンジニアとして面白いと感じる、という理由が一点。

2つ目は自身の内定先の会社がWeb系と呼ばれる業界である、という点である。
インターネットでサービスを提供するWeb系のエンジニアにはWebアプリケーションのセキュリティが切っても切れない関係になっている。
Web系の業界は、私の個人的な解釈ではあるが、他のIT業界に比べて技術の流動性が高く、非常に変化が激しい業界だと思っている。
また、求められる知識の幅も広く、ネットワークの通信からサーバの構築、プログラミングなど、中間的なレイヤーから高いレイヤーまで触れなくてはならない。
セキュリティという分野もその中に含まれており、せっかくの機会だったので参加しようと考えた。

また、小さな理由ではあるが、自身がセキュリティという分野に興味を持ち始めたのは一年前であり、今年参加しようと思った時には年齢制限により既に参加できなくなっていた。
そんな時に舞い込んだチャンスだったというのもある。

内容



ミニキャンプでは二日に分けての開催だったので、日付毎に書く事することになる。

一日目

一日目は合宿組以外にも社会人などが参加した。
講演は基調講演とWebセキュリティ講義に分かれていた。
基調講演では、現在のIT業界で陥っている危機や(MACアドレスを使った行動パターンの把握とか)、今後どのような危機が訪れているのか(例としてナノマシン)という予測の話があった。
後半の基調講演では、セキュリティ・キャンプという事例を通して、情報セキュリティに関してどのようにアプローチしていくべきか、どのような人材を育成・発掘していくかなどの話があった。

一転、Webセキュリティ講座ではスマートフォンHTML5でのセキュリティ問題を取り上げた。
講演者は西村宗晃(nishimunea)さんで、主にソニーでのアプリケーションからWeb,スマホアプリのセキュリティまで幅広く担当している。

スマートフォンではハードウェアではなく、アプリケーション側でのセキュリティに焦点を当てた話をしてくれた。
マルウェアの定義やリスクウェアに対する説明、何故スマートフォンが狙われるかなど、理由や背景から徐々に詳細なセキュリティの話に移っていったので、聞く側としてもモチベーションを保てる事が出来た。
技術的なセキュリティの部分では、SSL/TLSの実装不備やアクセス制御不備などのスマートフォン単体でも発生する可能性のある脆弱性と、ハイブリットアプリで外部サーバとのAPI連携などをCORDOVAを通じて行っている時のブリッジ機能に着眼した脆弱性についての話があった。

HTML5について、そもそもHTML5とはなんなのか?サーバとの非同期通信による制限と、SOPによる外部サイトへのリソースの取得の回避策によって脆弱性が作りこみやすい問題点などにも触れ、CORSという仕組みによる防ぎ方や、WebSocketの通信の接続元制限の方法について講義してくれた。
他にも二日目の実習で詳しく触れるXSS脆弱性について、一体どのような問題が発生するのか、DOMBasedXSSとその対策、CSPを利用したXSS攻撃の脅威を小さくする方法について触れた。

夜の部では合宿組のみの参加で、竹迫さんが実際のプロダクトを作っているときに発生した脆弱性の発見と、その時に起きた事件、バグハンターについて講演してくれた。
また、今年度のキャンプ卒業者である@llamakko_cafeさんがどのようにバグハンターとして活動しているかなどの話を聞くことができた。

二日目(合宿組のみの参加で学生限定)

Webセキュリティ演習では事前課題で与えられた「OreOreSNSLite」というサイトの脆弱性を発見する演習をチームで行った。
事前に脆弱性があるかを調査していたため、チーム間でどのような脆弱性を発見しているか、どこら辺が臭いか、という話し合いをして最後に各班毎に発表を行った。
その後、答えあわせがあり、仕組み的な部分での脆弱性()も
午後の攻撃検知システムの作成は、ディレクトリトラバーサル攻撃について触れ、どのようにそのようなアクセスを検証するか、というのをカーネルレベルで対応するという実習を行った。

参加しての感想



基本講演の会場前にセキュリティキャンプのスライド資料がおいてあったので、それを読みたかったのだが、講義が始まってからは休憩時間も長く取ることが難しいのか、その資料にあまり目を通すことが出来なかったので、事前に触れてくれていると嬉しかった(コピーできない資料だったので、やはりそこらへんは慎重に扱っているのかな?)。
一日目の基調講演では近年のユビキタス化に伴い、プライバシーの壁が徐々に取り払われており、この状態とどのように向き合っていくべきかという事について考えさせられた。
メインで聞きたかったWebセキュリティでは自身があまり理解をしていなかったDOMBasedXSSや、最近触れていないスマホのセキュリティ事情に触れることが出来てよかった。
欲を言うならもう少しDOMBasedXSSの詳細について知りたかったが、やはり時間が限られている中ではそこまで詳細に触れられるわけでもなく、仕方のないことだとも思う。
また、実際の抗議とは関係ないがLTで大学一年生がCTFに対して熱い思いを語っており、こちらも刺激を受けたのはよかった(今年卒業する身なので参加できないが)
夜の部は、バグハンターとして稼いでいる@llamakko_cafe大先生がどのようなサイトにお世話になるか(サイボウズ、HackerOne)の情報を知れ、今年のセキュリティキャンプに参加したばかりでそこまで高いレベルで脆弱性の発見などを行っており、直近の目標となるイメージを作れるように今年のキャンプ卒業生を連れてきていただいたことに感謝している。

また、寝る前に事前課題で与えられた脆弱性を発見する問題が思いのほか周りが手間取っていることを知り、驚いた。
やはり、Webセキュリティに関しては多く触れている自分よりも苦手なのだと感じたが、バイナリやネットワークに関しては周囲の人が意気揚々と話し、自分は縮こまっている感じで、総合力としては周囲の生徒の方がレベルが高く、年の差があるにもかかわらず将来有望な子が多く、それらも刺激になった。
中には中学生の参加者もいて、言語の開発を行っていると聞き、年々エンジニアの実力が向上していると感じつつも、自分も負けてられない!と思い、かなりの刺激になった。
バスで移動する時には、西村さんが隣でソニーのセキュリティについての話だったりと色々聞けて、普段は聞けないような話だったので非常に貴重な体験をさせてもらったと思う。

二日目のWebサイト脆弱性を探す演習は、探索時間や答え合わせなどもあり、しっかり演習になっていると感じた。
しかし、午後の攻撃検知システムはアセンブラカーネルの知識などを要するもので、説明する時間もなく、ほとんど「おまじない」という感じで演習が過ぎてしまったので、せめて復習するためにもスライドのデータか紙があると嬉しいと感じた。

終わりに



二日間という短い時間でこれだけの内容を詰め込んだ講義を考えることや、はるばる遠くから来ていただき、セキュリティキャンプ実施委員会の方々に感謝を述べたい。
自分とあまり年の違わない人たちが、高い意識を持って、情報セキュリティという分野でがんばっているのを見れるので、セキュリティに興味があるが、周囲の友人に興味のあるひとがいない場合はぜひ参加することをお勧めする。
当たり前だがミニキャンプで触れられる技術は、セキュリティのほんの一部であり、自身でこれからもセキュリティに関しては学び続ける必要があるだろうと感じている。
仕事の関係上、触れられるのはWebアプリのセキュリティくらいなのだが、ベースの知識としてネットワーク分野のセキュリティにも徐々にシフトしていければと思う。

*1:事前課題もWebアプリケーションだったので