ハートブリードとオープンソースの誤解

OpenSSLライブラリで見つかった悪名高いHeartbleedバグは、ソフトウェア業界に衝撃を与えました。 彼はまた、オープンソフトウェアの世界についてのいくつかの誤解を示しました。



1) ライナスの法則



「十分な目で、バグが浮上します」とエリック・レイモンド。


Linusの法則では、十分な数のユーザーと十分な数の開発者がコードをチェックすると、オープンソースコードのエラーが検出され、徐々に修正されるため、クローズド/プロプライエタリソフトウェアと比較して、より正確で安全なコードになります。



本「プロフェッショナルプログラミングの事実とエラー」では、 これを8番目のエラーと呼んでいます 。 この本は、新しいバグが発見される頻度はレビュアーの数に比例して増加しないという研究を引用しています。 私は、人々がソフトウェアのバグを見つけるのに貧弱な仕事をしているという事実は、どんな開発者にとっても明らかであると信じています。 構文の問題やアンチパターンの使用などの明らかなバグはコード検証の段階で簡単に見つけることができますが、他の多くのバグはプログラムを使用している場合にのみ公開できます。



したがって、ユーザーはタスクの一部になります。 もちろん、コード検証段階でバグがスキップされた場合、最終プログラムの実際の使用中にバグが見つかりますよね? 繰り返しますが、これはそうではありません。 コードチェックと同様に、明らかなエラーのみが簡単に見つかります。 非常に特定の条件下、またはエンドユーザーに明らかでない条件下でのみ現れる問題は、長期間検出されない可能性があります。 プログラムが複雑になり、ユーザーのタスクを実行するほど、ユーザーがその正当性を検証するのが難しくなります。 プログラムは通常、人により多くの時間を必要とするタスクを実行するため、正確性を確保するためにプロセスを手動で繰り返すことは非常に困難です。



Heartbleedはこのルールを示しています。OpenSSLは世界中の数百万の企業で使用されており、その多くは数百万のユーザーにサービスを提供する独立したフルタイムのソフトウェアエンジニアがいます。 それでも、このホールはほぼ2年間検出されず、セキュリティチームが行動を開始しなかった場合は不明のままになる可能性があります。



数日前に私がハッカーニュースで見たコメントそれをうまくまとめています:



「複数の目」に関する虚偽の声明は、公式のチェックだけに適用されません。 また、プロジェクトのオープン性の程度は、コードを読み取る特権に関して特に重要ではないという考えをもたらします。プロジェクトが開いているか閉じているかはあまり重要ではなく、主にメンテナーとその同僚によってチェックされます。 実際、オープンソースの世界のほとんどの場合、特定のコミットを実際に理解している人々の輪は、クローズドコードの場合よりもわずかに多いだけです。 バグが発生した場合、バグは「表面化」する可能性がわずかに高くなります。 Heartbleedの場合、コードがオープンであるにもかかわらず1人だけがチェックしたという事実は、これを確認するだけです。


したがって、正確性とセキュリティに関するオープンソースとクローズドソースの利点は、あるとしても最小限です。 オープンソースソフトウェアの強みは、バグを自分の手で閉じることができることです。ただし、この場合、データ保護ソフトウェア、特にコードの複雑さで知られるプロジェクトであるOpenSSLレベルの修正はほとんどのプログラマーの能力を超えているため、ほとんどの人(および開発者)は公式パッチを待っていました。



2)ほとんどのオープンソースソフトウェアは、専門的に開発またはサポートされていません。



Heartbleedが示したように、ほとんどのインターネットで使用される重要なソフトウェアプロジェクトでさえ、常に専門的なサポートのためのリソースを持っているわけではありません。 OpenSSLチームは、寄付を通じて年間わずか2,000ドルを受け取っています。 Heartbleedの脆弱性に関する多くの記事は非難的な口調で書かれており、これまでのところ、これらの人々が自由時間に自発的に働き、恩知らずの社会活動としか考えられないことをすることを示唆した人はいませんでした。



このバグの出現を許可した開発者はプロのプログラマーでもありません-彼は大学院生です。 専門家とは、自分の活動で生活する人のことです。 彼は非常に専門化されたOpenSSLレベルのライブラリの開発を支援できるという事実にもかかわらず、科学に携わる人から、長年業界で働いている専門家と同じコード標準を期待することはできません。主要なデータ保護ツールのメンテナーとして。



これは、オープンソースソフトウェアの長所と短所の1つです 。つまり、彼のバックグラウンドやプロ意識にかかわらず、誰でも貢献できるということです。 多くのオープンソースプロジェクトはアマチュアによって作成されました。これは美であり、同時にユーザーが覚えておくべきリスクです。



一部の重要なプロジェクトにはスポンサー企業がおり、フルタイムの専門家を雇用できますが、ほとんどのオープンソースプロジェクトでは寄付を行うことでほとんど目標を達成できません。 私は、商用プログラムと同じリソースをオープンソースの世界に提供することが、誰にとっても役立つ高品質の実行可能なプロジェクトを作成する最良の方法かもしれないと信じています。



企業からの支援を受けていないプロジェクト(および民間企業は通常のユーザーの制御が及ばないプロジェクト)の場合、Open-Core(ライブなどのMySQLなど)、サービスおよび監督(Red Hatなど)などの代替存在のモデルが利用可能です。 ほとんどの場合、寄付だけに頼るだけでは十分ではありません



このプロジェクトはインターネットにとって重要なので、誰かがOpenSSLのさらなる開発を引き受けてくれることを願っています。 そうでない場合、メンテナーが彼らが望んでいるのであれば、彼らがプロジェクトを絶えずサポートできる代替ビジネスモデルについて真剣に考えることを願っています。 私はそれについて確信がありません。



3)各プロジェクトにはバグがあります。 オープンソースの世界では、見つけるリソースが少なくなっています。



多くのユーザーは、無料で何かを手に入れても、借りていると感じています。 OpenSSLのメンテナーは多くの 苦情告発 を受けましたが、開発者は長年にわたって重要な自発的な仕事をしてきました。 無料のライブラリを提供し、個人や企業が送信メッセージを暗号化してデータを保護できるようにしました。 プログラマーは自由な時間に働き、その努力をあまり認識していませんでした。



Heartbleedが意図的に追加されたことを示唆するまでに行った人もいた 。 あなたが陰謀理論の支持者でない限り、そのような自由な労働を行う人々がこのバグを意図的に導入するという仮定はばかげているように聞こえます。



真実は、ソフトウェアには常にバグがあるということです。 これは、開発者が仕事の初日からの経験から知っていることです。 いくつのテストが行​​われたとしても、開発プロセスがどれだけ厳密に行われていても、常にいくつかのバグが発生します。 追加のリソースでその数を減らすことはできますが、それらを完全に取り除くことはできません。 すべてのメンテナーがフルタイムモードでプロジェクトに取り組んでおり、より厳密なテストと検証プロセスのための時間があった場合、開発プロセス中にHeartbleedをキャッチできますか? おそらく、しかし、私たちはこれを決して知ることはありません。



これは、オープンソースのユーザーが留意すべきことです。 バグは、オープンソースを含むすべてのプログラムに存在し、オープンソースプログラムの開発者は通常、それらを見つけるためのリソースがはるかに少ないです。



したがって、inして料金を請求する代わりに、利用可能な無料の(価値と使用において)ツールに感謝します。 可能であれば、メンテナーに感謝の気持ちを示し、彼らの努力をサポートしてください。 もしあなたがオープンソースソフトウェアに基づいたソリューションの使用に真剣に依存しているなら、たとえあなたにかなりの費用がかかったとしても、彼らの開発者にフルタイムで働くよう動機付けてください。



All Articles