記事個別表示 (3063)
これは「水無月ばけらのえび日記 : サニタイズ言うな?」に関連するコメントです。
[3063] Re: 「サニタイズ言うな?」
ばけら (2005年7月16日 20時33分)
>バグがあればどのような文字列も潜在的に危険だと思いますが、そのような主張でしょうか。
今のところ私は特に「主張」はしていないのですが、この質問でよく分かりました。この質問に YES と答える立場と NO と答える立場の両方があり、そこで考え方の違いが出ているのだと思います。
たとえば以下を見ていただくと、
PerlのTaintモード(汚染検出モード)
http://www.ipa.go.jp/security/awareness/vendor/programming/a04_03_main.html
ここでは、外部入力は全て汚染されている ("taint" である) ので、そのまま使うと危険だという考え方をしています。「どのような文字列も潜在的に危険」であるから無害化 (サニタイズ) しなければならない、という考え方です。
ただし、これは見方の一つでしかありません。もう少し具体的に言うと、これは「新規にシステムを作る立場」と「脆弱性を指摘する立場」の、それぞれの見え方の違いに過ぎないのだと思います。結局の所、高木さんの主張は記事の末尾にある
>特に新規にシステムを開発するような局面において「『サニタイズ』(のようなプログラムを汚くする対策)ではなく、本来やるべき処理が何かをプログラマにきちんと伝えていくことが必要である」と参加者に訴えていた。
という文に集約されると思うのですが、「特に新規にシステムを開発するような局面において」という条件付きであることが重要だと思います。
脆弱性を指摘する立場では、良く「適切なサニタイズがされていない」という言い方をすると思いますが、これは既存の脆弱な (バグのある) プログラムを評価したものです。この局面では、結局の所脆弱であるかどうかだけが問題となりますので、結果としてサニタイズされているかどうかだけが問題となります。
結果として脆弱でなくなりさえすればよいので、プログラマが意識してサニタイズルーチンを入れたのか、それともたまたま特別なサニタイズが必要ない状況だったのか、ということはどうでも良いことですし、そもそも端からは (指摘者の立場からは) 分からないことでもあります。他の不具合 (たとえば単引用符が検索できない) があるかどうか、ということも、脆弱性の有無とは関係のない話になってしまいます。
#実際、納得のいかない直され方をすることは良くあるのですが、ともあれ脆弱でなくなったのであれば、それ以上は何も言えないわけです。たとえ特定の文字列が検索できなくても。
高木さんのお話でも、
>既存のサイトに対して、そのセキュリティ対策として『サニタイズ』を行うというのは、セキュリティ屋の発想としては極めて自然である
と明確に言われており、このような局面において「サニタイズ」という考え方をすること自体を否定されているわけではなくて、既存のサイトの脆弱性を指摘する立場と、新しく開発する立場とを明確に区別して議論されているのだと理解しました。
……というようなところで、私の中ではかなりすっきりした感じです。
これは「水無月ばけらのえび日記 : サニタイズ言うな?」に関連するコメントです。
全読: [3045]Re: 「サニタイズ言うな?」からのスレッド(44件)]