セキュリティ&プログラミングキャンプ2010実施報告会 を見て聞いて

12月18日土曜日にセキュリティ&プログラミングキャンプ2010実施報告会がありまして、
僕は午前が私用で忙しかったので参加できませんでしたが、中継配信は少し眺めてました。
配信が不調だったのもありあまり把握してはいませんが、参加者の呟きや日記から大体何を話していたかわかりました。

セキュリティ&プログラミングキャンプ2010実施報告会 - Togetter
2010-12-19 - 未来のいつか/hyoshiokの日記
セキュリティ&プログラミングキャンプ2010 事後報告会に行ってきました - ik_fibの日記
http://d.hatena.ne.jp/mactkg/20101219/1292744032
セキュリティ&プログラミングキャンプ2010実施報告会 on USTREAM


セキュリティ&プログラミングキャンプ事業仕分け対象と聞いた時はガッカリだったけど、
存続が危ういのは日常茶飯事だぜって話だったので、仕分けとか今更な話だったという事を聞いて安心したり。
でも、来年も出来るか怪しいには違いない。
知名度を上げるために宣伝していこうという話もあるけど、
僕の学校には全校生徒が利用する連絡板付近にポスターも貼ってあったし、知名度はある程度あると思うんだけどなぁ。
もっと違うアプローチの方がいいような気もする。
そもそも参加しようと思わない人ばかりだったらどうしようも無い気も。うちの学校は応募者1人って話だし。
僕としてはもっと色んな人に参加してもらいたいし、何らかの形で関わっていけたらとも思う。
何をして関わるかといえば、考えちゃうわけですけども。


今更だけど、応募用紙に書いた内容を晒し上げてみる。
やる気はあったので些細な事も応募用紙に書いて埋めてた記憶がある。僕のほぼ全てを書いたともいえる。
こういう書類は自分を売るのだから、少し大胆に成るぐらいがいいのかも。


セキュリティ&プログラミングキャンプ2010のセキュリティコース(ソフトウェアセキュリティ組)

1. この組を希望した自分なりの理由を教えてください。また、何を学びたいか教えてください。(選考上もっとも重視します)
現在、自分のために使うソフトウェアを作っており、配布することはしていないので、実は脆弱性の事はあまり考えずに作成をしている。
来年からは就職し、仕事で顧客に使ってもらうソフトウェア開発に携わるので、脆弱性に関しては対策を行う必要がある。
今後、自分が使うソフトウェアから、他人に使ってもらえるソフトウェアを作っていくためにも、
今回のキャンプを通して正しい知識を正しい方法で身につける絶好の機会だと感じ、
脆弱性の発見方法や対処などを学んで、今後のソフトウェア開発に生かしていくために、希望する。


2. プログラミング歴を教えて下さい。また、今までに作ったプログラム (特にシステムプログラム(※1))があれば、差し障りのない範囲で
具体的に教えてください。:
※1: システムプログラムとは、WindowsのDLLやLinuxのデーモン、各種デバイスドライバカーネルモジュールなどを指します。
5年前にPerlを用いた掲示板をいじったのが初めて。
システムプログラムは作ったことはなく、GUIで作成したのは、WIN32APIを使った簡単な時限タイマーぐらいになる。
CUIで動作する、ゲームサーバへ遠隔操作のための情報を送るものや、データを処理するためのバッチ処理的なものなどや、
WEBアプリケーションでは、ブラウザで遊べるオセロゲームや、簡単な掲示板、標準モジュールを使っていないファイルアップローダなどになる。
後はアルゴリズムの勉強の為に実際にコードに書いて実行して満足する等である。


3. これまでに開発したプログラムで経験したバグ、およびその影響について差し障りのない範囲で具体的に教えてください。
サーバクライアントモデルな環境でプログラミングを行っていた時、
ループ条件を間違えていたプログラムをサーバ上で実行してしまい無限ループが発生し、タイムアウトするまでの一定時間の間に他の利用者から「動作が遅い」という苦情が出た。
動的メモリを確保できなかったときの動作を考慮していなかった為、NULLポインタへのアクセスを行ったようでセグメンテーション違反で終了した。


4. セキュリティホールは放置しておくとなぜ危険なのでしょうか。自分の言葉で説明してください。
そのソフトウェアのセキュリティホールに対して悪意の操作を知っている人が居た場合、
そのソフトウェアがコンピュータ上に存在するだけでそのコンピュータは不正な動作や損害などの脅威に晒される。
具体的に言うと、管理者から割り当てられた権限よりも上の動作(他人のアカウントが持つ情報を覗き見ることや、編集、削除など)を行われる危険性、
不正な動作による負荷からソフトウェアが停止してしまいサービスを提供できなくなる事による損害などがある。


5. ソフトウェアの脆弱性をなくすには何が必要でしょうか。
たとえばバッファオーバーランは攻撃としては常套手段だが、バッファ領域を意識することで防げる。
ただ注意していてもミスを犯すことはあるし、ミスを犯すかもしれない操作はできるだけ隠蔽するような仕組みを考えることはできる。
バッファオーバーランに関して言えば、C++のstring型のようにバッファを可変長に持てるものや、バッファから溢れるなら例外を出したりなど。


6. あなたがある程度読み書きできるプログラミング言語を書いてください。(いくつでも可)
Perl, C言語, Java, C++, JavaScript

7. そのほかアピールしたいこと、書き足りないことがあれば自由に書いてください。
応用情報技術者試験の資格を持ってます。
3回目の応募で年齢的に今回が最後のチャンスです。