最も危険なプログラミングエラーTop 25、2010年版 58
ストーリー by hylom
昨年とあまり変わってないような、 部門より
昨年とあまり変わってないような、 部門より
あるAnonymous Coward 曰く、
昨年も取りまとめられていた「最も危険なプログラミングエラーTop 25」の2010年版が発表された(本家/.記事)。
2010年版で一番のエラーとされたのは、クロススクリプティングを引き起こし得る「ウェブサイトの設計不備」。その後にSQLインジェクションの原因となる「SQLクエリの保護不備」、バッファオーバーフローの原因となる「メモリバッファ境界チェックの不備」と続く。このTop 25のエラーは、最近中国で起きたGoogleへの大規模サイバー攻撃や、その他軍用システムから一般ユーザまでを対象とした大小様々なサイバー攻撃の多くで悪用されているとのこと。
今回のレポートでは、製品のセキュリティに対して開発者らが責任を負うよう消費者が声を挙げるべきであると推奨している。「開発チームのメンバー全員がセキュアプログラミング技術のトレーニングを適切に受けていることを確証する責任を負う」ようベンダーに求めるなど、顧客としてセキュリティを重要視していることを伝え、より安全な製品を培う姿勢が必要であるとのこと。レポートでは、この目的のために製品購入者やユーザが活用できるドキュメントのドラフト(日本語版PDF)も提供されている。
プロトコルの不備はだれが責任を負うのか? (スコア:2, 興味深い)
WEP、IPv6の近隣探索などの設計の不備や、FTP、POP3 などなど平文でパスワードを流す仕様とか。
それを採用した業者/実装した開発者の責任?
Re:プロトコルの不備はだれが責任を負うのか? (スコア:2)
Re:プロトコルの不備はだれが責任を負うのか? (スコア:1, おもしろおかしい)
Cとか
Cとか
Cとか
Re: (スコア:0)
そうでしょうね。
貴方が明確に要件を述べて、それに合致していると説明を受け、サービスを利用しているならば。
Re:プロトコルの不備はだれが責任を負うのか? (スコア:1)
> 貴方が明確に要件を述べて、それに合致していると説明を受け、サービスを利用しているならば。
コメントが想定しているシチュエーションが分からないのですが・・・
SMTPやPOP3が平文で流れていることを知らずに使っている、ごくごく一般的な利用者に対する救済措置というか責任の所在というか、そのへんを問いたかったのです。
インターネットに接続する際、一般的な利用者はプロバイダーからもらった説明書の通りに設定しているだけで、要件を述べることは殆どないでしょう。
無線LANも然り。
セキュリティの不備に製造側が責任って (スコア:1)
そんなことになったら、マイクロソフトはどんだけの目にあわされることやら。
あと、オープンソースのソフトウェアも大変なことに。
賠償の限度はソフトウェア代金を上限とする、とかなら、フリーウェアは逆に有利かもしれないが。
Re:セキュリティの不備に製造側が責任って (スコア:1)
Re:セキュリティの不備に製造側が責任って (スコア:1)
おお、まったくその通りですね。
責任取る => カネで解決かと勘違いしてました。
まだ法律とか義務化されていない時点で云々してもあれだけど、
セキュリティホールを知ってて、金をもらえないからとか、怠慢とかで放置した場合、責任を問われる可能性があるわけか。
そうなると、MSの場合、アップデートを月例パッチにまとめてるけど、
そのタイムラグでシステムを破られたらどうなるのか気になる。
Re: (スコア:0)
ブレーキが効かなかったら、速度を落としたり、強めに踏んだりする工夫も必要じゃないのかな。
Re: (スコア:0)
以前のMSの開発者が、極めて優秀、ではなかったのは確かでしょうが、
開発者は失敗から学ぶものなので、先進的(?)な技術でコケることを批判しすぎるのは
ちょっと可哀想な気もします。
#ストリートビューも先進的な技術にセキュリティの不備が含まれてた例かな、関係ないけど
整数オーバフロー (スコア:1)
Re: (スコア:0)
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
Re: (スコア:0)
検出漏れはないし、経験上バグじゃないとこをバグ有りって検出したことはないからあんま心配しなくても大丈夫。
コーディング中の・・・ (スコア:1)
F7でビルドした瞬間に落ちやがりましたよ。
○ffice関連も同様ですが、保存しないうちにエラーになるとかなり危ないですよ。
いろんなプロジェクトや仕事が停滞します。
○utlook なんてメールが受け取れなくなること
もしばしばですからね。
そして、私の Windows 7 EP は
セーフモードで起動すると
1.エクスプローラーの強制終了
2.ヘルプ~が立ち上がる
3.何か操作をしようと試みるとエクスプローラー再起動
goto 1
みたいな状態になるんですよね・・・
セーフモードじゃなにもできない orz
Re:コーディング中の・・・ (スコア:2)
Visual Studi○ で3000行ぐらいの簡単なツールを書いていた時
F7でビルドした瞬間に落ちやがりましたよ。
Visual Studi○とやらはセーブしないでコンパイルが始まるのですか?
コンパイルはファイル入出力で行われていると思っていたので意外でした。
もしかするとビルドのキーを押してセーブされるまでに落ちたとか?
○ffice関連も同様ですが、保存しないうちにエラーになるとかなり危ないですよ。
こちらは経験ありです。
保存していてもどうにもこうにもできない詰みの状態になってしまうこともあるので、
2-3代前のファイルも保存していたりして逃げています。
Re: (スコア:0)
なんのはなし?
Re: (スコア:0)
もしかして,これじゃね?! トロイの木馬に感染?!
http://srad.jp/security/article.pl?sid=10/02/18/0228205 [srad.jp]
Re:コーディング中の・・・ (スコア:1)
しかしながらトロイとは無関係のようです。
価格comで似た事例を発見しました。
ttp://bbs.kakaku.com/bbs/K0000059890/SortID=10682770/
やはりお前か ○ffice !
orz
Lethal Weapon (スコア:0)
Re: (スコア:0)
最近では「猫が児童ポルノをダウンロードした [srad.jp]」、
さて、将来的にはどんなことをしでかすのやら……。
#カバーでもつけとく?
Re:Lethal Weapon (スコア:1)
この前 Outlook Expressで「迷惑メール」を
送信しました。
Re: (スコア:0)
ぬるぽ (スコア:0)
結局契約と金次第 (スコア:0)
「開発チームのメンバー全員がセキュアプログラミング技術のトレーニングを適切に受けていることを確証する責任を負」っているからと言って、実際そう作られるかというのは別問題ですよね?
Re:結局契約と金次第 (スコア:3, 興味深い)
マジレスすると、以前委託したECサイトのテスト中、入力項目にfontタグ入れてみたら
見事に文字が赤くなったり大きくなったり。。。
なんでサニタイズせんのじゃ~~!と委託先にクレームあげたら「最初に言え!」とか
開き直られました。「んなもん、常識だろうが!」とこっちも吠え返して、社内にあった
WEBプログラミングのテキストからXSSだのSQLインジェクションへの対策のページを
送りつけてやりました。
こういうのって、要求仕様に明記しないといけないのでしょうか?
呼吸するように実装してくれないと、発注側としては安心できないのですが。
Re:結局契約と金次第 (スコア:1)
…… め、めはらみか?
マジレスすると、この話の受注側はタコだし、
「んなもん、常識だろうが!」も、もっともなんだけど、
要求仕様への明記は必要じゃないかな。
Re:結局契約と金次第 (スコア:1)
日本人同士であればまだ阿吽の呼吸でやってくれたりしますが、海外、ことに中国系の場合、
「書いてないことは全くもってやらない」
ですよ。書いてあることは「書いてあるとおりに」やってくるけど。
※そもそも設計に矛盾があったとしても「書いてあるとおりに」実装してきます
日本人であれば、実際に組んでいるときに「あれ? これ何かおかしくない?」と気付いたら、それとなく設計に尋ねてみたりするなどして事前に潰せたりするのですが、日本人以外の場合はそのようなことはなく、「設計が気付いてないならしったこっちゃない。うちらは指示通りに組むだけだし」と。分業の徹底といってしまえばそれまでかもしれませんけど。
まあ、「書いてあること無視する」どこぞの IT よりはマシですが……
-- To be sincere...
見た目動けばいい人たち (スコア:0)
この前、Webアプリなのに複数人が同時に編集することを考慮してない画面があって直してたんですが、
隣の席の中国人に「こういう問題起こさないようにな。」って話したら、
「こういうところはチェックを入れた方がいいんですか?」って返されました。
いや、Webアプリなんだからそんなこと考えるまでもないだろ!と久しぶりに声を荒げてしまった。
むしろ何でチェックを入れなくていいなんて思えるんだ?
排他制御してください、データが壊れないようにしてください、とか一々伝えないと駄目なのか・・・orz
# サニタイズ?もちろん毎回言わないとやりませんが何か? 新人じゃなくてWebアプリ経験4年てー。
# 即戦力だの派遣だの寝言言わずちゃんと教育しようぜ(涙
Re: (スコア:0)
> 排他制御してください、データが壊れないようにしてください、とか一々伝えないと駄目なのか
あなたがどういう立場なのかわかりませんが、それぞれを対処するのにも、システムごとにそれなりにやりかたがあります。ぶっちゃけ、排他制御について、一人のユーザーが使っていたら、他のユーザーの利用を止めてしまうシステムも山のようにあります。
なんで、そういうことを対処してほしいと思うなら、明確に仕様の段階で盛り込むべきです。設計書を作成した段階で漏れている方が悪いと思います(漏れていることを指摘出来なかった方も悪いけど)。そんで、口頭でしか言わなかったということは、テスト項目から漏れているわけで、当該のシステムの利用はちょっと怖い気がします。
Re: (スコア:0)
失礼。誤解を招いたようなので追記します。
そのシステムを設計したのも作成したのは、私とも隣の人とも縁もゆかりもない別の会社の方々です。
そんな糞システムなので、えぇ全く持って利用するのも保守するのも怖いです。
一概に排他制御を入れられない、というのはもちろん判りますが、だからといってデータが壊れるような状況を目にしておいて対策を入れたほうがよい?何て疑問系で出てくるのが信じられませんでした。
文化の違いとかそんなレベルではなく、プログラマとして間違っていると言いたくなります。
Re: (スコア:0)
後からコミットされた方のデータを有効にする、というやり方もあるわけで。
何をもってデータが壊れるとしているのかもわかりません。
Re: (スコア:0)
そこが本題のつもりは無かったのですが、何か気にされているようなのでレスします。
データが壊れるは文字通りの意味ですね。削除済みのデータにリレーション貼るとか、データがあるのにリレーション消すとか。
後優先とかで何かしら完全性が保たれていれば、ああそういう設計なのかとも思えるんですが・・・。
そんなの常識だ!は駄目だと批判されていますが、せめてそれぐらいは考えてほしいです(涙
Re: (スコア:0)
参照制約ぐらい言わなくてもつけてくれると思ってた。
なんてね。
元コメが全てで「結局契約と金次第」です。
「安ければなんでも良い」なんて方々もいるのですよ。
サニタイジングにはその分手間とテストが増えるわけで、その分のコストを見積もっているかどうかです。
Re: (スコア:0)
ここで一句
「そこからか そこからいわんと だめなのか」
なぜか社内オフショア状況に陥ったSEの世事の句
Re: (スコア:0)
>こういうのって、要求仕様に明記しないといけないのでしょうか?
>呼吸するように実装してくれないと、発注側としては安心できないのですが。
当然、必要です。
というか明記されていない仕様を見た事がありませんなw
「呼吸するように」俺様常識を振り回されると思うと、怖くて受注できません。
# 日本的馴れ合い要件定義にどっぷりはまってない?
# 一度海外に投げて「常識」を学んだ方がいいと思うぞ。
Re:結局契約と金次第 (スコア:1, 興味深い)
よく聞く言葉ですが、これが出るとそれは大抵発注者の単なる考慮漏れです。
Re: (スコア:0)
>入力項目にfontタグ入れてみたら見事に文字が赤くなったり大きくなったり。。。
ぶっちゃけそういうことを決めることこそが仕様だしなあ。
[font]をfontタグに変換する仕様だってありだし、半角<>は全部取り除く仕様もありだし。
<とかにエスケープするのが便利だけど、僅かに手間が増えるし、下手すると
「タグをエスケープせずにそのまま入れられるようにしてくれ」という注文が出ることもある。
#つかスラドもそうじゃんか。「テキスト形式(HTML OK)」とかある。
そういうことを明記してない仕様なんて「ありえない」わけだが、まあニッポンだと
そういう基本的なことさえ記載されてない「穴だらけの仕様」がジョーシキになっていて、
発注者側に自覚が無かったりするのが悩みの種だ。
>というか明記されていない仕様を見た事がありませんなw
心底羨ましい。
よほど恵まれた環境で仕事をなされているのですね。
Re: (スコア:0)
・正当な権限の無い者に、クッキーを含む通信内容を詐取されないこと
・アクセス権限のないデータを閲覧されたり改竄されたりしないこと
など。
入力にタグを許可するかどうかは微妙なので、どんな入力を許容すべきかは一通り(ホワイトリストで)指定するのが無難ですね。
「書かなくてもやってくれるはず」って? (スコア:0)
お金払わずに、しかも実装仕様は山盛りに盛り込みたい人の勝手な都合です。
#最初から書いておくと料金上がるから、
#後になって「いや、これにはこれもついてくるもんでしょ??」とかいってゴネてタダで仕様追加させる技術
Re: (スコア:0)
> こういうのって、要求仕様に明記しないといけないのでしょうか?
要求仕様を明示した委託なんだったら、最初になんらかの形で明記しとかない
とダメでしょ。そうすれば、最初に入れたものがあいまいでも、そこから契約
までに『どのレベルまで対策する』とかそういう協議になるはず。
どこから委託するのか(どういう仕様で作るのかを明文化する作業を含めてコ
ンサルするところからなのか、例外なく明文化された仕様があってその通り作
るのか)を考えたほうがよいと思う。
Re: (スコア:0)
こんな発注は受けたくない・・・・
仕様を少なくして値切らなければいいだよ・・・
書いてないことはしない。
請負の基本です。
# そりゃね、同じようなものを複数作るんだったらともかく
# 毎回違うことをやっているわけで
# 安心に金をちゃんと払ってくれないからサボるようになってくるんですよ実際。
# やってられん毎日
玄関に鍵を付けるなんて要件なかった (スコア:0)
スラドらしい開発する側からの視点で一杯批判レス付いてるけどさ、ちょっとそれでいいのかという気が・・・。
俺も開発する側の人間なので、確かに要件に無いものなんてほいほい作らされてたまるか!という自己防衛の気持ちはあるんだけど、これだけセキュリティが問題になっている昨今、XSSやSQLインジェクションの対策をしないって言うのは、
「注文住宅を作ってください、こういう間取りでこんな感じでお願いします。」
↓
「はい、できましたよ。ご注文いただいたとおりの間取りになっていると思います。」
↓
「あー確かに私の要望どおりですねー・・・あれ?玄関にも窓にも鍵
Re:玄関に鍵を付けるなんて要件なかった (スコア:2)
カタログに載っているようなドアだと通常鍵はついていますが、
木工職人に木材からドアを作ってくれと依頼した場合、鍵を指定しないと
鍵なしになるような・・・
なので、特に何も言わなくても期待しているものが一通りそろってることを
求めるならパッケージを買いましょう。
Re:玄関に鍵を付けるなんて要件なかった (スコア:2)
Re:玄関に鍵を付けるなんて要件なかった (スコア:1)
理想的には受注側が契約前に仕様の不備を指摘して両者で協議できればいいんですけどねえ。
Re: (スコア:0)
少なくとも、これは、プログラマーの責任じゃなくて、上流設計での問題ですね。上流が仕事サボって「常識だろう」とか言い出したら、プログラマーは怒ってよい。もちろん、ツッコミ返してもいいけど、それだったら、その人が仕様書作ればいいのだし。
Re: (スコア:0)
> こういうのって、要求仕様に明記しないといけないのでしょうか?
> 呼吸するように実装してくれないと、発注側としては安心できないのですが。
要求仕様にないってことは、受け入れ試験の基準にもないわけですから、受注側は安心できないでしょうねえ。
(何をどこまで作れば金を払ってくれるのかわからんということだから)
ただまあ、大方の請負業者は要求された段階で「実装して欲しければ追加料金だ」なんて言うのを避けて、はじめから仕様追加を見込んだ額を出してきますね。
で、それを受注側も呼吸するように受けるわけだけど、コストダウンの名の下に見積もりが安い業者に切り替えて痛い目を見たりもする。
Re: (スコア:0)
まあ、責任が追求しやすくなるから明記するのは大事だと思うよ。
こんなの顧客が責任を追うべき事柄じゃないし。
# 手抜き工事もばれなきゃOK!の精神だね
消費者はそんなに求めていない (スコア:0)
残念ながら消費者は形の無い物にお金を出さないし、さほど求めてもいないと思うのですが。
かなりセキュアっぽい(完璧にセキュアな事は証明出来ない)が、価格が20%増し(開発者が
責任を負う事になるんだから、保険に入ったり専門のトレーニングをしたりコストが掛かりま
す)のネットショップで誰が買い物すると思うんでしょうか?
中国など発展途上国に近い国で作られた工業製品が市場を席巻しているのは、勿論それらの国の
製品の質の向上もあるでしょうが、それだけでなく適当な品質やデザインで適当な価格を求める
消費者が多いという事で、凄く質が高かったり非常にセキュアだったりする事を重視する消費者
は極めて少ないといわざるを得ないのではないでしょうか?
なに?それは大変だ! (スコア:0)
セキュリティ的に脆弱な部分があるかもしれないので納期を延ばして頂きたい。
という要望も許可されると言うことですか?
え?違うんですか?そうですか、違うんですか。