716-694-0962

セキュリティ・キャンプフォーラム 2015 で発表した内容です。

今回のセキュリティ・キャンプの成果の中でも Qt のバグ修正パッチは最も遅かったものの多くの人に役に立ったと思います。6716787584

記憶というものは…

先ほどの記事を投稿して感じたことを、怠け癖のある自分への戒めの意味も込めて投稿します。

人間の記憶って本当に頼りないですね。一生この経験、教訓を忘れないぞ!と心の中で固く誓っても自分のメモを見ない限り思い出せないことって結構あるのですね。だからブログは書くべきです。そのほうがより豊かな生活が送れます。

914-368-0043

luyikei です。今頃になって参加報告です… 夏に書いたまじめな感想をアップします。少し変更を加えています。実際使った技術についての詳しい記事は後々公開します

事前学習は結構ヘビーで密度の濃いものだった。システムコールなどを直接利用したプログラミングをしたことがなかったので苦戦したが結果的に非常にためになった上に、楽しめたと思う。

1日目 都内に住んでいるので朝起きてすぐに出発した。やはり 1日目なのである程度は緊張した。しかしイベント関連では私の中ではそこまで緊張していない方に入る。おそらく、同じように志して来た人たちで集まっていて、事前学習などで結構すでにお互いのことなどを知っていたからである。実際私はセキュリティキャンプで想像以上の親交を作れた。 1 日目は全体講義が中心だった。その講義が刺激的でこれまでセキュリティに疎い私にとってはセキュリティという言葉が広い意味を持つものだと思い知らされた。1 日目にこういった全体講義を設けることは非常に良いことだと思った。  空き時間や食事の時間で友達との交流も非常に重要だ。今から思うと少し自分はシャイだったと思うが、積み重なった名刺を見ると、それほど沢山の人が居たんだなと思った。

2日目 専門講義と BoF がメインだった。専門講義は基本的に私の好きな Qt を使って開発するのですが、セキュリティキャンプでは普段使わない低レイヤーな機能を使い、沼にはまっていくようであった。(例えばシステムコールなどである。)。とはいえ私が一見それを不快に思っているように他の人は見たかもしれないが、本心ではいつも高レイヤーで開発し、マンネリ化しているのでこの低レイヤーなサンドボックス沼を歓迎し、大いに楽しんだ。特に seccomp-bpf を使用したサンドボックスに成功した時、ものすごく感動したのを今でも覚えている。 BoF は外国人の方の講義を聴いた。講義は英語だったができるだけ聴きとろうと努力した。主にセキュリティ関連の会社で働いてる時に遭遇した面白いセキュリティのインシデントの話である。この講義で始めてセキュリティの仕事に魅力を感じた。プロの原因追跡の能力、分析力には圧倒された。これほど刺激になる発表も少ないだろう。

3 日目 専門講義とグループワークがメイン。専門講義は同じく低レイヤーの世界で楽しんでいた。主にやっていたのは自分で開発してマルチプロセスのブラウザーでサンドボックス化するということ。 Qt のバグに遭遇し少し困惑したが、それもいい経験になったと思う。結果的に当初の想定よりも進捗を出せたので非常に良かった。この頃になってセキュリティキャンプに慣れはじめ、居心地よくなってきた。グループワークは全くテーマが思いつかず結局全グループの一番最後ぐらいに決まったのにも関わらず、「セキュアな育毛」になってしまった。結局これをどう発表に仕上げるかで色々と苦労したが逆にそれでグループに一体感が生まれた。

4日目 CTF がメイン。妨害コンテンツは自分にとっては辛かった。それよりも自分に解ける問題があったことが意外だった。 SQL インジェクションは結局は解けなかったがファイルの中身を見れる段階まで至れたのは自分でも驚いた。もちろん私のように CTF の問題にに直接的に応用できるような技術をみんなが学んでいるわけではないのである程度難易度を低くしていることがわかるが、CTF に興味をもたせる/持つという点でいいと思った。私が思ったのは CTF は確かに知識も重要だがそれ以上に検索能力も問われているという点だ。わからなくてもちゃんと調べれば解ける可能性があるので非常に楽しめた。

5日目 成果発表がメイン。グループワークの発表はどのグループも独創的でよかった。私達のグループは「セキュアな育毛」というしょうもないテーマだったがうまく内容を作りこめたと思う。また、ほかのクラスの成果発表で初めて他のクラスがここ4日間で何をやってきたかというのがわかった。ほかのクラスは最初は興味がなかったが発表を聴いて少し興味が出た。結果的に家に帰った後、講義資料を見ながら少し他のクラスの内容を自分で軽く独学した。5日間で友達とも仲良くなり、講師やチューターとも密接な関係が作れた。それが5日目で名残惜しい感情を引き立てることとなったのだが、それは今後のモチベーションとなるように(友達も頑張っているし、自分も頑張らねば!講師のような技術力をつけたい!といったような)努力を続けたい。

まとめ  事前学習も含め非常にいい経験になった。もちろん技術的に力がついたの当然だが、何よりも親交が作れたこと、それがモチベーションになったこと、またマンネリ化していたプログラミングの新たな楽しみ方を知ることができたことなど、どれも普通に家で勉強しているだけでは手に入れることができない貴重なものだ。定期的にこういったイベントに参加し、交流する大切さを知ってよかったと思う。 また、私が個人的に思ったのは講義資料とかは無断で配布してはいけないが、自分でつけた知識は広めることが許されるのでぜひ情報を発信していきたいと思った。なぜならこのセキュリティという分野は情報が少なく、私も参加する前まではよくわからなかったので、できるだけ皆さんに重要性や楽しさを知ってもらいたいからである。「セキュアな育毛」のような簡単な喩え話とかでも、本格的な技術でもどんな形でもいいので情報を積極的に発信していきたいと思った。 最後に、講師の皆さん、チューターの皆さん、友達の皆さん、運営スタッフの皆さん本当にありがとうございました。また、セキュリティキャンプに応募するか迷っている人は迷わず応募してください!絶対いい刺激、モチベーションになるはずです!セキュリティキャンプは個人的には 5割 ぐらいは人との交流が閉めていると思います。これが非常に楽しく重要なのです。

 

Django の MultiWidget を二重で使っていて、初期値が ManyToMany の時の注意点

Django の MultiWidget を使用し、instance の初期値が Many To Many の時、 decompress 関数で以下のエラーが出ることがあるかもしれません。

さらにデバック画面の Local Vars の value の Value が [2, 3 ,4] のように期待している Queryset ではなく Int のリストだったら Django の仕様に躓いている事になります。

(443) 823-5596

こちらの model_to_dict 関数を見ていただければわかりますが Many To Many の時の処理のコメントに以下のように書かれています:

# MultipleChoiceWidget needs a list of pks, not object instances.

なので返されるのはインスタンスのリスト(Queryset) ではなく pk(id) のリストになります。みなさんも同じようなシチュエーションで MultiWidget (の decompress )を書くときは注意しましょう。ではでは

※ 追記、 MultiWidget の render 関数を見ていただければわかりますが if not isinstance(value, list) のときだけ decompress を使用していることがわかります。つまり MultiWidget を一重で使っている人は恐らく躓かないと思いますが(というのは一重だったら Django の標準 Widget が decompress 処理をしてくれるため。)、二重で使っている人はつまずく可能性が大いにあります。

CentOS 6 における Slowloris と ApacheKiller の対策

いやー Apache のセキュリティは本当に怖いですね。基本的に Slowloris や ApacheKiller の対策のモジュールなどは標準で入ってはいるそうですが設定はされていないからです。
適切に設定しないと痛い目にあいます

まずは ApacheKiller の対策について
/etc/httpd/conf/httpd.conf に以下を追記:

Slowloris の対策
Shell で以下のコマンドを実行

ではでは