トリコロールな猫/セキュリティ

思いついたことをぼちぼち書いてます。

SecHack365の成果発表会に行ってきました

3月8日に秋葉原で行われたSecHack365の成果発表会に行ってきました。

sechack365.nict.go.jp

最初の3つの発表しか聴けませんでしたが面白かったのでメモ。

QEMUによる自動バイナリ防御機構の開発

セキュリティ機能をつけたQEMUという感じでした。リターンアドレスを保存しておいて実際の戻り先と比較し違っていたら終了させるとか、printfの%nを他の文字列に置き換えるとか(フォーマットストリングバグか!なつい!!*1)、ダブルフリーやuse-after-freeの防止、GOTの書き換えを検知・・などなど、怒涛のスライド177枚。

個人的には古きよき?脆弱性からGOTやらヒープ領域やら一通り勉強できていいなあと思いました。その辺の仕組みと実装を本にまとめたら売れるかも・・いや私が欲しいだけですが・・。

デモは上記のバグを持つプログラムを実行してもcore dumpさせないというものでした。考察にもありましたがハニーポットによさそうですよね。
アカウントは非公開でって最初のスライドにあった気がするのでGitHub等のリンクは控えます。

NFCとWebUSBを用いたWebアプリ用認証システム

公式サイトでは上記のタイトルになっていましたが、当日の発表タイトルは「マイナンバーカードで描くCivic Techの未来〜Webで使える認証機能を作ってみた〜」でした。
Civic Techとは、市民がテクノロジーを活用して行政サービスの問題やや社会課題を解決する取り組みのことだそうです。WebUSBというのは、ChromeなどのブラウザからUSBデバイスに接続するためのAPI。このAPIを使い、カードリーダーにマイナンバーカードをおいてPINコードを入力することで、パスワードレスにWebサイトにログインする認証機能を作ったということでした。忌避されがちなマイナンバーですがこういうところで活用できるといいですよねえ。

WebUSBでリーダーを制御するドライバがないので作りました、という潔さが良い。

github.com

他の成果物も以下で公開されています。

www.npmjs.com

Exgdb ~GDBを用いた動的なバイナリ解析の効率化~

マルウェアやシェルコードをgdbを使って解析する人には普通に嬉しい拡張機能です。GitHubで公開されています。

github.com

出力をgrepできたり(CALL命令を抜き出すとか)、例えば以下のようなアセンブリ言語

mov QWORD PTR [rbp-0x20],rax

の[rbp-0x20]に何が入っているのか表示するとか。(常に表示させるモードもある)
やだ便利。

プラグインの管理用コマンドも充実。こういうの細かいとこだけど大事だよね。例えば新たなプラグインをインストールするときはこんな感じ。

$ exgdbctl install https://github.com/anybody/anyplugin


手動でできることを自動化しただけでしょ?新規性は?という仮想ツッコミに対し、自動化だって新規性だし!(私もそう思う)でも文句いう人のために新規性あるものも作ったよ!というのがとてもよかったです。学会によっては自動化も新規性と解釈されるそうなので、論文を書くならそういうところに出すといいかも?

感想

「作りたいから作った」「作ってみたら楽しかった」「褒められて嬉しかった」「だからもっと頑張りたい」という、忘れていたものを思い出させてくれるような健全な発表会でした。とはいえ学業や仕事と並行してこれをやり切るのは相当大変だったと思います。こういう環境があることがうらやましい気もしますが、自分が若い頃にあったとしてもやり切れたかどうか・・。内容も話し方も三者三様でしたが、みなさんとっても発表が上手で日本の未来は明るいなあとなんか元気をもらいました。

なお、当日の様子は以下のTogetterにまとめられています。
togetter.com