Hatena::ブログ(Diary)

yasulib memo Twitter

2010-10-31

@randomな勉強会

@randomな勉強会に参加させて頂きました。

前説 小島さんVOICEROID+ 鷹の爪 吉田くん

文字読み上げが思っていた以上に自然で感動してました。

参加者自己紹介

先日のブラックハットジャパンその後 関西編でお会いした方々が何名かいらっしゃいました。岡崎図書館事件のお話があったので、図書館にお勤めの方やMDISの方*1もいらっしゃいました。少し学生が多かった気がします。

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

PHPカンファレンスでお話された内容です。(PDFslideshare

徳丸さんのブログでもまとめて頂いていますので、ここではいくつかメモを書いておきます。

脆弱性サンプルの三原

 ・何かしらの役にたつ機能を備えること

 ・現場で「やってしまいそうな」想定であること

 ・ターゲット以外の脆弱性を含まないこと(それSQLインジェクションなくてもできるよ〜)

クイズ:この関数は何をするか分かりますか?*2

function isZenKana($ch) {
  $kanas = 'ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ';
  return strpos($kanas, $ch) !== false;
}

答え:全角カタカナか判定する関数であるが、文字をまたがってマッチしてしまう場合がありうるので、mb_strposを使うべき。

デモは主に3種類に分類

1.文字エンコーディングとして不正なデータによる攻撃

 入力時点でのアプローチ

 すべての入力値の文字エンコーディングの妥当性をチェックする。不正な文字エンコーディングは削除する。

 出力時点でのアプローチ

 文字列を「使う」際の関数・APIが文字エンコーディングに対応していれば、脆弱性は発生しない。最新のPHPを使う。文字エンコーディング指定をさぼらない。

2.文字エンコーディングとして不正でなく、マルチバイト文字対応が不十分なもの

 それぞれの処理を規格通りに正しく処理せよ。Shift_JISは避けた方が良い。

3.文字集合の変更が原因となるもの

 文字集合を変更しない。

簡単にできるテスト

 尾てい骨(びていこつ)の(てい)(U+9AB6)を入力して正しく処理されるか。

追記:slideshare(増補版)

岡崎図書館事件に見る自治体IT調達の問題点 上原先生 @tetsutalow

図書館の自由に関する宣言というものがあることを初めて知りました。普段、法律や条例、自治体などについてお話を伺う機会がないので、貴重な体験をしました。今回の話を伺って、もっと色々な方向から見た意見を伺いたいと思いました。

IT版ストックホルムシンドローム

JSON Hijack with utf-7 はせがわさん

「爽快セキュリティ」ではなくjjencodeの「難解セキュリティ」から始まりました :)

BHJその後 関西編でお話頂いた内容とほとんど同じでした。IE6,7でcharsetの優先順位の問題によってutf-7を使ってJSONをハイジャックできる。

ブラウザ側の問題ですが、ウェブアプリ側で対策できる。utf-7で使われる-+をエスケープするので対策できるが、-はエスケープするとJSONが崩れる可能性があるため、+<>をエスケープすることで対策するのが良いみたいです。

以下、twitterでの流れです。*3

ockeghem: .@hasegawayosuke はせがわさん、昨日のJSONの過剰エスケープに対するご指摘ですが、真偽値や数値リテラルの場合の話であって、文字列リテラル中のマイナス記号はエスケープしてもよいという理解であってますか? #atrandomkyoto

 

hasegawayosuke: @ockeghem あってます。-を放置し+<>のエスケープを推すのは、例えばPerlであれば既存のJSON.pmを使って JSON->new->ascii(1)->encode(...); してからs/[\+<>]/.../g;できるからです。

 

hasegawayosuke: @ockeghem …というのは、@takesako さんと @bulkneets さんに教えてもらいました。そうでないと自前でJSONエンコーダを実装する必要が出てくるので。

 

ockeghem: @hasegawayosuke ありがとうございます。JavaScriptだと、"-1.0"が、実は数値ということもありそうで、「-」以外にも「.」もエスケープするとまずい場合がありそうですね

gihyo太田さん連載も紹介されました。

LT @ynagao さん

セキュメロ(神戸情報セキュリティ勉強会)のお話でした。

追記:slideshare

GMP(とRuby)で素因数分解(とtwitter bot) @dorayakeyさん

GMP*4とRubyで素因数分解をするtwitter botを作ったというお話でした。アルゴリズムはp-1法を使っているらしいです。

10分間で答えが見つからない場合は諦めるというのは、どことなく人に似ている気がして面白いなと思いました。

K-OF 中賢剛さん

関西オープンフォーラムが11/5,6にATCであるらしいです。「wikipediaにおける大規模システムの運用」や「html5について」など面白そうな講演もあるらしいです。

余談

iPadを充電するのに2Aの電流がいるという話を伺い、友人達とフレミングの法則を用いた装置を作ったときに6Aの大電流を扱ったことを思い出しました。拙い装置ですが、youtubenicovideoに上げてあるので良かったら見て感想頂けると幸いです。

ちなみに人体に数100mAの電流が流れると命が危険らしいです。といっても人体は数kΩ以上のインピーダンス持ってるので短絡電流が6A流れているものに触れても、人体にはほとんど電流は流れないです。

追記:togetter

*1:図書館システムには関係ない方だそうです。

*2:こういったプレゼンテーションは面白いなと思います

*311月1日のtwitterセキュリティクラスタ|twitterセキュリティネタまとめ を参考にさせて頂きました。

*4:GNU Multi-Precision Library

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証