とてむのログおきば

だらだらとパソコンを触る大学生のブログ

セキュリティキャンプ 2016に参加した -三日目編-

totemです

セキュリティキャンプ 2016に参加したので、その思い出を時系列で書いておこうと思います
これはその3日目のエントリーです

 

感想:   セキュリティキャンプ 2016に参加した - /var/log/totem.log

1日目: セキュリティキャンプ 2016に参加した -初日編- - /var/log/totem.log

2日目: セキュリティキャンプ 2016に参加した -二日目編- - /var/log/totem.log

4日目: セキュリティキャンプ 2016に参加した -四日目編- - /var/log/totem.log

5日目: セキュリティキャンプ 2016に参加した -最終日編- - /var/log/totem.log

三日目

7時に起床しました。ギリギリ朝食に間に合いました

3・4・5 - F OS/VMレイヤで実現する圧倒的高速なパケットフィルタ/サンドボックス

各講義は基本的に4時間で行われますが、この講義は
午前は8:30~12:30、午後は13:30~17:30 、夕方19:00 ~ 20:25 を全て費やします
圧倒的拘束です

6人に対して講師が2人、チューターが1人ついてくれる豪華な講義です

この講義ではまずeBPFを用いてサンドボックスを作るグループとIntel DPDKを用いるパケットフィルタリングサーバーを開発するグループに分かれます。

Intel DPDK はカーネルを挟まずに、直接パケットの読み書きをする技術で、高速にパケットを取り扱うことが出来ます。

僕はサンドボックスを作るグループを選択しました。サンドボックス側の講師は@ybachi 忠鉢先生で、DPDK側はСЮУ先生です

ちなみにDPDK 2人、サンドボックス 4人の構成でした

サンドボックスとは何かと言いますと、

コンピュータセキュリティ技術において、 サンドボックスsandbox)は、外部から受け取ったプログラムを保護された領域で動作させることによってシステムが不正に操作されるのを防ぐセキュリティ機構のことをいう

wikipediaに書いてあります。この「保護された領域」を実現するためにアクセス制御の技術を用います。


eBPFとはenhanced Berkeley Packet Filterの略で、元々は名前の通りパケットのフィルタリングに用いられる技術です。

BPFは最近のLinuxではだいたい有効になっているみたいです。
eBPFを用いるとユーザーランドにコピーすることなく、カーネルランドでパケットをフィルタしたりすることができます。

この技術を用いて、アクセス制御をカーネルランドで行いサンドボックスの高速化を図るという講義です(理解が浅いので間違ったことを言ってるかもです💦💦)

講義ではシステム側とポリシー側に分かれて開発をしていきます

ポリシー側ではDSLからeBPFを吐くためのコンパイラを開発し、
システム側ではeBPFを呼び出したりして実際にアクセス制御をする

ということをやります

ポリシー側とシステム側の2人ずつにわかれてやりました。

ポリシー側の参加者は、Prologの処理系を書いたりしてる方と人工知能や言語処理をされている方で、非常に強い感じでした。

僕はシステム側に所属しました。ペアの方がLKM(Linux Kernel Module)の開発経験のある方で色々助けていただきました。

午前中はeBPFやサンドボックスの説明などをしていただき、実際にLinuxカーネルをビルドするところまでやりました。ビルドを放置しながらお昼に向かいました

昼食

おいしかった。ビルドが気になって、さっさと演習室に戻ってしまいました。

3・4・5 - F OS/VMレイヤで実現する圧倒的高速なパケットフィルタ/サンドボックス

ビルドが終わったあとは、ポリシー組・システム組共に実際に簡単なLSM(Linux Security Module)を開発して組み込んでビルドしました

これはいわゆるHello WorldみたいなものでLSMがロードされる際に文字列を出力する簡単なものです

それを作り終えた後は、実際にアクセス制御について触れていきました

丁度講義を見に来ていたTOMOYO Linux というLSMの開発者の半田先生に色々聞きながらLSMを開発できるというめったにない経験ができました

本当にありがたいことだと思うのですが、正直勉強不足でせっかくの機会を活かしきれていないという状態だったので、来年以降挑戦される方は絶対軽くLSMやカーネルを触ってみた方がいいと思います

実際にファイルopen時にhookしてopen対象のファイルのpathに応じてアクセスを拒否するとこまでやりました

夕食

夕食はこんな感じでした。

おいしかったです。

鍋は高レイヤに肉、低レイヤに野菜という構成で、高レイヤから食べ始めた人は後で困っておりました。

キャンプでは「低レイヤからはじめると、高いレイヤに登りやすいけど逆は難しい」、「バイナリアンはだいたい何でも出来る」みたいな話を聞いていたのですが、やっぱり目につく高レイヤから手をつけるのではなく、低レイヤまで知ってから高レイヤに挑む方がいいということは何もPCに限った話ではないですね。

ご飯を食べたら3・4・5 - Fのメンバーは瞬間的に部屋に戻って行きました。

夕食は17:30からで、夜の講義は19:00スタートだったのですが、事務局の方に無理を言って18:00に演習室を開けていただいて、18:00から存分にカーネルを触って休憩していました。

 

3・4・5 - F OS/VMレイヤで実現する圧倒的高速なパケットフィルタ/サンドボックス

午後の後半からファイルをopenするプロセスのpathに応じてファイルのアクセス制限を行うことをしていたのですが、どうやらコードが間違っていないのに、きちんとアクセス制限ができないという問題に陥っていました...

どうやら調べてみるとmake installをしてもLinux カーネルが更新されていないという状況でした。

vmlinuzのファイルのタイムスタンプも更新されているのにカーネル自体は更新されていないという形で、講師の半田先生に聞いてもうまく解決できず闇でした

これはよくわからないので今後なぜか調べたいと思っています
結局ここで詰んでしまって講義の時間的に終わりを迎えてしまいました

でもカーネルを触る楽しさを知ってしまったので、これからも継続的に触っていきたいと思います

この講義は弱者だと圧倒的に時間が足りないですけど、LSM楽しいのでオススメです

このあたりの内容について少なくとも個別に2回ブログ書こうと思っているので忘れていたらつついてください

もし来年似たような講義を受ける方がいたら、PCの容量には気をつけておいてください。VMカーネルビルドして、スナップショット撮ってからインストールみたいなことをするのですが、元々PCの空き容量が少なかったこともあって厳しい感じになりました。

企業プレゼン

さくらインターネットさんのプレゼンを聞かせていただきました。
内容は書いていいかわからないのでネットで公開されていること以外は書かないでおきます

正直ネットワークの知識が不足していてきちんと理解できない面があったのでOpenFlowを中心にネットワークについてきちんと勉強し直そうと思います。

きちんとわかってないのでおそらくですが、

knowledge.sakura.ad.jp

このページに書かれていたことについてプレゼン中触れていたと思います

ぜひ見てみてください

グループワーク

この日のグループワークでは色々な方々にお話を伺いました。事務局のIPAの方々や、キャンプの写真を撮ってくださっていた個人カメラマンの方、キャンプ事務局の日通旅行の方などにお話を伺いました

グループワークが無ければ、もしかしたらお話をさせていただく機会がなかったかもしれないのでありがたい限りです

キャンプを支えてくださった方には本当に感謝しております

コンビニ

いきました

CTFで優勝した副賞として3000円のQUOカードをいただいたのですが、チームメンバーの数+1いただいたので、みんなで食べるようにお菓子をたくさん買い込みました

就寝

寝る時間がさらに若干遅くなりました
ちょっと0時過ぎになりました

3日目はこういった感じで終わりました