「第1回 神泉セキュリティ勉強会」へ行ってきた

火曜の夜、第1回 神泉セキュリティ勉強会へ参加してきました。

自分はこの分野の知識が足りないので、内容をレポートするのはムリです。。。というわけで、感想だけ。

徳丸さんの講演を聞いていて思ったのは(内容に対する直接的な感想ではないかもしれませんが)、自分が使っているランタイムのバージョン(マイナーバージョン)に関する脆弱性の情報は、全力で収集しなければといけないということです。PHPの5.xまではどうだとか、MySQLコネクタの5.1.7以前は動的プレースホルダを使っているとか、講演の中で出てきた言語やツールは、普段自分が使わないものでした。なので、「うわー細かー」と他人事のように感心していれば済みます。しかし、使っているものについては、当然ちゃんと把握しておかなければいけません。当たり前なんですけどね・・・難しいですよね。リアルタイムに追っていかないといけないし。

また、池田さんのライトニングトークを聞いて、ツールのセキュリティは、様々な要素の集合なんだと改めて思いました。入力の文字コード、出力の文字コード、DBの文字コード、DBからのデータの読み出し方式、各種脅威への対策・・・などなど、すべてが合わさってツールのセキュリティを構成していて、一部でもしょぼいと、全体のセキュリティが下がってしまうんですね。

以下は、リンクのまとめと、ちょっとした覚書きです。

文字コードに起因する脆弱性とその対策(徳丸浩さん)

メインの講演をしてくださった徳丸さんは、来年、文字コードに関する本を出版されるそうです。出たら読みます。

文字集合は混ぜて使える(というか混ぜて使うのが普通?)とか、マイクロソフト標準キャラクタセットの丸数字はNEC日本IBMの拡張文字を追加したものだとか、恥ずかしながら文字コードの知識がそもそもあまりないので、このへんからすでに勉強になりました。

  • Shift_JIS
    • 5C問題
    • 2バイト文字の2バイト目にくる符号が5Cのときに起きる問題
  • EUC-JP
    • 螢問題(徳丸さん命名
    • バイト領域の重複という上記と同じ原因で起きる問題
  • UTF-8
    • 1バイト文字とマルチバイト文字で重なりがないため、問題が起こりにくい
    • ただし、非最短形式に起因する問題がある

非最短形式というのは、同じ文字集合の中で、ある文字と対応する符号が複数ある場合の「最短でない」形式のことだそうです。それを聞いて、言語と同じで1:1対応の方がシンプルではないか?なぜ複数の符号との対応づけがサポートされてきたんだろう?と疑問に思いました。が、1:1対応だと文字コードを使うシステム側の実装がシンプルでなくなるのでは、とTwitterで指摘してもらいました。仕組みはまだよく分かってないです。

文字コードで問題が起きやすいのは、バインドをクライアント側で行っているときだそうです。このあたりの話題については、IPAの『安全なSQLの呼び出し方』という冊子が役に立つとのことです。

  • ブラウザが認識できる形式で円コーディング指定する必要がある
    • たとえば、Internet ExplorerはEUCJPを認識できないので、EUC-JPと書かなければならない

下が長い方の「吉」(いわゆる、つちよし)や、「尾てい骨」の「てい」という漢字を表示できるかで、Unicode対応かをチェックしているというお話もありました。面白かったです。

プログラムを騙す10の方法 - シグネチャマッチを回避する攻撃と防御(竹迫良範さん)

記号プログラミング半端ないです。初めて見ましたが、これはすごいですね・・・。各種ゴルフやJavaワンライナーも大概だと思っていましたが、さらに斜め上です・・・。どう見ても符号です。本当にありがとうございました。

GIF画像に埋め込まれたPHPが実行される様子など、ファンタスティックなデモを見せてくださいました。

いやー・・・びびった。楽しかったです。

XSSに強いウェブサイトを作る - テンプレートエンジンの選定基準とスニペットの生成手法(奥一穂さん)

自動エスケープ機能のあるテンプレートエンジンを使おう、というお話。

まとめのスライドの「バグがあってもいいから、セキュアなコードを書こう」というのは、言い切る人はあまりいないけれど、真理だと思いました。

パスワード保存の常識(?)(春山さん)

パスワードにハッシュを何度もかけることで計算回数を増やす、ストレッチのお話。

ところで、参考として紹介されていたMan page of CRYPTを初めてちゃんと読んだのですが、実装がないときに出るエラーが定義されていて、面白いなと思いました。たしかに暗号技術は輸出規制に抵触することがあるだろうと思いますが、実装が抜かれた状態が想定されるということなんでしょうか。

ライトニングトーク

「Webアプリ検査ツールの薦め」(ikepyonさん)

というわけで・・・

セキュリティという切り口の勉強会は、本当に色々な人が集まっていて面白かったです。企画してくださった方、講演してくださった方、懇親会でお話ししてくださった皆様、ありがとうございました。