Coverity® Scan

Coverity® Scan
オープンソースレポート 2014
1
www.synopsys.com © 2015 Synopsys, Inc.
目次
要旨....................................................................................................................................................................................3
Coverity Scan: ここまでの歩み.....................................................................................................................................4
ソフトウェアセキュリティの状況.........................................................................................................................................6
Linux: 品質のベンチマーク..............................................................................................................................................8
インタビュー:Tim Hudson 氏(OpenSSL)
............................................................................................................. 10
インタビュー:Mikko Varpiola 氏(Codenomicon)
............................................................................................. 13
プロジェクトのスナップショット...................................................................................................................................... 15
まとめ.............................................................................................................................................................................. 18
2
www.synopsys.com © 2015 Synopsys, Inc.
要旨
オープンソースプロジェクトのソフトウェアのインテグリティを分析した Coverity® Scan 年間レポートをリリースす
る運びとなりました。2009 年に初めて刊行して以降、Coverity Scan レポートは、オープンソースの品質を測
定する標準として広く普及しています。2014 年、
レポートはこれまでで最大規模のサンプルを扱いました。2,500
以上のオープンソース C/C++、Java、C# プロジェクトの 100 億行を超えるコードに加え、2014 年の匿名の
商用プロジェクトのサンプルも分析したのです。
Coverity Scan サービスは 2006 年以来、開発者を支援し、24 万件以上の不具合を検出して修正してきました。
2014 年度単体でも、約 15 万 2,000 件の不具合を修正しました。これは、2006 年から 2013 年の間に見つかっ
た不具合の合計を上回っています。
この飛躍的な展開の結果、2014 年度レポートには、独自の新情報が含まれています。 商用プロジェクトと
オープンソースプロジェクトの比較を詳しく見ると、予想通りのものが見つかります。これまでと同様、オープン
ソースプロジェクトは、不具合に対処する作業をますます適切にこなしています。同時に、企業も Open Web
Application Security Project(OWASP)Top 10 や CWE-25 などの外部のソフトウェアセキュリティ標準を
ますます確実に順守しています。どちらも異なる方法で改善しています。
3
www.synopsys.com © 2015 Synopsys, Inc.
Coverity Scan: ここまでの歩み
Coverity®. Scan サービスプロジェクトは 2006 年、米国国土安全保障省からの支援を得て、オープンソースソフ
トウェアの品質とセキュリティに焦点を置いた民間部門の合同調査プロジェクトとして立ち上がりました。現在はシ
ノプシスが管理している同プロジェクトでは、開発テスト技術を無料サービスとしてオープンソースコミュニティに提
「Coverity®.Scan を使用
すると、新しい問題が生
供し、ソフトウェア開発プロセスの品質と安全性を確立すべく開発者を支援しています。Coverity. Scan サービス
まれると同時にを発見で
では、C#、Java、C、C++ コードを記述したままの状態でスキャン、つまりテストします。他の手法やマニュアル
きるため、以前よりも迅
レビューでは発見しにくい致命的な品質やセキュリティの不具合を把握し、対応可能な情報を開発者に提供するこ
とで、不具合を迅速かつ効率的に修正できるように支援します。
– Dave Jones 氏、
6,000
Linux カーネル開発者
5,000
4,000
3,000
2,000
プロジェクト数
1,000
0
Feb. 2014
Jun. 2014
Oct. 2014
Feb. 2014
Jun. 2015
表1:Coverity Scanサービスのプロジェクト総数(2015年3月まで)
Coverity Scan サービスは爆発的な伸びを見せ、2015 年 7 月までに 5,100 件を超えるプロジェクトが参
加しています。
この伸びは、コードの品質とセキュリティを保証するオープンソースプロジェクトの基本的な技術として、開発テスト
と静的解析の力と重要性を再確認するものです。
4
速に問題を解決できます」
www.synopsys.com © 2015 Synopsys, Inc.
「Coverity Scan は、
Coverity Scan 7.6
先日、Coverity Scan を Coverity Enterprise Code Advisor 7.6 バージョンにアップグレードしました。主な
機能を次に示します。
•戻り値が無視され、それ以外にも認識可能な影響がないため、
「役に立たない」関数呼び出しを識別する新しい
チェッカー
•機密データを適切に保護せずに格納、転送、ログに記録するコードを検出する新しい Java web アプリケーショ
ンセキュリティチェッカー
•暗号として弱い方法で暗号化ハッシュ関数をパスワードデータに適用するコードを検出する新しい Java web アプ
•既存のチェッカーに対する複数の機能強化と新しい不具合パターン
Coverity Scan インフラストラクチャをアップグレードし、オープンソースユーザーが以前より頻繁にビルドを送信
できる新しいマシンを追加しました。また、複数のユーザーの要請に基づき、選択したモジュールで見つかった新
しい不具合向けに E メールサブスクリプションオプションを追加しました。
300,000
250,000
240,574
修正された
不具合の総数
200,000
150,000
各年で修正された
不具合
88,024
100,000
43,383
8,500
11,246
15,278
2006-2008
2009
2010
21,411
2011
2012
表2:これまでに修正された不具合の総数
2013
2014
開発者は 2014 年単体で約 152,000 件の不具合を修正しました。これは、2006 年から 2013 年の間に
見つかった不具合の合計を上回っています。
Coverity Scan サービスは、開発テストの普及を推進するベストプラクティスとして「新しい不具合なし」というポ
リシーを長らく推奨してきました。Coverity Enterprise Code Advisor を初めて実行したときに解析で見つかる
不具合の量は、多くのユーザーにとって驚くべきものです。おびただしい数の不具合に直面すると、どこから始め
ればよいか分からなくなります。「新しい不具合なし」ポリシーはその問題を解決します。新しい不具合に対処する
ほうがはるかに簡単です。なぜなら、開発者の記憶の中でソースコードがまだ新鮮なため、修正に時間がかから
ないからです。新しい不具合が生まれないことを確かにしながら、チームは、問題のバックログに取り組むための
計画し、最も重要な問題から対応していく必要もあります。
この 2014 年版のレポートのために、14,000 の商用ソフトウェアと 5,100 のオープンソースの C/C++、Java、
C# のプロジェクトとともに始めました。これらのプロジェクト以外にも、10,000 の活発なプロジェクトを選び、
C/C++、Java、および C# のプロジェクトの 100 億行以上のソースコードを解析しました。
5
識別しました。これは、8.4
まででサポートされている
すべてのバージョンに影
響するものです」
– PostgreSQL
リケーションセキュリティチェッカー
0
ファオーバーフロー脆弱性
(CVE-2014-0064)を
•脆弱な暗号化アルゴリズムのインスタンスを検出する新しいチェッカー
50,000
path_in() 関数のバッ
www.synopsys.com © 2015 Synopsys, Inc.
ソフトウェアセキュリティの状況
このレポートのサンプルオープンソースプロジェクトのサイズは、5,000 行に満たないコードから 1200 万行を超え
るコード(FreeBSD の場合)に渡っています。Coverity Scan サービスで次に最も大きな 3 つのプロジェクトが、
Linux(1,000 万行)
、NetBSD(900 万行)
、LibreOffice(700 万行)です。
不具合密度:コード 1,000 行ごと
の不具合の数。
主な発見
OWASP:Open Web
1.オープンソースソフトウェアは、商用ソフトウェアよりも大幅に低い不具合密度を持っ
ています。
2014 年、すべての言語(C/C++、Java、C#)で累積した不具合密度(1,000 行のコードごとの不具合の数)
を見ると、オープンソースソフトウェアの状態(不具合密度 0.61)は、静的解析の結果から、商用ソフトウェア(不
具合密度 0.76)を大幅に上回っています。
Application Security Project
(OWASP)は、web アプリケー
ションセキュリティに特化したオン
ラインコミュニティです。OWASP
Top 10 は、プロジェクトで識別さ
れた、最も重要な web アプリケー
ションセキュリティの脆弱性のリスト
です。
添付資料
総コード行数
(単位:100 万行)
総プロジェクト数
総不具合密度 *
500
2,650
0.61
9,100
8,776
0.76
オープンソース
商用ソフトウェア
Enumeration(CWE)は正式な
CWE Top 25 は、最も普及して
昨年と今年の C/C++、Java、C# 全般の不具合密度を比較したところ、この改善が顕著に見られました。
添付資料
オープンソース
(今年)
商用ソフトウェア
(今年)
オープンソース
(昨年)
商用ソフトウェア
(昨年)
スキャンしたコード行数
(100 万)
500
9,100
260
700
平均不具合密度
0.61
0.76
0.66
0.77
3.企業向け商用 web アプリケーションソフトウェアは、オープンソースソフトウェアより
も OWASP Top 10 に準拠しています。
Java プロジェクトは web アプリケーションと非 web アプリケーションの組み合わせであり、OWASP は Java
web アプリケーションのセキュリティにより注力していますが、OWASP Top 10 は、すべての Java プロジェク
トの全般的なセキュリティ状態を測定するための包括的なコンプライアンス標準であると私たちは考えています。
* 98%の信頼度で、サンプルとなる全てのプロジェクトの平均的な不具合密度は +/-0.09 の誤差があります。
www.synopsys.com © 2015 Synopsys, Inc.
CWE:Common Weakness
ソフトウェアの弱点のリストです。
2.オープンソースソフトウェアと商用ソフトウェアの不具合密度は、年ごとに改善し続
けています。
6
用語集
いる致命的なエラーのリストです。
このエラーは、ソフトウェアの深刻
な脆弱性につながるおそれがあり
ます。
OWASP Top 10 の視点から Java の不具合密度データを見ると、商用ソフトウェアがオープンソースソフトウェア
よりも大幅に安全であることが分かります。商用プロジェクトとオープンソースプロジェクトのどちらも、問題を修
正するための平均時間が同じ(6 か月の)場合、オープンソースソフトウェアよりも早めのペースで、商用ソフトウェ
アがこうしたセキュリティ脆弱性に取り組んでいることが分かります。これは、商用ソフトウェアプロジェクトがこの
カテゴリの不具合を解決するコンプライアンスとポリシーによって促進されていることを示している可能性がありま
す。
添付資料
プロジェクトの総コード行数
(100 万)
不具合の数
10 万行ごとの不具合†
オープンソース
14
84
8.61
商用ソフトウェア
52
86
0.56
「Coverity Scan を使
用すると、ソフトウェア
の不具合を検出できま
す。開発後 10 年経っ
た今でも、もちろん見
つけることができます」
– Mangos zero
主に分かったこと
1.オープンソースソフトウェアと商用ソフトウェアは継続的に改善していますが、改善
の道筋は異なっています。
このレポートの静的解析の不具合密度データを見て分かることは、オープンソースソフトウェアも商用ソフトウェアも
常に改善しているということです。また、どちらも明らかに異なる方法で進化しています。
• オープンソースソフトウェアは、以前のバージョンと比較すると、機能が豊富になり、向上しています。オープンソー
スプロジェクトの開発作業を促す要素は、ソフトウェアがその処理してくれることを求めている人です。そのため、
機能の追加がバグの修正よりも優先されます。
• 商用ソフトウェアは、コンプライアンス規格に基づいて安定性とセキュリティを強化しています。商用開発を促す
要素は、競争と業界規格へのコンプライアンスです。これは、安定性、セキュリティ、バグ修正よりも優先されます。
2.ツールと手法の組み合わせにより、最善の結果を出すことができます。
商用ソフトウェアの最近のセキュリティ問題を見ると、開発企業の大半が規格順守のためのコンプライアンスチーム
を備えていますが、ほぼ毎週のように重大な脆弱性が発見されます。業界は、セキュリティと開発速度のバランス
を取る必要があります。特に、ソフトウェアプロジェクトでアジリティが求められ、市場投入までの時間がかつてな
いほどに重視されている現状ではそうです。ソフトウェアツール、コンプライアンス規格、ソフトウェア開発ライフ
サイクルの原則に対する順守を健全に組み合わせることが、あらゆるソフトウェアのセキュリティと品質を向上させ
る最善の方法です。シノプシスは 3 つの前線すべてに尽力し、もっともセキュアになるように開発者を支援します。
†
7
98% の信頼度で、サンプルとなる全てのプロジェクトの 10 万行ごとの OWASP Top 10 の不具合の量は +/-0.08 の誤差があります。
www.synopsys.com © 2015 Synopsys, Inc.
Linux: 品質のベンチマーク
Synopsys. Coverity. Scan サービスと Linux は、コード品質の向上について長らく連携してきました。始まりは
2000 年代初頭、Coverity. Scan サービスがまだスタンフォード大学のコンピュータサイエンス研究所の研究プロ
ジェクトだった頃です。以来、Coverity. Scan サービス(2014 年にシノプシスが買収)と Linux は、驚異的な
成長を遂げました。しかし、どちらも変わらないことがあります。それは品質への取り組みです。
解析した
行数
8,000,000
修正された
不具合
新しく見つ
かった不具合
7,000,000
6,000
6,000,000
5,000
5,000,000
4,000
4,000,000
3,000
3,000,000
2,000
2,000,000
1,000
1,000,000
0
2007
2008
2009
2010
2011
2012
2013
2014
Coverity. Scan サービスの静的解析の精度を高めるために、Linux チームは Coverity. Scan モデリング機能を
利用し、解析アルゴリズムが Linux コードのパターンと行動をより正確に把握できるようにしています。この解析
により、ソースコードに基づくモデルが自動的に組み立てられますが、事態を常に正確に推測できるわけではあり
ません。おそらく、ダイナミックライブラリなどの場合は、ソースコードがありません。あるいは、リモートプロシー
ジャコールなどの外部の影響は予測できません。
8
でも、Coverity.Scan は
上で役立ちます。もちろ
9,000,000
2006
んだ大規模プロジェクト
コードの品質を把握する
Linuxの解析結果 2006-2014
10,000,000
0
「レガシーコードを多く含
www.synopsys.com © 2015 Synopsys, Inc.
ん、高品質を維持できる
ように支援してくれるた
め、各領域の保守管理を
向上させることができま
す」
– QEMU
項目および影響度別に示した未修正および修正済みのLinuxの不具合
(2014年)
カテゴリ
影響度
変数の未初期化
HIGH
リソースリーク
未解決
HIGH
メモリ - 破損
解決済み
HIGH
安全でないデータハンドリング
MEDIUM
メモリ - 不正アクセス
HIGH
不適切なエラー処理
MEDIUM
NULL ポインタの間接参照
MEDIUM
不適切な制御フロー
MEDIUM
不適切な整数処理
MEDIUM
0
200
400
600
800
1,000
1,200
2013 年 8 月、Dave. Jones 氏(Linux の Coverity. Scan 管理者)が Coverity. Scan サービスに初めて参加
したとき、彼は管理を簡便化するために Linux 用の新しいより小さなコンポーネントを定義しました。彼がもたらし
た主な変化としてはもう 1 つ、新たに検出した不具合に着目する姿勢が挙げられます。彼の考えは、新しい不具
合の方が簡単に解決できるというものでした。なぜなら、開発者の記憶の中ではソースコードがまだ新鮮であり、
新しいコードが古いコードを書き換えることで従来の不具合の多くは消えるためです。下記のグラフに、どのよう
に進歩したかを示します。
Linuxの未解決と修正済みの不具合
10,000
修正済みの不具合
7,500
未修整の不具合
5,000
2,500
0
9
Jul 2013
Oct 2013
Jan 2014
Apr 2014
Jul 2014
Oct 2014
Jan 2015
Apr 2015
www.synopsys.com © 2015 Synopsys, Inc.
インタビュー:Tim
Hudson 氏(OpenSSL)
OpenSSL は、堅牢で商用にも耐えるフル機能のオープンソースツールキットを開発する共同プロジェクトです。セ
キュアソケットレイヤー(SSL v2/v3)およびトランスポートレイヤーセキュリティ(TLS v1.0/v1.1/v1.2)プロトコ
ルに加え、強力な汎用暗号化ライブラリを実装しています。世界中に広がるボランティアのコミュニティが、コミュ
ニケーション手段としてインターネットを使用しながら、このプロジェクトを管理し、OpenSSL ツールキットと関連
マニュアルを計画、開発しています。
OpenSSL プロジェクトは、Heartbleed バグ後の統合開発プロセスの一環として Coverity® Scan を当初から積
極的に活用していました。私たちは、OpenSSL プロジェクトの共同設立者である Tim Hudson 氏を招きました。
Hudson 氏は、このレポートのために Coverity Scan に関する考えを語ってくれました。
1.Coverity Scan サービスにここまで関わってこられ、
どのような感想をお持ちですか。
Coverity Scan は、効果的な商用静的解析ツールを利用できるという点で、私たちのプロジェクトに役立っていま
す。レポートの情報も、レビューにとって具体的な指針となっています。OpenSSL は、静的解析ツールにとって確
かに困難なコードベースですが、誤検知が発生した場合でも、Coverity Scan サポートチームはすばやく対応して
くれます。このレベルのベンダーサポートがあれば、コード解析ツールを使用する場合に大きな違いを生んでくれま
す。
2.Coverity Scan サービスに参加したことで、OpenSSL が得られた最も大きなメリッ
トは何でしょうか。
Coverity Scan ツールがアップデートされ、新たに見つかった問題を捕捉し、同様のコードが見つかる可能性が
ある領域に焦点を当てるときの対応の早さです。これは、提供されているセキュリティツールキットや各種インター
フェースを処理する際に役立ちます。基本的に、新しい問題が見つかった場合、Coverity Scan ツールを使用す
れば、同種の問題を見つけることができます。
3.組織として、Heartbleed の不具合にはどのように対応しましたか。
解決する必要がある問題が明らかに存在していたため、アップデートを使用して、報告されている具体的な問題を
修正しました。また、ツールをアップデートした後で Coverity Scan レポートを使用し、他の領域でバグが発生し
ないかどうかを確認しました。それにより、チームメンバーはレビューに集中できました。セキュリティ修正リリース
における取り組みの大半は、プロジェクトチームとエンドユーザーの間に位置する下流のベンダーとの調整に費や
されます。
10
www.synopsys.com © 2015 Synopsys, Inc.
4.Heartbleed バグの発見とメディアの注目は、OpenSSL プロジェクトの開発姿勢 「何分もしないうちに、存
をどのように変えましたか。
在していることさえ気付
Heartbleed の後、昨年になってプロジェクトは大きく変わりました。世間の注目をあびることで、OpenSSL プ
かなかった重要なリソー
ロジェクトのリソースがどれほど不足しているのか、あらためて思い知らされたのです。さまざまなスポンサーの寄
スリークをいくつか絞り
付 と Linux Foundation Core Infrastructure Initiative (http://www.linuxfoundation.org/programs/
core-infrastructure-initiative) からのサポートにより、OpenSSL にフルタイムで専念するチームメンバーが 4
込み、修正できました。
人できました。また、積極的なリクルートも行った結果、以前よりも多くのボランティアが参加してくれるようにな
Coverity を仕事で使用し
りました。このため、問題のバックログにさらに取り組み、長期的な目標に取り組むことができるようになりました。
てきましたが、今では自
現在、プロジェクトのロードマップを発表しており、ロードマップ内の各目標を順調に達成しています。
5.(非暗号コードと比較して)セキュアな暗号コードを開発し保守する上でのチャレン
ジはありますか。
アプリケーションの不具合は不運というだけですが、セキュリティツールキットの不具合は破滅的な結果をもたらす
可能性があります。このため、コードベースへの追加に際しては、より慎重なアプローチが必要になります。セキュ
リティは機能よりも優先されるのです。
6.セキュリティを確保するための専用チームはいますか。
チームは、リリース前に積極的なコードレビューに参加しています。メインソースレポジトリに変更を加えるたびに、
レビューしてからコミットします。コードベースの複数のブランチを維持する中で、次のメジャーリリースの保留中の
変更が上げられ、コミュニティのフィードバックを受けられるように提示されます。私たちは、多くのフィードバック
を受けています。その多くは相反するものですが、これもオープンソースプロジェクトの一部なのです。誰でも自由
に意見を述べ、検討材料にすることができます。また、OpenSSL コードベースの独立した監査も積極的に推奨し
ています。これは現在、
(Linux Foundation のスポンサーのもとで)進行中です。
7.コード品質とコードセキュリティを、異なるプロセスと優先順位を備えた 2 つの独立
した問題として見ていますか。それとも不具合は不具合として捉え、最も重要な項
目や新しい項目に最初に着目するのですか。
不具合は不具合です。私たちは、セキュリティ面の影響を考慮して優先順位を決めます。不具合追跡システムで必
要な変更の大部分は、機能または移植性に関連するもので、従来の優先順位は低めです。プロジェクトチームが
拡大するにつれ、項目のバックログをクリアする作業は大幅に進歩しています。同時に、ロードマップに記載され
ている機能の進捗も改善しています。
11
www.synopsys.com © 2015 Synopsys, Inc.
宅でも使用できます」
– Crane
(C# オープンソースプロジェクト)
8.オープンソースの世界で、コードの品質と安全性を維持する際に直面する問題は 「Coverity は、他のソ
何でしょうか。また、どのようにすればその問題を克服できますか。
リューションでは気付かれ
人がセキュリティソフトウェアに真摯な関心を寄せるのは、何かが壊れたときのようです。そのせいで、素っ気なく
ない問題を検出し続けて
直截な意見をもらう可能性もあるため、言葉の表現を気にしない鈍感さが必要になります。プロジェクトにとって
います。.
幸いなことに、バランスの取れた物の見方ができるユーザーもメーリングリストにいます。私たちのユーザーは互い
に助け合いながら、問題に対処しています。
私たちの開発者も、存
在している可能性がある
9.ここで議論されていますが、「目玉を増やせば、どのバグもつぶせる」という、再
三繰り返されている格言について考えをお聞かせください。コードをレビューする目玉
(または自動ツール)を増やすには、どうすればよいでしょうか。
されていない値により深
大規模なコードベースをレビューすることは、決して胸躍る体験ではありませんし、外の世界にある「インターネッ
ます」
トの無限の目」にそれほどさらされる領域でもありません。私たちは開発の履歴とプロセスを常にオープンにして
きました。(私的なものでも、公的なものでも)あらゆる人からの建設的なフィードバックを歓迎しています。ロード
マップの項目数は、ソースツリーに取り組み、貢献に興味がある人々がコードベースにアプローチしやすくすること
に力点を置いています。OpenSSL は、多くのアカデミックな研究の対象となっており、ツールを開発しているさま
ざまなベンダーの注目を集めていますが、最終的には、特定の項目を詳細かつ慎重に解析することになります。
私たちは、最近通知された(Linux Foundation のスポンサーによる)セキュリティ監査を楽しみにしています。
これにより、多くの目を集めても達成できない細部をレビューできるのではないかと考えています。
12
www.synopsys.com © 2015 Synopsys, Inc.
NULL 間接参照や初期化
い注意を払おうとしてい
– Trinity Core
インタビュー:Mikko Varpiola 氏(Codenomicon)
「Coverity Scan でコー
ドを実行した結果、今
レイヤーを提供します。また、Codenomicon は、セキュリティプロファイルを進化および強化する方法を探し
ている企業を支援するために、テスト、監査、トレーニング、検証サービスを含む一連のサービスも提供します。 後起こりうるセキュリ
Codenomicon は最近、シノプシスに買収されました。Codenomicon の共同設立者である Mikko Varpiola
ティの問題が明らかに
氏に質問し、現在の考えを引き出しました。
なりました。私たちは
Coverity Scan のきめ
1.我がチームにようこそ。
細かなサービスに満足
ありがとうございます。Coverity チームに参加できて嬉しいです。将来のさまざまなチャンスを考えると、わくわ
しています」
くしてきます。
Codenomicon® は、全体的な防御をより効果的に実現する次世代ソリューションのスイートを提供します。各ソ
リューションは、セキュリティテスト、堅牢性、インテリジェンス、コラボレーション、およびセキュリティの新しい
®
2.顧客が Coverity Scanを使用して私たちのソースコードを見ている場合、サードパー
ティコンポーネントの脆弱性について認識していないのでしょうか。
そうとも限りません。多くのプロジェクトが、バイナリ形式でのみサードパーティコンポーネントを取り入れているた
め、そのソースコードは Coverity Scan では利用できません。AppCheckTM は、含まれているサードパーティコ
ンポーネントを識別するために、製品に X 線を当てるのと同じ静的バイナリスキャンを実行します。
さらに、ビルドプロセスにより、ソースコード検証時には明らかでないサードパーティコンポーネントが導入される
可能性もあります。
3.例を挙げて説明していただけますか。
最近、AppCheck を使用し、有名なクロスプラットフォームオフィスアプリケーションスイートを調べました。
Linux、OS X、Windows のビルドの結果は、サードパーティコンポーネントの構成においても、そのコンポー
ネントに関連する既知の脆弱性においても、驚くべき違いがありました。次の表では、共通脆弱性評価システム
(CVSS)で測定した、最も深刻度の高い脆弱性も示しています。
Linux
OS X
Windows
37
30
36
7
6
6
既知の脆弱性
28
28
32
もっとも重要な脆弱性(共通脆弱性評価システム)
10
10
7.5
コンポーネント
既知の脆弱性を含むコンポーネント
AppCheck であなたの製品の実行コードを確認すると、バイナリ解析によってこのような知見を得ることができま
す。
13
www.synopsys.com © 2015 Synopsys, Inc.
– PowerDNS
4.Heartbleed について話しましょう。Codenomicon は Heartbleed をどのように発 「私たちのコードベースに
見したのですか。
は、多くのコピーペース
Defensics® ファズテストソリューションを強化している最中でした。 具体的には、SafeGuard という機能を
トのミスがあるため、そ
Defensics TLS テストスイートに追加しようとしていました。
れを検出できる Coverity
ファジングは、意図的に悪質なメッセージを対象のソフトウェアに送信する動的なテスト手法です。故障が発生する
Scan のようなツールはあ
と、脆弱性があることになるわけです。
りがたい存在です。人間
攻撃者はファジングを使用して未知の脆弱性を特定し、見つかった脆弱性に向けたエクスプロイトを作成します。
ファ
には、そうした作業を完
ジングを利用すれば、脆弱性を特定して修正できるので事前に防御策を講じることができるのです。
璧にこなすのはほぼ不可
「従来型のファジング」とでも言うべきものでは、ファジング機能が、テスト中に対象のソフトウェアでクラッシュ、
ビジーループ、リソースリークの原因となる不具合が発生しないかどうかを監視します。SafeGuard 機能は、動
作異常、つまり上記の故障モードから外れる故障がないかどうかを確認してこれを補強します。たとえば、認証迂
回チェック機能では、ファジング機能が不正な認証情報を提供したにも関わらず認証された場合や、信頼境界を何
らかの形で越えることができた場合に故障のフラグを立てます。
2014 年 3 月、私たちの開発チームは、データリークおよびアンプリフィケーションという SafeGuard チェック機
能を TLS テストスイートに追加していました。これらのチェックは、送受信メッセージの内容と比率を調べ、異常な
動作があるかどうかを確認します。私たちは openssl を参照ターゲットとして使用していたところ、一部の不正な
TLS ハートビートメッセージに対して SafeGuard がフラグを上げていることに気付きました。これが Heartbleed
だったのです。
5.Heartbleed などの脆弱性をどうすれば防ぐことができるのでしょうか。
ひとえに
「より良いテスト」
にかかっています。最初のステップは、
ソフトウェアのサプライチェーンを管理することです。
これで、既知の脆弱性を効果的に抑えることができます。深刻な脆弱性が発生したら(というより実際に発生する
でしょうが)
、冷静に素早く対処できます。Heartbleed の問題の一部は、どの製品が影響を受けるか開発者には
分からず、どの資産が影響を受けるかバイヤーには知りようがないという点にあります。
未知の脆弱性を効果的に管理するには、それを見つける必要があります。静的ソース解析とファズテストは、未知
の脆弱性のハンティングには強力な組み合わせです。
6.コードのセキュリティを強化するために、開発者はどのようなセキュアなコーディング
を取り入れるべきでしょうか。
これは、開発者というよりも、彼らを取り巻くプロセスの問題と言えます。コード記述のテクニックを磨くために開
発者をトレーニングすることはできますし、そうするべきですが、最高レベルの開発者でもミスは犯します。
最も重要な点は、適切なコントロールを備え、サプライチェーンマネジメントと未知の脆弱性管理を組み込んだ、セ
キュアな開発プロセスを導入するということです。
14
www.synopsys.com © 2015 Synopsys, Inc.
能ですから」
– OpenTechBFG
プロジェクトのスナップショット
C/C++
FreeRADIUS は、世界で最も人気があり、最も普及しているオープンソース RADIUS サーバーです。一般的な認
191,579
証プロトコルすべてをサポートしており、PHP ベースの web ユーザー管理ツールを装備した FreeRADIUS は、ネッ
解析したコード行数
トワークアクセスコントロールや WiMAX をサポートしている組み込みシステムや RADIUS アプライアンスなど、多
くの商用 RADIUS 製品およびサービスの基礎となっています。多くの Fortune.500 企業、電話会社、Tier.1.ISP
機能を備え、
モジュラー式に設計されていて、
スケーラブルです。FreeRadius は、
コア部分が C++ 書かれているオー
0.12
プンソースのプラットフォームです。
不具合密度
のニーズを満たしているほか、アカデミックなコミュニティでも広く普及しています。このサーバーは高速で、豊富な
項目及び影響度別に示した未修正及び修正済みのFreeRADIUSの不具合
影響度
NULL ポインタの間接参照
MEDIUM
データへの同時アクセス違反
MEDIUM
537
HIGH
総不具合数
リソースリーク
不適切な制御フロー
MEDIUM
安全でないデータハンドリング
MEDIUM
不正な記述
MEDIUM
コードメンテナンス性の劣化
LOW
コントロールフローの問題の可能性
LOW
安全でないデータハンドリング
MEDIUM
経験則上のセキュリティ違反
LOW
不適切なエラー処理
MEDIUM
メモリ - 不正アクセス
HIGH
APIの誤使用
MEDIUM
変数の未初期化
HIGH
未修正
メモリ - 破損
HIGH
修正済み
その他
HIGH
プログラムのハングアップ
MEDIUM
0
5
10
15
20
FreeRADIUS未修正および修正済みの不具合
600
修正済みの不具合
450
300
150
0
15
未修正の不具合
Jul 2013
Oct 2013
Jan 2013
Apr 2014
Jul 2014
Oct 2014
Jan 2015
Apr 2015
www.synopsys.com © 2015 Synopsys, Inc.
25
486
修正済みの不具合数
Java
Apache CloudStack は、仮想マシンの大規模ネットワークをデプロイおよび管理するために、高可用性、きわ
300,570
めてスケーラブルな Infrastructure as a Service(IaaS)を備えた、クラウドコンピューティングプラットフォー
解析したコード行数
ムとして設計されたオープンソースソフトウェアです。さまざまなサービスプロバイダが、パブリッククラウドサー
ビスを提供するために CloudStack を使用しています。また、各種企業もオンプレミス(プライベート)クラウド
使用しています。CloudStack は主に Java で記述されており、品質とセキュリティを向上させるために Coverity
2.81
Scan を使用しています。
不具合密度
サービスを提供するため、またはハイブリッドクラウドソリューションの一環として提供するために CloudStack を
CloudStackの未修正と修正済みの不具合
修正済みの
不具合
2,250
2,000
3,045
総不具合数
1,750
1,500
1,250
Jan 2014
Apr 2014
Jul 2014
Oct 2014
Jan 2015
未修正の
不具合
2,225
修正済みの不具合数
16
www.synopsys.com © 2015 Synopsys, Inc.
C#
Subtitle.Edit は、動画字幕用のフリー(オープンソース)エディタです。主に C# で開発されています。Subtitle.
186,398
Edit プロジェクトのメンバーは、プロジェクトの不具合を見つけるために Coverity. Scan を定期的に使用していま
解析したコード行数
す。
項目及び影響度別に示した未修正及び修正済みのSubtitle Editの不具合
影響度
コントロールフローの問題の可能性
LOW
クラス階層の一貫性欠如
未修正
コードメンテナンス性の劣化
MEDIUM
HIGH
不適切な整数処理
MEDIUM
不適切な制御フロー
MEDIUM
リソースリーク
MEDIUM
データへの同時アクセス違反
MEDIUM
例外的なリソースリーク
LOW
0
20
40
60
80
100
120
140
160
180
200
Subtitle Editの未修正と修正済みの不具合
500
修正済みの
不具合
375
250
未修正の不具合
125
17
570
総不具合数
LOW
NULL ポインタの間接参照
Aug 2014
不具合密度
MEDIUM
修正済み
不正な記述
0
0.85
Oct 2014
Dec 2014
Feb 2015
Apr 2015
www.synopsys.com © 2015 Synopsys, Inc.
406
修正済みの不具合数
まとめ
2014 年、Coverity® Scan サービスは、驚異的な成長とオープンソースユーザーへの普及を実現し、現在進行
形のプロジェクトを 5,100 以上抱える規模へと膨れ上がりました。Coverity Scan レポートは今年、年間規模で
はこれまでで最大のサンプルサイズを解析し、重要な不具合を複数検出しました。
• 2014 年、商用コードベースは、オープンソースよりもセキュリティ規格を順守してい
ます。
静的解析の不具合密度に基づき、2013 年度レポートでは、オープンソースコードが品質において商用コードを超
えていることが明らかになりました。この傾向は 2014 年も続いています。ただし、今年は、OWASP Top 10
と CWE 25 などのセキュリティコンプライアンス規格を比較し、商用コードがオープンソースよりもこうした規格を
順守していることを明らかにしました。
• 2013 年以降、オープンソースソフトウェアも商用ソフトウェアも、不具合密度は改善
しています。
2013 年と 2014 年の不具合密度の数を比較したところ、オープンソースソフトウェアも商用ソフトウェアも不具合
密度は改善しています。オープンソースの不具合密度は 2013 年の 0.66 から 2014 年の 0.61 に、商用コード
も 0.77 から 0.76 に改善しています。
• Coverity Scan は Heartbleed 後の調査で OpenSSL を支援しました。
OpenSSL の共同設立者 Tim Hudson 氏によれば、新たに見つかった問題を捕捉し、同様のコードが見つかる可
能性がある領域を特定できる Coverity Scan サービスの機能は、2014 年の Heartbleed バグの影響を軽減す
る上で大いに役立ったとのことです。
• Linux は、現在も静的解析の不具合密度のベンチマークとなっています。
2006 年に Coverity Scan サービスに参加してから、Linux は品質への取り組みを現在でも最優先項目に置いて
います。2014 年、Linux は Coverity Scan サービスを利用し、
リソースリーク、
メモリ破損、変数の未初期化など、
500 件以上の影響の大きな不具合を検出および修正しました。
今年度のレポートでは、ソフトウェア業界全体がセキュリティと開発のスピードと機能強化の間でより適切にバラン
スを取るようになっていると述べています。また、開発者はツール、コンプライアンス規格、ベストプラクティスの
主導者を組み合わせて、品質とセキュリティを高いレベルで両立させたソフトウェアを作成する必要があります。
Coverity Scan サービスへの関心と支援について、Coverity Scan の全メンバーとオープンソースコミュ
ニティに感謝します。新しいプロジェクトの登録、既存のプロジェクトへの貢献、または調査について興
味をお持ちの場合は、https://scan.coverity.com/ にアクセスしてください。
18
www.synopsys.com © 2015 Synopsys, Inc.
Coverity Scan について
シノプシス Coverity Scan サービスは、2006 年にコベリティが、オープンソースソフトウェアの品質とセキュリティを対象に
した政府 / 民間共同調査プロジェクトとして、米国土安全保障省と共同で立ち上げたものです。Coverity Scan は現在プロ
ジェクトを管理し、オープンソースコミュニティに属する開発者がソフトウェア開発プロセスの中に品質とセキュリティを組み込む
のを支援するため、デベロップメントテスト技術を同コミュニティに対して無料で提供しています。オープンソースプロジェクト
を Coverity Scan サービスに登録してください。また最新情報については Twitter で弊社をフォローしてください。
シノプシスについて
Synopsys, Inc.(Nasdaq 上場コード:SNPS)は、我々が日々使用しているエレクトロニクス機器やソフトウェア製品を開発
する先進企業のパートナーとして、半導体設計からソフトウェア開発に至る領域(Silicon to Software ™)をカバーするソリュー
ションを提供しています。電子設計自動化(EDA)ソリューションならびに半導体設計資産(IP)のグローバルリーディング
カンパニーとして長年にわたる実績を持ち、ソフトウェア品質 / セキュリティテストの分野でも Coverity® ソリューションで業界
をリードしており、世界第 15 位のソフトウェアカンパニーとなっています。シノプシスは、最先端の半導体を開発している SoC
(system-on-chip)設計者、最高レベルの品質とセキュリティが要求されるアプリケーションソフトウェアの開発者に、高品
質で信頼性の高い革新的製品の開発に欠かせないソリューションを提供しています。更に詳しい情報は Coverity の web サイ
ト(http://www.coverity.com/html_ja/index.html)をご覧ください。
19
www.synopsys.com © 2015 Synopsys, Inc.