My Daily Programming Life...

コンピュータセキュリティへの興味

CanSecWestで話をしたSEH Overwriteのエクスプロイトテクニックとそれに対する対策。
これはこれで、セキュリティという面でなんらかの貢献のできる内容なのかなぁとは思うけど、基本的にはやはり技術ありきでの話の内容になっている。
何らかの問題があって、それを解決するために調べてこの話をしたのではなくて、技術的にこういうことが可能であることを知ることが楽しいから、これを書いたということ。

コンピュータの利用や通信が安全になることには意味があると思う。ただ、現在存在するハードウェア、ソフトウェアの上に、安全性を築こうとする行為は、僕はあまり意味があるとは思っていない。
つまり、今回のSEHの話も、ものすごく小さな目先の話であって、こういうことをいくらやったところで、コンピュータを安全に(情報を盗まれないとか、不正アクセスされないように)使うことは無理だと思っている。

さて、一方ですばらしく安全なシステム、ハードウェア、インターネットが整備されていたら、僕はきっと楽しくないから、こういった内容について調べたりはしないだろう。

そういう適当さのある世界が好きだからインターネットやコンピュータが好きなのだと思っている。インターネットの世界も、僕が初めてインターネットを使い始めた当時(1996ねんごろ)の方が面白かったと感じる。
いろんな驚きがあったし、いろんな自由があった。いまでも自由だけど、あまりにも社会に影響しすぎている。

twitterとかも、みんなそんな自由さを求めているんじゃないかと感じることもある。(なんとなく適当に一言感じていることを言って、特に責任ある発言を求められるわけではない。)

今のネットワークや、個人PCに、それだけの安全性や責任を求める行為そのものに、僕は抵抗を感じているのかもしれない。今のままで十分楽しいと思ったり。

それは僕は基本的に性善説的な考え方をしているせいかもしれない。みんなで楽しく使えばいいじゃん、みたいな気楽なのりなのだ。

形式ばった、なんのミスも許されない、ちょっとしたミスでみんなからいろいろ言われる、そんな社会じゃ面白くないし、何にもしたいと思えない。悪い人もいるかもしれないけど、コンピュータそのもので人は殺せないし、いいんじゃないかって思う。

僕が大企業が向かない理由はこういうところにある。僕にとっては楽しく生きるうえでどうでもいいことが多すぎるんだ。
コンピュータの世界は中小企業のような自由さから、だんだんと大企業的な世界に変わっていっているように思う。

そのうち、コンピュータやインターネットにも興味を持たなくなるときがくるかもしれない。

情報の伝わり方

CanSecWest2010で話したことが少しだけ下の記事で参照されている。

問題は、ちょっと書いていることが、僕の言ったことと変わってしまっているということ。
"SEH OverwriteでASLRとDEPやその他のメモリプロテクションがバイパスできる"みたいなことを言ったように書かれているが、僕が言ったことの中にはASLRは含まれていない。
実際に、この発表の結論は、ASLRがこれらのバイパスを防ぐために重要な役割をしているということだった。スライドを一枚使ってきちんと説明したのに・・・。
おそらく、会場にいた技術的なバックグラウンドがある人たちにはきちんと伝わったはずだと思う。実際にその後のディスカッションでも何も認識に違いはなかった。

この前も、一部のニュースでASLRとDEP回避のゼロデイが出たみたいなのがあって、実際にはASLR回避は含まれていなかった。

話はだんだん大きくなってしまうのかもしれない・・・。

ところで、ASLRは単純に回避するのは難しい。
SEH Overwriteの場合、SEHOPと組み合わせると、かなり効果的だる事は間違いない。
ただ、ここの記事でも書かれているように、難しいことと不可能なことは違う。
実際にはDEP+ASLRの回避方法自体は例がある。まあただこれもSEHOPを組み合わせると難しくなる。
ASLR+SEHOP回避も、少しはExploit確率をあげるような方法はあるかもしれない。そのあたりを今度は調べてみようか。

CanSecWest2010 その4



日本人の方が写真を撮ってくれていました。ありがたい。というわけで一部アップロード

CanSecWest2010 その3

3日目。(CanSecWestは二日目)

今日の最初のプレゼンテーションが僕ということで、昨日から緊張しっぱなしでひどかった。
全然眠れないし、何も食べられないし、こんなに緊張したのはいつぶりだろうか。

ただ、不思議なことにプレゼンテーションが始まってからは意外に落ち着いていた。始める直前までの緊張がひどかった。

さて、肝心のプレゼンテーションはというと・・・いまいちどういう反応なのかはよく分からず。英語なので、とにかく自分の話をすることに集中してしまっていて、周りを見ながら話ができないので、反応を確認しながらプレゼンテーションをする余裕はなかった。まあ、こういう風にすると、内容が伝わらなくなることが多いのだけれど。

最後に、質問ありますか?って聞いたら誰もいなかった^^;
まあ、なんというか、いまいち反応がよくなかったのは確かですね。

でも、終わってから結構いろんな人が話しかけてくれて、よかった。Twitterでもそれなりにいいこと言ってもらえてたみたいだし。
結構有名な企業の人たちも、あとから話に来てくれた。

というわけで、とりあえずこれで落ち着いて、あとはCanSecWest2010を楽しめる。
うーん、まあこんな感じなら、また発表しても悪くないような気がしてきた。させてもらえるかどうかは別として。
ただ、個人的には今回の発表は本当に大したことない内容なので、これより全然いいもの出せる自信はある。・・・時間があればね。

続く

CanSecWest2010 その2

二日目。

とりあえず朝ごはん。ホテルで食べる。
海外に来るとつい金銭感覚が狂う。30ドル近くしても平気で食べていたりする。2500円とかそういう値段なんだけど、日本だとちょっと食べる気しないかな。

朝食後はレジストレーションへ。10時開始のはずが10時30分に延期。
結構たくさんの人が集まってきていた。
んで、長い列に並ぶ。
全部で4列ぐらいきて、そのうちの一つに何ランで、受付近くに来て、気がついた。なんかみんな番号を言っている。そして列ごとに番号の範囲が割り振られている。
・・・ちょっと待て。番号なんてしらないぞ。どうやらスピーカーには伝えられていないらしい(笑)
んで、受付にそれ言ったら、一番左の列に並べとか言われた・・・おい。

というわけで並びなおし。

んでレジストレーションはなんのことはなく終わり、さてどうしようかとスケジュールをみると、1時まで何もない。今11時。その間何しよう・・・。

なんかみんなはそれぞれ知り合いがいるみたいで、いろいろしゃべったりしている。
僕は知り合いなんぞいないので、とりあえずホテルの前の公園でひなたぼっこ。気持ちがいい。

なんだか、イメージしていたのよりだいぶゆったりしているんだけど・・・。
周りは結構今は、まったり感全快な感じがする。

さて、もうすぐ最初のセッションが始まる。
どんな感じのプレゼンテーションなのだろうか。会場にもまだ行っていないので、明日のプレゼンテーションの参考にしよう。

続く

CanSecWest2010 その1

昨日からバンクーバー。CanSecWest2010に参加するために。

うれしいことに、飛行機がビジネスクラスになってくれたので、かなり楽に来られた。8時間のフライトもあっという間だった。
機内で「ゼロの焦点」という映画を見たのだけれど、推理小説的な映画なのに最後のほうが見られずに到着してしまった・・・。一番見なきゃいけないところなはずなんだけど。帰りの飛行機で見られたら見よう。

一日目は、とくに何もせず。朝10時について、昼ご飯を食べて(日本時間だと夜中なので夕ご飯)、とりあえず眠かったので寝た。

夕方からはCanSecWest2010のスピーカーが集まっての夕食会。とりあえずビール飲んだり、寿司食べたり(意外においしかった)して、周りの人たちとちょっと話したりして・・・。
まあ、誰も知らないし、ドイツ語やらフランス語やら飛び交ってるし・・・じっと様子を見つつ食事という感じだった。

で、終わった後は、夜なんだけど、日本時間だと昼間・・・というわけでお昼寝。
まあ、夜中の4時ぐらいに起きてしまったので、一応あさってのプレゼンテーションの練習を少し。
一部修正したりしながら、やった。

ホテルはネットもつながるし、広いし快適だ。

続く。

わがままなプログラミング

前にも同じようなことを書いた気がするけど。

僕はプログラムは一人で書くべきだと思っている。一人の意志で、一人のためだけに。周りの人たちの意見などほとんどいらない。自分のために必要なら聞けばいい。人がその機能やプログラムが使いやすいと思うかどうかはとりあえず放っておけばよい。(受託開発とかは全然ここでは対象にしていない。)

これでとにかくVersion1.0~2.0までを開発する。ここまできてこれを利用する人がたくさんいるならそれは成功したソフトウェアだと思う。
一人で作るべき期間に、手伝ってくれる人がいることはよいけど、その人は単なる手伝いでなくてはいけない。意見は聞く必要はない。特に機能面においては。自分が思うように作らなくてはいけない。自分がほしい者を、自分が好きなように実装しなくてはいけない。

この作業はそのソフトウェアに情熱のある人であれば誰でもできる。一方で情熱のない人にはできない。そこがソフトウェアとしてよいものになるかどうかの分かれ道だと思う。
結局、人に言われて作るものに最高の情熱を注げるかと言えば、無理なんだ。
feedSubscribe to my feed