何となく Blog by Jitta
Microsoft .NET 考

目次

Blog 利用状況
  • 投稿数 - 761
  • 記事 - 18
  • コメント - 36167
  • トラックバック - 222
ニュース
  • IE7以前では、表示がおかしい。div の解釈に問題があるようだ。
    IE8の場合は、「互換」表示を OFF にしてください。
  • 検索エンジンで来られた方へ:
    お望みの情報は見つかりましたか? よろしければ、コメント欄にどのような情報を探していたのか、ご記入ください。
It's ME!
  • はなおか じった
  • 世界遺産の近くに住んでます。
  • Microsoft MVP for Visual Developer ASP/ASP.NET 10, 2004 - 9, 2011
広告

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

その他

わんくま同盟

同郷

 

ネタもと:「プログラミング解説書籍の脆弱性をどうするか」への反論のようなもの2(GIJOE氏)

ここで言いたいことは、「パケット盗聴よりも、XSSなどの方がはるかに現実的な攻撃方法であり、緊急性がある」ということだけなのですが、文章が良くなかったかもしれません。

えっと、そうなんでしょうか?まぁ、「盗聴」は直接的な攻撃とは、ちょっと違うかもしれません。しかし、XSS だと、そのサイト(環境)用に書き直す必要がありますが、パケット盗聴はツールさえ用意すれば(そしてそれは簡単に手に入る)、手を加える必要はありません。もっとも、 ADSL などで、パケット盗聴が出来るのかどうか、それはやったことがないのでわかりませんが。

本題

ただ、これがどこで書かれているか、お判りでしょうか。 P.28 まさに導入部分です。

(中略)

ここはPart3-2のつなぎにもなっていますし、そこの対策3にも書いているように「必要のないものは最初から受け取らない」方がむしろベターです。<>'"& を受け取る型の方が例外であると考えるのがよいでしょう。

(中略)

書籍後半のP.143になって、それまでのサンプルコードをすべて否定する、というとんでもない反則技をやっているわけですが、最初から順を追って読んできていただけた方なら、ある程度納得していただけると思います。テーマをぼやけさせないことは、他者に情報を伝えるためにもっとも重要なことの一つです。

テーマをぼやけさせないというのは、確かに大事です。該当の Part2 がどの様な内容なのかわかりませんが、最初から順を追って書かれているなら、基礎について書かれているのでしょう。例えば、小学生にいきなりかけ算は教えません。数の概念を教え、1の次が2、その次が3ということを教え、その順番が理解できている前提で、足し算、引き算を教えます。そして、足し算の応用であるかけ算、かけ算から発展して割り算を教えます。このような教え方は大事だと思います。

ただ、今回相手にするのは、そういう概念から教えなければならない相手なのでしょうか?そうであったとして、それならばそれで、Web アプリケーションが「常に攻撃に曝されている」ということを教えることは、基礎だと思います。こんにち、Web アプリケーションの開発現場においては、ライティング セキュア プログラムは、基礎のひとつだと思います。私は、高木さんの「貧民的プログラミング」というのは、そういう「基礎をおろそかにする」ということも含まれると思います。

そして、私が一番心配に思うのは、自分の本を読むスタイルを考えてのことですが、最後まで読んでからコーディングにかかるか、ということです。私が本屋で本を探すとき、目的があります。パラパラとめくって、その目的が書いてあるかどうかを確認します。書いてあれば購入します。そして、その書いてあったところだけを参照します。また、読みたい本であっても、それこそ最初から順を追って読んでいきますし、その途中で有用な書き方があったら、その場から取り入れます。出来るなら、以前のぶんも書き直します。ところで、この本は、仕事の片手間に一日で読み終われるほどの分量なのでしょうか?

さて、私はGIJOE氏の該当する本を読みながら、場当たり的なコーディングは勧めていませんということに気が付くでしょうか?おそらく、気が付くでしょう。納品して、簡単には修正できないようになってから、ですが。よしんば納品前に気が付いたとしても、修正箇所を洗い出したり、修正をして、修正を確認するために相当な工数をかけなければなりません。おそらく思うでしょう。「だったら最初に書いておいてよ」。場当たり的なコーディングは勧めていませんということならなおさら、最初から書いておいて欲しいと思います(人のことは言えませんが。「やるべきことをやろうよ」へのコメント参照)。あとになってそれまでのサンプルコードをすべて否定するのは、ご自身でおっしゃるようにとんでもない反則技ではないでしょうか。

このエントリのタイトルを、「コミュニティに見る脆弱なコード」としています。これは、内省を含んでいます。

コミュニティでされる質問の多くに対して、私はほとんどの場合脆弱なコードを提示しています。ここの記事や、サイトに載せているコードも、脆弱性を含んだコードです。サイトに載せているのは、「ノート」つまり、自分の「防備録」的な意味を含んでいます。質問に対する回答は、「とりあえず質問事項に応えられればいいや」と、軽い気持ちがあります。と、言い訳しておきます。

書籍のようにあとからページ(時間)を割いて、「先に提示したコードには脆弱性がある。本当はこう書かなければいけない」と書いたとして、それは有効でしょうか。あるいは、有効かもしれません。あとから検索してきた人はそれを見て、よりセキュアなコードをコピーしていくかもしれません。しかし、質問した本人に、それが伝わるかどうかは、あやふやです。自分の問題が解決したと思った瞬間、その後に付いたレスポンスを見に来ない人もいます。このブログも同じです。1/5の「やるべきことをやろうよ」と、1/12の「じゃぁ、どうすりゃいいのさ」は修正を入れているのですが、RSS には修正が上がっていないんですね。なので、RSS リーダで読んでいる方は、修正されていることに気が付かない、と。

このように、あとから情報を出しても、有益であるはずの情報が参照されない可能性があると思います。高木さんの指摘は、そういうことも含まれているのではないでしょうか。

出来るだけ、「貧民的プログラミング」なコードを提示することがないように、気をつけたいと思います。

投稿日時 : 2006年1月24日 6:32
コメント
  • # re: コミュニティに見る脆弱なコード
    がる
    Posted @ 2006/01/24 10:38
    がるです。
    んっと…微妙フレームっぽくなりそうな雰囲気があちこちで見えなくもないのですが、そのデメリット部分を考慮してなお、こういった話についてきちんと議論が出ているのはとてもよいことなのではないかなぁとか思ってたりする今日この頃なのですが。
    ちなみに私は「データは汚染されたまま所持」派です :-P
    …って書くとなにか誤解されそうですが(苦笑

    で、色々書こうかと思ったのですが…思ったよりもきっちりとGIJOE氏への反論である部分が多々ありまして。
    そのあたりは健忘録のほうに書いておきますので、よかったらご覧いただけたりなんかするとうれしかったりします。

    んで…「コミュニティでされる質問の多くに対して、私はほとんどの場合脆弱なコードを提示しています。」やりますねぇ私も(苦笑
    一応、脆弱性があるとか問題があるとかある程度明記はしていますが。
    とはいえ「どこに脆弱性があるのかわからない」人にとっては…って考えると、と思わなくもないです。
    とはいえ「きっちり」回答するには、ちょっとコミュニケーションとかがどうしても不足しがちなんですよね、Web上ですと(苦笑

    というわけでまたそんなコユい話をリアルでしましょう(笑 > Jittaさん
  • # re: コミュニティに見る脆弱なコード
    Jitta
    Posted @ 2006/01/24 22:10
    がるさん、コメントありがとう。

    > フレームっぽくなりそうな雰囲気があちこちで見えなくもない
    それは、あまり望むところではありません。だからといって、掲載した以上、消火には努めます。
    ひとつとして、内省パートに書いているように、自分の提示してきたコードに脆弱性がある。それを「脆弱性があるよ」と"あとから否定する"ことが、はたして有効かどうか、、、重きはこちらにあります。


    > ちなみに私は「データは汚染されたまま所持」派です :-P
    VSUG に、「セキュリティ対策は入口と出口どっちですべき?」というスレッドがあります。
    http://vsug.jp/tabid/63/forumid/56/postid/1589/view/topic/Default.aspx
    「何に使うか」が決まらない以上、「対策」は出来ないと思うんですけどねぇ。。。


    健忘録…聞いてたっけ?
    http://gall.wablog.com/


    > というわけでまたそんなコユい話をリアルでしましょう(笑
    今度はレコーダー付き、ですか?(笑
  • # re: コミュニティに見る脆弱なコード
    がる
    Posted @ 2006/01/25 15:29
    がるです。
    フレームに関しては…議論は好きなのですが、いわゆる「フレーム」は生産性を感じられないので…といったところでしょうか。

    で。脆弱性の後だし否定ですが。個人的には「やらないよりは全然よい」と思うです。

    VSUGのスレッドは…個人的には「抽象化議論の弊害」を感じちゃいますねぇ(苦笑
    みなさん「チェック」という単語をとても画一的につかっているんですが。それを具体的に「状況に合わせてコードを書いて」って感じで手を動かすとまた結構違った議論になる気がします。
    なので、Jittaさんの「「何に使うか」が決まらない以上、「対策」は出来ないと思う」ってのがまさにそんな感じかと。
    # 「だからこそ」出口でサニタイズ。データの有効性チェックはまた別途として。

    健忘録…言ってなかったでしたっけ?
    最近、あちこちで色々な記事書いたりBlog書いたりしてるので、かなり混乱が(苦笑
    まぁあんな感じでぬるぬるゆるゆると書いてます。

    > 今度はレコーダー付き、ですか?(笑
    で、後で文字に起こしてっと(笑
  • # re: コミュニティに見る脆弱なコード
    masa__masa
    Posted @ 2006/01/29 0:51
    こんばんは。

    vsugから飛んできました。
    「コミュニティに見る脆弱なコード」・・・難しい問題ですね。脆弱性の後だしは全然ありだと思いますが、本来の質問事項に回答しつつ、簡潔に脆弱性の説明を付け足すのはなかなか難しそうです。脆弱性の説明をうまくまとめる方に時間を割いちゃいそうな気も^^;

    「抽象化議論の弊害」これは自分でもかなり感じました。
    チェック、入力、出力、セキュリティ対策、サニタイズ、全ての言葉が人によって捉え方が違う言葉であることに気付かされました。(私だけ違うのかもしれませんが)データの有効性チェックをおいとくか、一緒に考えているかも人によって違うでしょう。

    セキュアコード関連の議論は、まず用語定義ありきで始めないとダメな気がする今日この頃です。
  • # re: コミュニティに見る脆弱なコード
    Jitta
    Posted @ 2006/01/31 22:09
    masa_masaさん、こんにちは。ようこそいらっしゃいました。

    遅くなってすみません。すぐに気がついていたのですが、アップロード用のファイルを2日も置き忘れてきた。。。


    > まず用語定義ありきで始めないとダメな気がする
    とりあえず、ここだけ。
    セキュアコードだけじゃない、と思います。人は、名前を与えると「わかった気になる」性癖があるようで。。。これが一番の問題かな?と。
  • # Trustworthy Computing
    何となく Blog by Jitta
    Posted @ 2006/03/05 21:01
    Trustworthy Computing
  • # Trustworthy Computing
    何となく Blog by Jitta
    Posted @ 2006/03/07 6:20
    Trustworthy Computing
  • # re: 「サニタイズいうな」と「ハンガリアン」
    何となく Blog by Jitta
    Posted @ 2008/07/06 23:57
    re: 「サニタイズいうな」と「ハンガリアン」
タイトル
名前
Url
コメント