Androidカーネルに350件以上のバグを発見、そのうち25%が高リスク~米コベリティ

静的ソースコード解析ツールの最新版「Coverity 5.3」も発表


 ソースコード解析ツールのベンダーである米Coverity(以下、コベリティ)は17日、2010年オープンソース品質評価レポートの結果を発表した。このレポートにおいて同社では、LinuxやApacheなどをはじめとした、一般的に広く利用されているオープンソース・プロジェクト291件、合計6100万行を超えるオープンソース・コードを解析し、その調査結果を詳細に記述している。

 オープンソース品質評価レポートは、2006年にコベリティと米国・国土安全保障省が官民共同で開始した「オープンソース・ソフトウェアのインテグリティ(ソースコードの品質)に関する調査」のプロジェクトの結果をまとめたもの。本年のオープンソース品質評価レポートには、ソフトウェアソースコードの説明責任と可視性の必要性を警鐘するため、携帯電話などで利用されることの多いAndroidカーネルに関する詳細な解析結果レポートが含まれている。特定のオープンソースについての詳細な解析結果が掲載されたのは今回が初となる。

 解析対象となったAndroidカーネルは、「Androidカーネル2.6.32」(開発コード名「Froyo」)で、Qualcomm MSM7xxx/QSD8x50チップセット搭載のスマートフォン(具体的にはHTCのDroid Incredible)で使用されている。そのため、テストを実施したバージョンには、標準のカーネルに加えて、ワイヤレス、タッチスクリーン、カメラといったデバイスのサポートが含まれる。

 コベリティによる解析の結果、検出されたAndroidのソフトウェア・バグは359件で、そのうちの25%にあたる88件が、セキュリティ侵害やクラッシュの危険性がある高リスクのバグであった。これらの高リスクバグのうち最も多かったのは、不正なメモリアクセスのバグ29件で、次いで未初期化変数の28件となっている。また、271件確認されている中リスクバグでは、Nullポインタの間接参照が83件と最も多かった。ただし、これらのバグの多くは、製品出荷前に除去可能な種類のものであるという。

Androidカーネルで特定された高リスクバグ【左】と中リスクバグ【右】
米コベリティのCEO、セス・ハレム氏

 コベリティのCEOであるセス・ハレム氏は、「Androidカーネルの品質は、そのソースコードの元となったLinuxカーネルの品質と同じではない。まだ、そこまでのレベルには達していない」と語り、Androidに特化したコード部分は、Linuxのコードよりも2倍以上のバグ密度であったことを明らかにしている。

 このAndroidカーネルのバグ密度は、1000ソースコードあたり1バグと、業界平均よりも低い値である。しかし、全世界で1日あたり6万台以上のAndroid端末が出荷されているという現状において、バグ密度が平均よりも低いことを単純に喜ぶことはできない。この調査結果を受けてコベリティでは、GoogleとHTCに解析データを提供し、60日後にその内容を公表する。さらに、カーネルの再解析を実施し、アップデートされたレポートを発表する予定であるという。

 今回の解析に使用されたのは、コベリティの静的ソースコード解析ツールの最新版「Coverity 5.3」で、C、C++、C#、Javaなどの言語で記述されたソースコードを解析することができる。また、Coverity 5.3には、インテグリティレポートの自動出力、eClould(ビルド加速化製品)との統合、Visual Studio 2010/.NET 4.0のサポート、新チェッカーおよびAndroidチェッカーの機能向上などの新機能が追加されている。なお、日本国内での出荷予定は、12月16日となっている。

関連情報