大勢の目(enough eyeballs)で修正できなかったPHP5.3.7 crypt()関数の脆弱性は、むしろ大勢だからこそ生じるモラル・ハザードかもしれない

問題提起です。「大勢の目(enough eyeballs)」によってオープンソース・ソフトウェアの品質は担保されるはずでしたが、必ずしもそうではないようです。では、大勢のチェック(enough eyeballs)が機能するのはどういう場合で、機能しないのはどういう場合でしょうか。

「十分な目ん玉があれば、全てのバグは洗い出される」("Given enough eyeballs, all bugs are shallow")

エリック・レイモンドによるリーナスの法則 - Wikipedia

オープンソースソフトウェアの品質は「大勢の目(enough eyeballs)」により担保される、という言説が有力です。しかし、その命題は常に正しいのだろうか、と疑問を抱くことになりました。

PHP5.3.7のcrypt関数には致命的な脆弱性があります。最悪のケースでは、任意のパスワードでログインできてしまうという事態が発生します。

徳丸浩の日記: PHP5.3.7のcrypt関数に致命的な脆弱性(Bug #55439)

このバグが発生した際に、自動化されたユニットテストは失敗(fail)していたそうです。テストしなかったのか、テスト結果を無視したのかは分かりませんが、ともかく品質保証システムとしての自動テストが有効に機能しなかったということになります。

そして、テストに成功(pass)しなかったソースコードがコミット(commit)され、そのままバージョン5.3.7としてリリースされたということです。

これは「大勢の目(enough eyeballs)でチェックすればソフトウェアの品質は担保される」という言説に反する事象です。むしろ大勢で責任を分担することによって実質的無責任(モラル・ハザード)が生じているように見えます。

プログラマがソースコードを「コミット」する際には、十分にテストして品質を保証したうえで責任を持って「コミット」するだろうと期待するのが普通では無いでしょうか。その期待が裏切られています。これは根深い問題かもしれません。PHPコミュニティにおいてこの問題が根本的に解決されず宿痾として残るならば、PHPの品質は恒久的に不安定になるでしょうし、悪化すればアノミー(社会の規範が弛緩・崩壊などすることによる、無規範状態や無規則状態 - Wikipedia)に陥るかもしれません。社会学・経済学的なモラル・ハザードの分析が有効かもしれません。

これは大勢で責任を分担したことによる「モラル・ハザード」と理解してよいのでしょうか。しかしLinux等ではむしろそれでうまく行っているのだとすれば、何がPHPとLinuxの違いなのでしょうか。PHP開発者に特有の文化や慣行もありそうですね。プログラマの気質、動機などエリック・レイモンド的な分析も有効だと思います。

「大勢の目(enough eyeballs)」が上手く機能する場合と、上手く機能しない場合の違いは何でしょうか。この問いは、ボランティア活動におけるモラル・ハザード発生条件、コミュニティ活動維持条件の理解にもつながると思います。以上、問題提起でした。

トラックバック(0)

トラックバックURL: http://zerobase.jp/mt/mt-tb.cgi/1089