実は昨年の夏、サイボウズラボユースという制度を利用させていただいて、3週間程度サイボウズラボのオフィスに出社していました。
サイボウズ・ラボ:人材募集:サイボウズ・ラボユース
http://labs.cybozu.co.jp/recruit/youth.html
何をしていたかといいますと、@herumi さんや @takesako さんにご指導頂きながら、アセンブリ言語をずっと読んでいました。
XSSをはじめとするWebアプリケーションの脆弱性はそれなりに知っているつもりですが、バッファオーバーフローをはじめとするメモリ関連のバグは全然理解していませんでした。
これまでも、アプリケーションが偶然クラッシュするたび、そういった方面への関心がでてきて、アセンブリを読めば何かわかるのかなあと思って、読んではみるけど、無慈悲なバイナリの羅列に圧倒されるということを繰り返してきました。
ただ、アラートがとび出すのと電卓がとび出すのはどこか似ており、その辺の何かが僕を刺激するのか、いつか脆弱性を利用して電卓を出したいとずっと思っていました。
ラボユースでは、作業中偶然クラッシュが起きたのをきっかけに、一からアセンブリ言語を勉強してみようということになりました。結局そのクラッシュはおそらく悪用できないなんだかよくわからないものでしたが、ちょっとした疑問にもすぐに答えてもらえる環境で過ごせたことで、大分前進したと思います。
また、その後、別のソフトウェアで偶然悪用可能なクラッシュが起きました。このクラッシュは最初の時点でいかにも悪用できそうなもので、電卓を起動できるかもしれないという思いと、ヤバい友人に実際に電卓の起動ができることを見せてもらったことで、急激に僕の関心が加速しました。
そこからの学習スピードは自分でも驚くほど早いものでした。ついには自分の手で実際のアプリケーションの脆弱性を使って電卓を起動できたことは大きな感動でした。
僕も数々の失敗をしてきましたが、やっぱり人生は偶然のクラッシュに転機があるものなんだなあと思います。(深み)
さて、昨日はそのラボユースの締めということで、成果を発表してきました。以下が資料です。
メモリの状態を観察するのは自分もそれほど慣れていないので、自分の頭の中を整理するようなつもりで動きのあるスライドにしました。また、これで、わからない人にもなんとなく雰囲気がつかめる作りにしたつもりです。
ただその分スライドの枚数が多くなってしまったので発表では焦って最初から大分早口になってしまいました。聴き苦しい発表であったと思いますが、聴いて頂いた皆様、ありがとうございました。
到底人に説明できるほど理解していると思えないので、勘違いしている部分や荒い部分があるかもしれません。それなら、こういう方法でも突破できるんじゃね?みたいなバイナリアンのご意見ご感想お待ちしております。
他の皆様の取組み、発表も素晴らしかったです。
何をやれという訳でもなく、やりたい人の好きなことを支援してくれるサイボウズラボユースという制度は研究支援の理想的な形だと思います。
参加させて頂きありがとうございました。
サイボウズ(報奨金)にもラボにもお世話になりっぱなしです。