先週、Debianの多くのユーザーはOpenSSH、OpenSSLおよびOpenVPNのための暗号鍵に比較的容易な妥協に傷つきやすいすべてがしばらくあることを意識したときに衝撃の何かを得た。 以前は、私はいかにDebianの傷つきやすいSSHのキーを検出し、取り替えることができるVincent Danenはこの混乱状態の結果として起こった暗号の主脆弱性を見つけ、固定する別の平均を説明したか論議し。 そんなに技術的な問題のために-今私は物語の残りの手っ取り早い概観を提供する。
起こった何が
問題はある保証用具の側面図を描くDebianのパッケージの支持者によって使用されたvalgrindがしていたことを理解しないでことを「固定」ある「問題」それ見つけたことであり。 問題は通常悪い虫のよい印のが、間違って何でもあるという印常にではない初期設定されていない記憶のvalgrindのレポート問題がことである。 実際は、初期設定されていない記憶使用法はこの場合OpenSSHのような暗号用具の適切な処理にcritialである。
初期設定されていない記憶問題の「修理によって」、Debianのパッケージの支持者は暗号鍵を発生させるのに使用するプールにエントロピーを加えるOpenSSLように用具の能力を破壊した。 これらの支持者は初期設定されていない記憶使用を除去するためにvalgrindをおこらせたがこれらの用具の機能をエントロピープールに新しい記憶を全然加える除去したコードしか変更しなかった。 最終結果はこれらの用具が暴力の攻撃をちょうど可能にする潜在的な暗号鍵の非常に極限集合に効果的に制限されたある手段、容易ことである。
実際の問題は暗号鍵生成のための乱数を発生させるのにOpenSSHおよびOpenVPNのプロジェクトによって使用されているOpenSSLの図書館にパッチと起こった。
訂正した何を
Valgrindは大きい用具である。 それを使用することを避ける理由がない。 、この場合、実際に問題ではない問題として何かを報告したという事実は、実質問題が起こったかところにではない。 (また初期設定されていない記憶についての警告を発声する) valgrindのような用具はである非常に役立つ用具浄化し、どのCの開発者でも1人と彼自身または両方を精通させるべきである。 実際はそれらは正しく使用されれば発見し、固定安全保障問題の非常に貴重証明してもいい。
それらを使用しているDebianのパッケージの支持者および人々はまた明白な問題のもとを出来る限り見つけ出すことの適正評価を用いた。 彼らは可能な解決策を論議し、ちょうど実際の問題として見たものを隠すよりもむしろ本当の解決法を選び。
OpenSSH、OpenSSLおよびOpenVPNのチームは、彼らの部品のために、固定する必要があった脆弱性および虫の証拠と示されたとき、高品質を有用なし、維持の年にわたるすばらしい仕事非常に用具をしっかり止め、そして彼らの充満のソフトウェアを無視しなかった。
彼らが悪いことをした何を
Debianのパッケージの隠れる問題よりもむしろ固定の方に目とよ推論された、注意深い方法で問題を解決するための彼らの選択を、論議するすべての単一の最も明らかな-および明らかに訂正しなさい-選択を逃した。 彼らは疑わしい保証用具のための上流の開発者と連絡をとることを考慮し損った。
明らかにそのタイプのソフトウェアについての公平なビットを知っているもう一人のチームによって開発され、維持される1つのソフトウェアとの問題を有する時、虫およびあなたが見つける問題は上流の開発者の注意に持って来られるべきである。 これは疑わしいソフトウェアが保証ソフトウェアのときあなた自身件名の専門家の、重要性のそのレベルは一桁によって増加するとき二倍に重要であり。
安全な方法の成長の非保証によって方向づけられるソフトウェアはよい開発の練習の知識を、共通の安全保障の失敗および脆弱性および有効なテスト技術必要とする。 それはどの開発者でも彼の頭部であるべきである知識である。 しかし成長の実際の保証ソフトウェアは強要し、要求し、そして非常に専門にされた活動である。 それはが単に下ることができない専門知識のレベルを必要とする。 深くあなた自身あなたの後ろの経験の公平なビット保証ソフトウェア開発にとかかわらなければ、あなた自身に決してあなたの肩にあなた自身に見、あなたの仕事を点検することの専門家か6なしで保証ソフトウェア開発の専門家の決定を勘ぐるためにそれを取るべきではない。
これはほとんどあらゆる状況の下で上がることができる問題当然である- Linuxの配分のプロジェクトのパッケージの支持者に、また更に正当に頻繁にエントロピープールを新たになる初期設定されていない記憶使用の場合にはように虫の印として考慮されるコードを利用するソフトウェアに特定ではない。 この問題は特にオープンソースプロジェクトと起こったので通常より保証ソフトウェア問題の悪い処理のさらにもっと言語道断な例である。
オープンソースソフトウェアの利点の1つは問題を発見する彼ら自身のためのだけそのソフトウェアのすべてのユーザーのための問題を解決するためにだれでも、または問題のかもしれない何かは上流の開発者と(しかしこの場合として、実際にない)、協力できることである。 実際はそうすることは肩および場所から属するところでソフトウエア保守の重量の一部をそれ取除く: 上流の開発者の肩。 したがって、Debianのパッケージの支持者の」間違いは初期設定されていない記憶使用は実際の問題だったかどうか間違った答えがあったかしたことをことそのような物だった。 その場合、それらはより遅い上流の更新と対立できる問題を局部的に防ぎ解決し他の下流のユーザーがそれを共有しないこと、そのような事を維持する仕事それがである人々へのそれを渡すよりもむしろことをことを苦境の維持の個人的に取得によって彼らの自身の作業負荷へ加えることによってだけ同じ苦境を得ることを。 それが実際の問題ではなかったので」、固定それら「実際に全然「固定される」べきな何かおよび巨大な問題何もから作成されて。
どんなにもかかわらず上流の源があなたが使用するソフトウェアを提供しているか、または他に-のは閉鎖した源の商業開発者またはオープンソースプロジェクトであるかどうか-あなたの能力のベストへの潜在的問題を文書化した後あなたの最初本能どんな適切なチャネルあなたに利用できる持っている上流のソフトウェア開発者にによって連絡すること常にべきである再分配しなさい。 もし考慮すれば従ってした後やっと苦境を上流にから得るよりもむしろそれを局部的に固定することを(多分上流の開発者にパッチを堤出した後)。 それが保証ソフトウェアなら、愚かな間違えていないことを保証ソフトウェア開発の専門家でなければ、またはあなたの仕事を見直す手の1つを持つために確かめるべきではないそれからそれをあなた自身修理する。
しかし待ち時間-多くがある! これは完全にDebianのパッケージの支持者との問題ではない。 OpenSSLのチームは少し、余りに行為をちょうどきれいにする必要がある場合もある。 OpenSSLのプロジェクトの右の人々と連絡をとることはより少なくより明らかなプロセス、外見上である。 openssldevメーリングリストが、名前にもかかわらず、OpenSSLの開発を論議する場所ではないとOpenSSLの中心のチーム・メンバーベンLaurieは言った。 OpenSSLサポートページはしかし「OpenSSLの図書館の開発についての議論のためのメーリングリストとしてそれを」、識別する。 より悪い、valgrindの警告がOpenSSLのドキュメンテーションかWebページで注意されないようではないように彼が報告問題のために提案する「opensslチーム」電子メールアドレス。
OpenSSLのチームはより入手しやすくそのようなレポートの受け入れの優先する方法をさせる必要がある。 一方で、それは許しちょうどコードを堤出すること局部的に修繕し、それで残すよりもむしろからDebianのパッケージの支持者をDebianのプロジェクトでOpenSSLのチームにパッチを。 さまざまなレベルに、それは含まれた皆過失のあったがあったことをようである。
別の例
別明白な虫を誤って処置している下流ソフトウェアユーザーの最近の、より少なく妨げていたら、例は祝われた25歳BSDの虫である。 サンバのチームは同時ファイルアクセスの対立の結果が出すMS-DOSのファイルシステムを扱うためのBSD Unixコードの虫を発見した。 この問題は、1983年以来、あらゆるBSD UnixおよびかなりAppleのMacOS X.を含む派生物OS、影響を与えられて持っている。
ここの失敗はきちんと固定できるようにそれらが問題に注意深いBSDの開発者よりもむしろ問題を発見したときにサンバのチームがサンバコードに回避策を書いたことである。 再度、コミュニケーションの欠乏は部分最適の結果をもたらした。 再度、問題はおこる党が決してオープンソースプロジェクトの上流の開発者と連絡をとることを迷惑を掛けなかったという事実によって混合する。 幸いにも、この判断ミスは広く影響を与えることの可能性としては非常に有害なセキュリティーの脆弱性で起因しなかった。
レッスン
私が既に言ってしまったことをのレッスンが繰り返しであるので私が提供してもいいすべて:
- あなたの最初本能は上流の開発者の注意に虫を持って来ること常にべきである。
- 行なう必要性を上流の開発者に話すことの後で、上流のプロジェクトの全身の維持問題を解決するために分岐しないでプロジェクトローカル変更を感じても決してあなたが理解しないコード問題を解決することを試みるべきではない。
- 多分あなた自身ベテランの保証ソフトウェア開発者またはあなたの仕事を慎重に検査する1近い手もとを持っていることでなかったら保証ソフトウェアが付いている問題(また更にそのそこに*is*を問題)理解することを重大に、決して仮定してはいけない。
- 最後に-およびこれは可能な限り利用するオープンソース開発モデルを全の最も明らかなポイントべきである。 虫を修理することをあなたが他の源から得ているソフトウェアへの下流の変更をもたらすことはどの苦境でも適用された後上流の開発者を」ソフトウェアとの精通度利用していないが、大抵のでそれがソフトウェアを維持する上流の開発者」の仕事であるのであなたの開発努力の利点の上流の開発者を奪い取っていると一部であるので丁度にはそれを、一部する間違った方法。
オープンソースソフトウェアの開発のここに発明されなかったシンドロームのための部屋がない。 NIHが正しいことをする方法で得るようにするときオープンソース開発をより長くしていない。


