Coverity
ソースコード静的解析ツール
Synopsys社のCoverity(コベリティ)は、ソースコードに潜在する重大な不具合やセキュリティ脆弱性を高精度で検出するソースコード静的解析プラットフォームです。
日立ソリューションズは、豊富な導入実績をもつCoverityの国内販売代理店です。
※日立ソリューションズはSynopsys社より「Best Sales of the Year」を受賞しました。
このようなお悩みはありませんか?
- 課題
- 解決
-
課題
- ソフトウェアの不具合や脆弱性を早期に発見して製品・サービスの品質と信頼性を高めたい。
-
解決
数々の特許技術を搭載した市場評価の高い静的解析によって、ソースコード上の多くの問題を自動的に検出できます。
-
課題
- 開発するソースコードについて、業界標準のコーディング規約やガイドラインに準拠したい。
-
解決
ルールチェッカーの機能を備えており、MISRA、CERT、OWASP、PCI DSSなどの業界標準のチェックに活用できます。
-
課題
- 静的解析ツールの導入を試みたものの、誤検知が多く開発者の負担になってしまい、定着化せず導入を断念した。
-
解決
指摘の誤検出率が15%以下と非常に低く、大量の誤検出で開発者の時間を無駄にすることがありません。
商品概要
Coverity とは
Coverity(読み方:コベリティ)とは、ソースコードに潜む重大な不具合やセキュリティ脆弱性をコーディング中に高精度で検出する、正確で包括的な静的解析およびSAST(静的アプリケーション・セキュリティ・テスト)のプラットフォームです。
洗練された高度な解析技術によって、多くの欠陥を低い誤検知率で摘出できます。
Coverityの3つのポイント
-
Quality
品質向上
発見が困難なソフトウェアの欠陥を自動的に検出することで社外事故などのリスクを未然に防ぎます。
-
Security
セキュリティ対策
開発者のセキュアコーディングを助けることで製品やサービスへの脆弱性の作り込みを防ぎます。
-
Compliance
規約対応
ルールチェッカーによって問題になりそうな実装を検出し業界標準のコーディング規約に対応します。
市場からの高い評価
Coverityは、製造、金融、サービス、ゲーム、組み込み機器、その他数多くの業界・業種で利用されており、各業界から極めて高い評価を得ています。
ガートナー社による評価
アプリケーション・セキュリティ・テストの分野でのガートナー社の評価において、CoverityのメーカーであるSynopsys社はリーダー評価を獲得しています。*1
フォレスター社による評価
静的アプリケーション・セキュリティ・テストの分野でのフォレスター社の評価において、Coverityはリーダー評価を獲得しています。*2
オープンソースコミュニティでの利用
Linux、Python、PostgreSQL、Firefox、OpenSSL、Perl、Apache Hadoopといった著名なオープンソースコミュニティを中心に、4,000を超えるオープンソースプロジェクトでCoverity Scanが利用されています。
- *1…2023 Magic Quadrant for Application Security Testing
- *2…The Forrester Wave(TM): Static Application Security Testing, Q3 2023
Coverityの特長
Coverityにできることや、製品としての強み、導入のメリットについて説明します。
高度な静的解析テクノロジー
Coverityには数々の特許技術、10年間にわたる研究開発成果、そして100億行以上のコード解析で得たノウハウが組み込まれています。より深く、より正確な解析を実現し、多くの複雑な問題を誤検出率15%以下(ユーザーによっては5%という報告もあります)で検出できるため、開発スピードを落とさずソフトウェアの信頼性向上を実現できます。
またコード修正に伴い再解析を実施する場合は、コードベース全体ではなくコードのうち変更の影響を受ける部分のみを解析(差分解析)するため、ツールの処理時間や指摘確認の時間を大幅に短縮できます。
主な解析技術
フルパス解析(パスシミュレーション)
コード上のすべての制御フローを追跡し、すべての値とデータパスを100%シミュレーションします。リソース割り当て、ポインタ操作、バッファ状況などに関する幅広い欠陥を検出できます。
プロシージャ間解析
クラスや関数(メソッド)をまたがった解析が可能で、ファイルおよびモジュール全体の複雑なコールチェーンを確認のうえ欠陥を報告します。
統計解析エンジン
コード全体の実装パターンを追跡しており、プログラムの目的を推測したうえでプログラマーのコーディング漏れと思われる実装を報告します。
検出可能なエラー・不具合の一覧(抜粋)
コーディング上のセキュリティ脆弱性や、関数間をまたがるようなランタイムエラー、マルチスレッドに関わる不具合まで、幅広く検出することが可能です。
バッファオーバーフロー(バッファオーバーラン、範囲外のアクセス) / リソースリーク(メモリリーク) / データ競合状態 / 初期化漏れ / ビルドシステムの問題 / クラス階層の不一致 / コードのメンテナンス性の問題 / メモリー破損 / メモリー不正アクセス / 制御フローの問題 / クロスサイトリクエストフォージェリ(CSRF) / クロスサイトスクリプティング(XSS) / SQLインジェクション / デッドロック / エラー処理の問題 / 不正な式 / セキュアでないデータ処理 / 整数オーバーフロー / NULLポインタの参照先取得エラー / パス操作 / 非効率なパフォーマンス / プログラムのハング / 同時データアクセス違反 / コーディングルール違反 / セキュリティベストプラクティスの違反 / セキュリティ設定ミス / 互換性のないキャスト / 汚染されたスカラー / スタックを過度に使用 / デッドコード / Null戻り値の間接参照 / 無限ループ / 未使用関数 / 戻り値が未確認 / 脆弱なガード / アトミックでない値の更新 / 脆弱な暗号 / 安全でないデシリアライゼーション / ハードコードされた認証情報 / 二重開放 / コピー&ペーストのミス / API使用エラー / 他
コーディング規約のチェックに対応
Coverityはグローバルの標準規格・ガイドラインに基づくコーディングルールを広範にカバーしており、機能安全やセキュリティに関するコンプライアンス遵守に活用することができます。また独自ルールを定義してユーザー独自のスタイルチェックを行うことも可能です。ISO 26262、ISO/SAE 21434、IEC 62443などへの対応を行う組織を支援します。
カテゴリー | 規約・ガイドライン |
---|---|
セキュリティ | OWASP Top 10 / OWASP Mobile Top 10 / CWE Top 25 / PCI DSS / DISA STIG / CERT C / CERT C++ / CERT Java / ISO/IEC TS 17961 |
機能安全 | MISRA C 2004 / MISRA C 2012 / MISRA C 2023 / MISRA C++ 2008 / AUTOSAR C++ |
さまざまな言語の解析に対応
AI/IoT時代にはさまざまなプログラミング言語を用いてソフトウェア開発を行う必要があります。Coverityの対応言語は広範囲に渡っているため、さまざまな製品・サービスのソースコード解析に用いることが可能です。
対応言語とプラットフォーム
- Apex
- C言語
- C++
- C#
- CUDA
- Java
- JavaScript
- PHP
- Python
- .NET Core
- ASP.NET
- Objective-C
- Go
- JSP
- Ruby
- Swift
- Fortran
- Scala
- VB.NET
- iOS
- Android
- TypeScript
- Kotlin
- ※JavaはSpotBugs(旧FindBugs)のチェッカーを含みます。
- ※JavaScriptはJSHintのチェッカーを含みます。
またこれら言語による開発で標準的に使用される70種類以上のフレームワーク(例:JSP, Spring, Struts, ASP.NET, Ajax, jQuery, Angular, Node.js,Symphony, Ruby on Rails, Flask, Django など)に対応しています。
対応IaC(Infrastructure as Code)プラットフォームとファイルフォーマット
-
プラットフォーム
- Terraform
- AWS CloudFormation
- Kubernetes
- Helm
- ELK
-
ファイル・フォーマット
- JSON
- YAML
- HCL (Terraform)
- HTML
- XML
- plist
- TOML
- Properties
- Vueテンプレート
- JSX
- TSX
Coverityの仕組み
Coverityの基本的な環境構成について説明します。
全体構成
Coverityはサーバー・クライアント型のアプリケーションです。
- クライアント側はCoverity Analysis、サーバー側はCoverity Connectと呼ばれます。
- 対象ソースコードをCoverity Analysisで解析し、結果はCoverity Connectで確認します。検出された不具合はメール通知などが可能です。
- インストーラーを用いて容易に環境を構築できます。
- サーバー・クライアントともにおおむねね3カ月ごとにアップデートされ、機能拡充が行われています。
- サーバーとクライアントを同じマシンに構築しても問題ありません。
-
Coverity Analysis(クライアント側)
Coverity Analysisとは、Coverityのクライアント側にあたるアプリケーションです。
- ソースコードのビルドができる環境にインストールする必要があります。
- 本アプリケーションで解析を行い、データをサーバー(Coverity Connect)へ送信して結果を確認します。
- コマンドラインやデスクトップアプリが用意されています。
- CI/CD連携で利用する場合には、本アプリケーションをJenkinsなどのCIツール上で動かします。
-
Coverity Connect(サーバー側)
Coverity Connectとは、Coverityのサーバー側にあたるアプリケーションです。
- JavaベースのWEBアプリケーションです。
- クライアントでの解析結果がこちらに送信されます。
- ブラウザーで接続し、解析結果の詳細確認やステータス設定などを行うことができます。
- Coverityのライセンスは本サーバーにより管理されます。
マシンの推奨スペックや前提環境についてはFAQを参照ください。
Coverityの使い方
Coverityの典型的な使い方を説明します。
-
解析(スキャン)
Coverity Analysisで対象のソースコードをスキャンします。
-
結果の確認と修正
Coverity Connectで解析結果と修正ガイダンスを確認します。IDE環境上で確認できます。
-
継続的な解析と管理
ソフトウェアをアップデートする度に、解析と修正を繰り返します。
【STEP 01】解析(スキャン)
以下の手順で解析の操作を行います。このプロセスはBACサイクルと呼ばれ、Coverity Analysisにて容易に実行できます。
-
Build(ビルドキャプチャ―)
通常のコンパイルで使用されるmsbuildやmakeなどのビルドコマンドをCoverity経由で実行して中間データをキャプチャーします。
Coverityはコンパイラの呼び出しを監視して解析前データである中間ファイルを作業ディレクトリ(中間ディレクトリ)に出力します。 -
Analyze(解析)
中間ディレクトリを指定して、スキャンを実行します。これにより不具合データと解析サマリが生成されます。
オプションを指定することで細かい解析の設定を行うことが可能です。 -
Commit(コミット)
解析結果を格納するプロジェクトとストリームを指定して、解析データをCoverity Connectに送信します。
【STEP 02】結果の確認と修正
解析と結果の送信が完了したら、ブラウザーでCoverity Connectにアクセスして、バグの内容と修正方法を確認します。
- 指摘内容の詳細情報(不具合の位置、CWEデータ、データフローのトレースなど)を確認できます。
- 修正に専門知識が必要となるセキュリティリスクについては、どのように修正すべきかの具体的な修正ガイダンスを確認できます。経験の浅い開発者でも、問題に対する深い理解に基づいてコードの修正を行うことができます。
- IDEと連携して利用する場合には、コーディング時にリアルタイムに指摘やガイダンスを確認できます。
- 各指摘は影響度などさまざまな要素に応じてフィルターができるため、指摘一覧を効率的に確認して問題をトリアージできます。
- 解析結果レポートのエクスポート(CSVなどの形式でファイル出力)が可能です。またダッシュボードを用いた全体状況のチャート確認など管理機能も豊富です。
このようなCoverityの仕様により、不具合や脆弱性を早期に修正することはもちろん、開発者の品質・セキュリティに対する理解を深めることもできます。エンジニアのコーディングスキルを向上させることにより、間接的に有識者やレビューアの負担軽減も期待できます。
【STEP 03】継続的な解析と管理
静的解析は一度実施したら終わりではなく、プロダクトの更新にともなって継続的に実行する場合がほとんどです。Coverityの以下のような特徴によって、開発者およびマネージャーは継続的な解析とその管理を容易に行うことができます。
開発ワークフローへの統合
各種IDE(Visual Studio、Eclipse、IntelliJなど)、ソフトウェア構成管理ツール(git、svnなど)、継続的インテグレーション(Jenkins、Azure DevOpsなど)、バグ・トラッキングツール(Jira/Bugzillaなど)、アプリケーション・ライフサイクル・マネジメント(ALM)ソリューションなど、さまざまな開発ツールと短時間で統合できます。これによって既存の開発プロセスやDevOps基盤に容易にCoverityを統合でき、CI/CD連携による自動化やDevSecOpsの推進が可能になります。
上記にくわえ、CoverityはAPIを用いることでさまざまなインテグレーションが可能です。現状の開発環境や開発プロセスを大きく変更することなく、スムーズにソースコード静的解析の仕組みを導入し、レビュー・受入れ検査・QA検査など、開発のさまざまな局面で活用いただくことができます。
-
CID(Coverity ID)による指摘の継続管理
Coverityにおいて、各指摘はCIDによって一意に管理されます。そのため、CIDが採番された指摘に何らかのステータス(例えば指摘を無視するなど)を設定すると、以降の解析でもそのステータスが引き継がれます。ソースコードを修正しても(大規模な変更が入らない限りは)再度の解析で同じ指摘には同じCIDが設定されるため、ステータス情報などは引き継がれます。このように、継続的な解析における無駄な設定の負担を軽減できます。
-
スナップショットによる差分の比較
Coverityにおいて解析結果はスナップショットとして保存されます。各スナップショットは比較できるため、前回の解析以降に新たに検出された不具合のみを表示するといった操作が可能です。
このような一連のCoverity利用によって、継続的に欠陥の作り込みを予防できます。不良や脆弱性の発見をテスト工程以降の後半フェーズに持ちこすことを防ぎ、手戻りにともなう作業コストを低減します。
Coverityの価格とライセンス体系
- 年間サブスクリプションライセンスでの提供となります。
- 料金は利用規模(開発者数など)によって変動します。
- 解析できる言語や機能の有無によって変動しません(全言語の解析および全機能の利用が可能です)。
費用に関する情報は公開されていませんので、詳細はお問い合わせから当社までお気軽にご連絡ください。
無償トライアルについて
トライアル用のライセンスを用いてCoverityの評価を行うことができます(期間は30日間です)。ご希望のお客さまはお問い合わせからトライアル希望をお伝えください。
Coverityのことなら日立ソリューションズ
日立ソリュ―ションズは、豊富な導入実績をもつCoverityの国内販売代理店です。当社の特色について説明します。
選ばれる理由
-
solution 01
豊富な実績とノウハウを生かし、お客さまの課題を解決
長年にわたって蓄積してきたシステム開発・構築の経験より、お客さまの課題に合わせた柔軟な提案が可能です。
-
solution 02
関連製品との組み合わせで、
柔軟かつスピーディーに対応さまざまな関連製品と連携させることで、要件にフィットしたシステムが速やかに実現できます。
-
solution 03
日立グループの力を結集した
“One Hitachi”のSI力プロジェクト推進をワンストップで支援。日立グループ各社の知見を生かした”One Hitachi”体制で幅広く対応します。
日立ソリューションズはCoverityのメーカーであるSynopsys社より、最も営業成績に貢献したパートナーとしてアワードを受賞しています。
支援メニュー
Coverityのライセンス販売に関連して、以下のような支援メニューも提供しております。その他、お客さまのご要望に合わせて対応しますので、ご希望があればお気軽にご相談ください。※いずれも個別見積となります。
-
PoC支援
導入検討時における製品評価作業の支援が可能です。
-
環境構築支援
利用開始時のサーバー構築や、各種インテグレーションの作業支援が可能です。
-
サーバー運用支援
本番利用時におけるサーバーのメンテナンス・アップデートなどの支援が可能です。
-
解析支援
Coverityの利用方法に関するアドバイスやチェック作業の代行などが可能です。
FAQ(よくある質問)
-
Coverityの値段やライセンス形態を教えてください。
Coverityは年間サブスクリプションライセンスで提供されます。詳細は以下を参照ください。
Coverityの価格とライセンス体系 -
Coverityには無料の評価版・体験版のライセンスはありますか?
あります。詳細は以下を参照ください。
無償トライアルについて -
チェッカーリファレンスなど、Coverityのドキュメントを確認したいです。
ドキュメントはこちらを参照ください。
-
Coverityの対応コンパイラを教えてください。
-
Coverityのインストールにおいて前提となる動作環境(システム要件)を教えてください。
- Coverity Analysis(解析のためのクライアントツール)
以下を参照ください。
https://sig-product-docs.synopsys.com/ja-JP/bundle/coverity-docs/page/deploy-install-guide/topics/supported_platforms_for_coverity_analysis.html - Coverity Connect(解析結果閲覧用のWEBサーバー)
以下を参照ください。
https://sig-product-docs.synopsys.com/ja-JP/bundle/coverity-docs/page/deploy-install-guide/topics/coverity_connect_policy_manager_and_reports_platforms.html
- Coverity Analysis(解析のためのクライアントツール)
-
Coverityの推奨ハードウェアスペックを教えてください。
- Coverity Analysis(解析のためのクライアントツール)
以下を参照ください。
https://sig-product-docs.synopsys.com/ja-JP/bundle/coverity-docs/page/deploy-install-guide/topics/coverity_analysis_hardware.html - Coverity Connect(解析結果閲覧用のWEBサーバー)
以下を参照ください。
https://sig-product-docs.synopsys.com/ja-JP/bundle/coverity-docs/page/deploy-install-guide/topics/coverity_connect_hardware.html
- Coverity Analysis(解析のためのクライアントツール)
-
Coverityはコードメトリクスを取得できますか?
できます。行数、オペランド数、循環的複雑度などを計測することができます。
-
Coverityの画面は日本語に対応していますか?
日本語化の設定に対応しています。
最終更新日:2024年10月10日