gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

XSSはソースコードのリトマス試験紙

いやまぁ何カ所かで偶然「ほぼ同じ話」をしていたので、ちと自分の脳内整理を兼ねて。
一言で結論を書くと「ようは割れ窓理論」って話です。


とりあえず、お題は「XSSは非常にまずい」と。
その辺の「おいちゃん的思考」を、だらりんこんと書いていきたいと思います。
…って、細かく書くとすげぇ長くなったので(文章支離滅裂になったので全部消したw)、割と端的に。


かみ砕いて。
セキュリティホールがある」ってのはまぁそもそもとして「知識不足の可能性」を疑うべきではあるのですが、まぁそのあたりは適宜「学んでいただく」として。
そこから先、少なくとも「実務」の場合、「costその他との天秤」が待っているですだよ。


えと…具体的に。
「そこそこしゃれになっていない」セキュリティホールがあると仮定します。
もしそれが「10分程度で修正可能」であれば、これをやらないケースというのは、あんまりないと思います(あんまり、の理由は後述)。
一方でそれが「2人月ほどかかる」となった場合、特に「おじぇじぇを握っている層」が難色を示す可能性が高いのは、まぁ社会人であれば容易に想像が付こうか、と。


ちなみに「10分程度で修正可能なのに修正をしないケース」というのが、これがまた実際にありまして。
これはおおよそ「問題を全く理解していない(知識不足)」にくわえて「ゴミのようなプライド(「修正しろ」と人に言われたので、技術レベル的に"出来てるつもり〜"な技術者のプライドが傷付いた)」というのが、おおよその構成要素かと思われます。


閑話休題


で、XSSなのですが。
じゃぁまぁ「発覚した」として、実際問題「どれくらいの作業量」で修正ができるのでしょうか?
ここで「井坂さん」と「路地さん」、「葉桜さん」にお話を伺ってみましょう(…夜中だからテンションが怪しいw)。


井坂さん:
そんなはずないのですが…ありゃ、エスケープ処理にミスがありますね。
エスケープしている箇所を書き直す程度ですので、テストをしたとしても…(1時間あれば終わりそうだから)半日くらいで終わると思いますよ?


路地さん:
そうなんですか?
えと…テンプレートに値をセットするのは、だいたい同じ箇所でやっているので…例外部分を洗い出すとして…多分、多めに見積もって一週間くらいだと思うのですが…


葉桜さん
イヤ正直無理ですよぶっちゃけ。
値のセットはソースコード中に散乱、部分的に「プログラムでエスケープ」してたり部分的に「テンプレート側でエスケープ」してたり、ばらんばらんなんで。
やってもいいですが…2〜3ヶ月は確実にかかりますよ?


…んで。
正直、「井坂さん」のところだと「XSSが見つかった → 直せ〜 → 直った〜」で片付いちゃうと思うんですよ。いやまぁ「気付いたら連絡してあげよう」とは思うのですが。
「路地さん」のところだと…軽く微妙かなぁ、と。ただまぁ一週間程度の工数であれば、なんだかんだ「ひねり出す」ところも多いかなぁ、と。
「葉桜さん」ところのレベルになると「XSSが見つかった? とりあえず個人情報は漏れないっぽい? ンじゃほっとけ」になること請け合い。…なにせ実例を何件も知ってますから orz


さらに、んで。
もちろん例外はあろうかと思うのですが。
上述、端的に言うと「随所に関所( http://d.hatena.ne.jp/gallu/20080225/p1 )」が出来ているかどうか、なんですが。
もうちょっと深読みをすると、現場のソースコードや、その前提になる設計が「びりほな設計/ソース」なのか「見るも無惨な設計もどき/駄ソース」なのか、ってのが、透けて見えてくるですよ。


そんなこんなを総合するとですね。
XSSは、いやその「セキュリティホール自体」、じゅ〜〜〜〜ぶんにまずいとは思うのですが。
別の角度として「XSSがたれ流れていて、かつ修正がままならないようなサイトのプログラムは、その中身、推して知るべし」ってなることが多いんですね。


なのでまぁ「XSSソースコードリトマス試験紙」と、そんな風においちゃんは思うわけですよ。
いやまぁ「おいちゃんが関わっていない」ものがどんな状態であっても、別段、目くじらを立てるようなもんじゃないとは思うんですがね B-p