パスワードを忘れた? アカウント作成
194695 story
セキュリティ

最も危険なプログラミングエラーTop 25、2010年版 58

ストーリー by hylom
昨年とあまり変わってないような、 部門より

あるAnonymous Coward 曰く、

昨年も取りまとめられていた「最も危険なプログラミングエラーTop 25」の2010年版が発表された(本家/.記事)。

2010年版で一番のエラーとされたのは、クロススクリプティングを引き起こし得る「ウェブサイトの設計不備」。その後にSQLインジェクションの原因となる「SQLクエリの保護不備」、バッファオーバーフローの原因となる「メモリバッファ境界チェックの不備」と続く。このTop 25のエラーは、最近中国で起きたGoogleへの大規模サイバー攻撃や、その他軍用システムから一般ユーザまでを対象とした大小様々なサイバー攻撃の多くで悪用されているとのこと。

今回のレポートでは、製品のセキュリティに対して開発者らが責任を負うよう消費者が声を挙げるべきであると推奨している。「開発チームのメンバー全員がセキュアプログラミング技術のトレーニングを適切に受けていることを確証する責任を負う」ようベンダーに求めるなど、顧客としてセキュリティを重要視していることを伝え、より安全な製品を培う姿勢が必要であるとのこと。レポートでは、この目的のために製品購入者やユーザが活用できるドキュメントのドラフト(日本語版PDF)も提供されている。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • WEP、IPv6の近隣探索などの設計の不備や、FTP、POP3 などなど平文でパスワードを流す仕様とか。
    それを採用した業者/実装した開発者の責任?

  • そんなことになったら、マイクロソフトはどんだけの目にあわされることやら。
    あと、オープンソースのソフトウェアも大変なことに。

    賠償の限度はソフトウェア代金を上限とする、とかなら、フリーウェアは逆に有利かもしれないが。

    • 責任って別に首をくくったり賠償したりするだけではないので、マイクロソフトは無償パッチの提供として一定の責任を果たしているように思いますがいかがか。
      親コメント
      • おお、まったくその通りですね。
        責任取る => カネで解決かと勘違いしてました。

        まだ法律とか義務化されていない時点で云々してもあれだけど、
        セキュリティホールを知ってて、金をもらえないからとか、怠慢とかで放置した場合、責任を問われる可能性があるわけか。
        そうなると、MSの場合、アップデートを月例パッチにまとめてるけど、
        そのタイムラグでシステムを破られたらどうなるのか気になる。

        親コメント
    • by Anonymous Coward
      小さなな字で注意書きの一文が増えるだけじゃないですかね。

      ブレーキが効かなかったら、速度を落としたり、強めに踏んだりする工夫も必要じゃないのかな。

    • by Anonymous Coward

      以前のMSの開発者が、極めて優秀、ではなかったのは確かでしょうが、
      開発者は失敗から学ぶものなので、先進的(?)な技術でコケることを批判しすぎるのは
      ちょっと可哀想な気もします。

      #ストリートビューも先進的な技術にセキュリティの不備が含まれてた例かな、関係ないけど

  • by wd-nara (25864) on 2010年02月19日 16時05分 (#1720885) 日記
    元資料で、Integer Overflow or Wraparound (17位) が Ease of Detection: Easy (検出の容易さ:易)になっているけど、そうなの? 「コード監査では見つけづらいバグだから、気をつけてね」と教えているんだけど。
    • by Anonymous Coward
      これを見て納得がいかなければもう一度聞いてくれ。

      Prevention and Mitigations
      *Requirements
      Ensure that all protocols are strictly defined, such that all out-of-bounds behavior can be identified simply, and require strict conformance to the protocol.

      *Requirements
      Use a language that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid.
      If possible, choose a language or compiler that performs automatic bounds checking.

      *Architecture and Design
      Use a vetted library or fr
    • by Anonymous Coward
      bool以外の整数型使ってるとこは全部バグ有りって判定すると簡単に検出できる。
      検出漏れはないし、経験上バグじゃないとこをバグ有りって検出したことはないからあんま心配しなくても大丈夫。
  • Visual Studi○ で3000行ぐらいの簡単なツールを書いていた時
    F7でビルドした瞬間に落ちやがりましたよ。
    ○ffice関連も同様ですが、保存しないうちにエラーになるとかなり危ないですよ。
    いろんなプロジェクトや仕事が停滞します。

    ○utlook なんてメールが受け取れなくなること
    もしばしばですからね。

    そして、私の Windows 7 EP は
    セーフモードで起動すると

    1.エクスプローラーの強制終了
    2.ヘルプ~が立ち上がる
    3.何か操作をしようと試みるとエクスプローラー再起動
    goto 1

    みたいな状態になるんですよね・・・
    セーフモードじゃなにもできない orz
    • Visual Studi○ で3000行ぐらいの簡単なツールを書いていた時
      F7でビルドした瞬間に落ちやがりましたよ。

      Visual Studi○とやらはセーブしないでコンパイルが始まるのですか?
      コンパイルはファイル入出力で行われていると思っていたので意外でした。
      もしかするとビルドのキーを押してセーブされるまでに落ちたとか?

      ○ffice関連も同様ですが、保存しないうちにエラーになるとかなり危ないですよ。

      こちらは経験ありです。
      保存していてもどうにもこうにもできない詰みの状態になってしまうこともあるので、
      2-3代前のファイルも保存していたりして逃げています。

      親コメント
    • by Anonymous Coward

      なんのはなし?

    • by Anonymous Coward
      同じ slash dot の記事ですけど,

      もしかして,これじゃね?! トロイの木馬に感染?!

      http://srad.jp/security/article.pl?sid=10/02/18/0228205 [srad.jp]

  • by Anonymous Coward on 2010年02月19日 11時09分 (#1720700)
    猫による操作に対する設計不備
  • by Anonymous Coward on 2010年02月19日 11時34分 (#1720712)
    物理攻撃をされるリスク
  • by Anonymous Coward on 2010年02月19日 11時48分 (#1720722)

    「開発チームのメンバー全員がセキュアプログラミング技術のトレーニングを適切に受けていることを確証する責任を負」っているからと言って、実際そう作られるかというのは別問題ですよね?

    • by nn1963 (35819) on 2010年02月19日 12時14分 (#1720749)

      マジレスすると、以前委託したECサイトのテスト中、入力項目にfontタグ入れてみたら
      見事に文字が赤くなったり大きくなったり。。。

      なんでサニタイズせんのじゃ~~!と委託先にクレームあげたら「最初に言え!」とか
      開き直られました。「んなもん、常識だろうが!」とこっちも吠え返して、社内にあった
      WEBプログラミングのテキストからXSSだのSQLインジェクションへの対策のページを
      送りつけてやりました。

      こういうのって、要求仕様に明記しないといけないのでしょうか?
      呼吸するように実装してくれないと、発注側としては安心できないのですが。

      親コメント
      • by soltiox (25610) on 2010年02月19日 12時39分 (#1720768) 日記

         …… め、めはらみか?

        マジレスすると、この話の受注側はタコだし、
        「んなもん、常識だろうが!」も、もっともなんだけど、
        要求仕様への明記は必要じゃないかな。

        親コメント
      • by heavensgate (21016) on 2010年02月22日 19時07分 (#1722204)

        日本人同士であればまだ阿吽の呼吸でやってくれたりしますが、海外、ことに中国系の場合、
        「書いてないことは全くもってやらない」
        ですよ。書いてあることは「書いてあるとおりに」やってくるけど。
        ※そもそも設計に矛盾があったとしても「書いてあるとおりに」実装してきます

        日本人であれば、実際に組んでいるときに「あれ? これ何かおかしくない?」と気付いたら、それとなく設計に尋ねてみたりするなどして事前に潰せたりするのですが、日本人以外の場合はそのようなことはなく、「設計が気付いてないならしったこっちゃない。うちらは指示通りに組むだけだし」と。分業の徹底といってしまえばそれまでかもしれませんけど。

        まあ、「書いてあること無視する」どこぞの IT よりはマシですが……

        --
        -- To be sincere...
        親コメント
      • この前、Webアプリなのに複数人が同時に編集することを考慮してない画面があって直してたんですが、
        隣の席の中国人に「こういう問題起こさないようにな。」って話したら、
        「こういうところはチェックを入れた方がいいんですか?」って返されました。

        いや、Webアプリなんだからそんなこと考えるまでもないだろ!と久しぶりに声を荒げてしまった。
        むしろ何でチェックを入れなくていいなんて思えるんだ?
        排他制御してください、データが壊れないようにしてください、とか一々伝えないと駄目なのか・・・orz

        # サニタイズ?もちろん毎回言わないとやりませんが何か? 新人じゃなくてWebアプリ経験4年てー。
        # 即戦力だの派遣だの寝言言わずちゃんと教育しようぜ(涙

        • by Anonymous Coward

          > 排他制御してください、データが壊れないようにしてください、とか一々伝えないと駄目なのか

          あなたがどういう立場なのかわかりませんが、それぞれを対処するのにも、システムごとにそれなりにやりかたがあります。ぶっちゃけ、排他制御について、一人のユーザーが使っていたら、他のユーザーの利用を止めてしまうシステムも山のようにあります。

          なんで、そういうことを対処してほしいと思うなら、明確に仕様の段階で盛り込むべきです。設計書を作成した段階で漏れている方が悪いと思います(漏れていることを指摘出来なかった方も悪いけど)。そんで、口頭でしか言わなかったということは、テスト項目から漏れているわけで、当該のシステムの利用はちょっと怖い気がします。

          • by Anonymous Coward

            失礼。誤解を招いたようなので追記します。

            そのシステムを設計したのも作成したのは、私とも隣の人とも縁もゆかりもない別の会社の方々です。
            そんな糞システムなので、えぇ全く持って利用するのも保守するのも怖いです。

            一概に排他制御を入れられない、というのはもちろん判りますが、だからといってデータが壊れるような状況を目にしておいて対策を入れたほうがよい?何て疑問系で出てくるのが信じられませんでした。
            文化の違いとかそんなレベルではなく、プログラマとして間違っていると言いたくなります。

            • by Anonymous Coward

              後からコミットされた方のデータを有効にする、というやり方もあるわけで。
              何をもってデータが壊れるとしているのかもわかりません。

              • by Anonymous Coward

                そこが本題のつもりは無かったのですが、何か気にされているようなのでレスします。

                データが壊れるは文字通りの意味ですね。削除済みのデータにリレーション貼るとか、データがあるのにリレーション消すとか。
                後優先とかで何かしら完全性が保たれていれば、ああそういう設計なのかとも思えるんですが・・・。
                そんなの常識だ!は駄目だと批判されていますが、せめてそれぐらいは考えてほしいです(涙

              • by Anonymous Coward

                参照制約ぐらい言わなくてもつけてくれると思ってた。

                なんてね。
                元コメが全てで「結局契約と金次第」です。
                「安ければなんでも良い」なんて方々もいるのですよ。
                サニタイジングにはその分手間とテストが増えるわけで、その分のコストを見積もっているかどうかです。

              • by Anonymous Coward

                ここで一句

                「そこからか そこからいわんと だめなのか」

                なぜか社内オフショア状況に陥ったSEの世事の句

      • by Anonymous Coward

        >こういうのって、要求仕様に明記しないといけないのでしょうか?
        >呼吸するように実装してくれないと、発注側としては安心できないのですが。

        当然、必要です。
        というか明記されていない仕様を見た事がありませんなw
        「呼吸するように」俺様常識を振り回されると思うと、怖くて受注できません。

        # 日本的馴れ合い要件定義にどっぷりはまってない?
        # 一度海外に投げて「常識」を学んだ方がいいと思うぞ。

        • by Anonymous Coward on 2010年02月19日 13時07分 (#1720793)
          「そんなの常識だ」

          よく聞く言葉ですが、これが出るとそれは大抵発注者の単なる考慮漏れです。
          親コメント
        • by Anonymous Coward

          >入力項目にfontタグ入れてみたら見事に文字が赤くなったり大きくなったり。。。

          ぶっちゃけそういうことを決めることこそが仕様だしなあ。

          [font]をfontタグに変換する仕様だってありだし、半角<>は全部取り除く仕様もありだし。
          <とかにエスケープするのが便利だけど、僅かに手間が増えるし、下手すると
          「タグをエスケープせずにそのまま入れられるようにしてくれ」という注文が出ることもある。
          #つかスラドもそうじゃんか。「テキスト形式(HTML OK)」とかある。

          そういうことを明記してない仕様なんて「ありえない」わけだが、まあニッポンだと
          そういう基本的なことさえ記載されてない「穴だらけの仕様」がジョーシキになっていて、
          発注者側に自覚が無かったりするのが悩みの種だ。

          >というか明記されていない仕様を見た事がありませんなw
          心底羨ましい。
          よほど恵まれた環境で仕事をなされているのですね。

      • by Anonymous Coward
        被害の方に着目して盛り込んでおくと無難で手っ取り早いです。
        ・正当な権限の無い者に、クッキーを含む通信内容を詐取されないこと
        ・アクセス権限のないデータを閲覧されたり改竄されたりしないこと
        など。
        入力にタグを許可するかどうかは微妙なので、どんな入力を許容すべきかは一通り(ホワイトリストで)指定するのが無難ですね。
      • 「書かなくてもやってくれるはず」なんてのは
        お金払わずに、しかも実装仕様は山盛りに盛り込みたい人の勝手な都合です。

        #最初から書いておくと料金上がるから、
        #後になって「いや、これにはこれもついてくるもんでしょ??」とかいってゴネてタダで仕様追加させる技術
      • by Anonymous Coward

        > こういうのって、要求仕様に明記しないといけないのでしょうか?

        要求仕様を明示した委託なんだったら、最初になんらかの形で明記しとかない
        とダメでしょ。そうすれば、最初に入れたものがあいまいでも、そこから契約
        までに『どのレベルまで対策する』とかそういう協議になるはず。

        どこから委託するのか(どういう仕様で作るのかを明文化する作業を含めてコ
        ンサルするところからなのか、例外なく明文化された仕様があってその通り作
        るのか)を考えたほうがよいと思う。

      • by Anonymous Coward

        こんな発注は受けたくない・・・・
        仕様を少なくして値切らなければいいだよ・・・

        書いてないことはしない。
        請負の基本です。

        # そりゃね、同じようなものを複数作るんだったらともかく
        # 毎回違うことをやっているわけで
        # 安心に金をちゃんと払ってくれないからサボるようになってくるんですよ実際。
        # やってられん毎日

      • スラドらしい開発する側からの視点で一杯批判レス付いてるけどさ、ちょっとそれでいいのかという気が・・・。
        俺も開発する側の人間なので、確かに要件に無いものなんてほいほい作らされてたまるか!という自己防衛の気持ちはあるんだけど、これだけセキュリティが問題になっている昨今、XSSやSQLインジェクションの対策をしないって言うのは、

        「注文住宅を作ってください、こういう間取りでこんな感じでお願いします。」

        「はい、できましたよ。ご注文いただいたとおりの間取りになっていると思います。」

        「あー確かに私の要望どおりですねー・・・あれ?玄関にも窓にも鍵

      • by Anonymous Coward

        > こういうのって、要求仕様に明記しないといけないのでしょうか?
        > 呼吸するように実装してくれないと、発注側としては安心できないのですが。

        要求仕様にないってことは、受け入れ試験の基準にもないわけですから、受注側は安心できないでしょうねえ。
        (何をどこまで作れば金を払ってくれるのかわからんということだから)

        ただまあ、大方の請負業者は要求された段階で「実装して欲しければ追加料金だ」なんて言うのを避けて、はじめから仕様追加を見込んだ額を出してきますね。
        で、それを受注側も呼吸するように受けるわけだけど、コストダウンの名の下に見積もりが安い業者に切り替えて痛い目を見たりもする。

    • by Anonymous Coward

      まあ、責任が追求しやすくなるから明記するのは大事だと思うよ。
      こんなの顧客が責任を追うべき事柄じゃないし。

      # 手抜き工事もばれなきゃOK!の精神だね

  • by Anonymous Coward on 2010年02月19日 18時30分 (#1720974)

    残念ながら消費者は形の無い物にお金を出さないし、さほど求めてもいないと思うのですが。

    かなりセキュアっぽい(完璧にセキュアな事は証明出来ない)が、価格が20%増し(開発者が
    責任を負う事になるんだから、保険に入ったり専門のトレーニングをしたりコストが掛かりま
    す)のネットショップで誰が買い物すると思うんでしょうか?

    中国など発展途上国に近い国で作られた工業製品が市場を席巻しているのは、勿論それらの国の
    製品の質の向上もあるでしょうが、それだけでなく適当な品質やデザインで適当な価格を求める
    消費者が多いという事で、凄く質が高かったり非常にセキュアだったりする事を重視する消費者
    は極めて少ないといわざるを得ないのではないでしょうか?

  • by Anonymous Coward on 2010年02月19日 20時06分 (#1721012)

    セキュリティ的に脆弱な部分があるかもしれないので納期を延ばして頂きたい。

    という要望も許可されると言うことですか?
    え?違うんですか?そうですか、違うんですか。

typodupeerror

「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」

読み込み中...