脆弱性を探し出す7つの主要コード検査ツールとは:重要機能をほぼ網羅した優れたツール群
Comparitech.comは公式ブログで、コード検査ツールに求められる機能を解説し、それらの機能をほぼカバーする主要な7製品を紹介した。いずれも幅広いプログラミング言語に対応し、部分的なコードであっても脆弱性を検知できるという。
比較サイトComparitech.com(以下、Comparitech)は2021年8月3日(英国時間)、脆弱(ぜいじゃく)性検知などに用いるコード検査ツールについて、求められる機能を解説し、それらの機能をほぼカバーする次の7製品を紹介した。
「SonarQube」(SonarSource)
「Synopsis Coverity」(Synopsys)
「DeepSource」(DeepSource)
「VisualCodeGrepper」(NCC Group)
「Embold」(Embold)
「Parasoft」(Parasoft)
「Checkmarx」(Checkmarx)
コード検査ツールに求められる機能
コード検査ツールはプログラマーや開発者ができるだけバグやエラーのないコードを作成できるよう支援するソフトウェアソリューションだ。こうしたツールは通常、コードを読み取り、分析し、潜在的な問題や脆弱(ぜいじゃく)性をリアルタイムに特定する。これにより、本番環境にリリースする前にコードを修正できる。
コード検査ツールを使えば、コーディングミスが本番環境でのトラブルにつながり、多額の損失が発生するのを未然に防ぐことができる他、本番環境にリリースされたプログラムのエラー修正に時間と費用を浪費せずに済む。さらに、業界のセキュリティ基準に準拠した安全なアプリケーションを最初から開発する方法を学ぶことができる。
Comparitechによれば優れたコード検査ツールは、次の8つの特徴を備えているという。
プログラミング言語への対応
できるだけ多くのプログラミング言語に対応する。大規模な開発環境にデプロイする場合は、この機能が特に求められる。
既存のIT環境との連携
デプロイされる環境のITアーキテクチャに含まれるライブラリやフレームワーク、プラットフォームとうまく連携する。
IDEとの連携
開発者が使用するIDE(統合開発環境)と連携する。独立して実行されるツールや、スタンドアロンソフトウェアは望ましくない。
部分的なコードへの対応
ビルド可能なソースコードだけでなく、コードスニペット(コードの断片)からリアルタイムに脆弱性を特定できる。
脆弱性対応
できるだけ多くの脆弱性を検知する。新しく登場するバグや脅威にも対応できなければならない。Open Web Application Security Project(OWASP)が挙げるトップ10の脅威を検知できることが、優れた検知機能の一つの目安になる。
高い精度
検知精度が高く、判定結果が偽陽性や偽陰性をほとんど含まない。
使いやすさ
セットアップしやすく、使いやすく、管理しやすい。インストールしたら、継続的かつ自動的に動作し、手動の操作が最小限で済む。
投資効率が高い
投資する価値がある。例えば、無料のソリューションやより安価なソリューションにパフォーマンスで劣る場合、そのツールに費用をかけるのは合理的ではない。
今回取り上げた7つのコード検査ツールは、これらの特徴を全て、またはほとんど全て備えているとComparitechは主張する。
SonarQube
SonarQubeはコード品質の継続的な検査を実現する最も人気の高いオープンソースプラットフォームの一つだ。静的コード解析を実行し、無停止の自動レビューを可能にする。
20以上のプログラミング言語に対応し、バグや怪しいコード(コードスメル)、セキュリティ脆弱性を検知できる。
パスセンシティブなデータフローエンジンを搭載しており、NULLポインターの参照を検出する他、ロジックエラーやリソースリークを確認できる。
開発者が使っているDevOpsシステムから直接コードのビューを共有できるため、コード修正などの改善を共同で実行できる。脆弱性をSonarQubeが発見すると、深刻度に応じてランク付けするため、対応の優先順位を付けやすい。
既存のコードだけでなく、プルリクエストの分析やコードブランチの記録、プロジェクトのタイムラインを可視化して計画性を高めることもできる。
Synopsys Coverity
Synopsys Coverityもオープンソースのコード検査ツールだ。C、C++、C#、Objective-C、Java、JavaScript、Node.js、Ruby、PHP、Pythonに対応する。また、100種類のコンパイラをサポートする。コードの問題を特定するだけでなく、その根本原因を明確に説明することが特徴だ。
Synopsys Coverityで追跡、監視できる問題には、リソースリークやNULLポインター、APIの不正使用、初期化されていない変数の使用、メモリ破壊、バッファーオーバーラン、コントロールオーバーフロー、エラー処理の見落とし、安全ではないデータなどが含まれる。
Synopsys Coverityはバックグラウンドでインクリメンタル解析をリアルタイムで実行するため、コードを書いているまさにその瞬間にセキュリティや品質の欠陥を修正できる。
さらにCWE(Common Weakness Enumeration)情報を使用して問題の深刻さを認識し、改善策を提案するとともに、関連するセキュリティトレーニングを提供している。Synopsys Coverityには、高度なセキュリティを必要とする開発環境で使用できるオンプレミス版と、より簡単に導入してコードを管理できるSaaS版がある。
DeepSource
DeepSourceはプルリクエストごとにクリーンコード作成の手助けを求める開発者や、システムを停止することなく、迅速なサイクルを維持しようとするDevOpsチーム向けに開発されたツールだ。簡単にセットアップでき、インストールすると、すぐにコードの問題発見と修正を開始する。
DeepSourceの利用環境はオンプレミスだ。ソースコードを手の届くサーバに置いておきたいというセキュリティ意識の高い開発者に向く。
GitHubやBitbucket、GitLabなどのコードコラボレーションプラットフォームと統合されており、PythonやRuby、Goなどのプログラミング言語にも対応している。DeepSourceは問題を比較するためのデータベースを備えており、コードデータベース内の2000以上の問題を検出できる。
コミットごとにコードを自動的に整形し、継続的インテグレーション(CI)のビルドを壊すことなく、既存のコードフォーマッタを実行できるコラボレーションに向いているという。チーム間で共有できるプライベートリポジトリを備えている他、パブリックリポジトリを利用してチーム間またはチーム全体でコードを共有できる。
ダッシュボードには、レポートやインサイトが表示されており、コードの品質や全体的な健全性を監視できる。ドキュメントカバレッジや依存性などのコードメトリクスを追跡することもできる。
DeepSourceの精度は高く、偽陽性率は5%以下だ。
VisualCodeGrepper
VisualCodeGrepperは素早く作業を済ませたい開発者向けのコード解析ツールだ。C/C++、Java、PL/SQL、PHP、COBOLなどの言語に対応する。
時間的な制約が最重要な場合の解析を想定し、必要な基本的な機能しか備えていない。それでも、壊れたコードからオーバーフローまで、あらゆる問題を特定するような複雑なチェックが可能だ。
Embold
EmboldはDevOpsプロセスに不可欠なコード検査ツールだ。ソフトウェア開発プロジェクトの品質の管理と監視を実現する。静的コード解析も可能だ。
コンポーネントレベルで問題のフラグを立てることができる。この機能は開発者がコードをデバッグする際に開始ポイントを見つけるために役立つ。またEmboldは、問題の詳細を可視化し、安全なコーディングのベストプラクティスを開発者に教える機能を備える。
検出した問題についてヒートマップ形式のコード品質レポートを提供し、潜在的なソースコードの課題をより深く理解することができる。30種類のアンチパターンを検出し、コードの中で最も複雑なコンポーネントを特定できる。そして、そのコンポーネントがコード全体のパフォーマンスにどのような影響を与えるかを表示できる。
Emboldは、AIエンジンと機械学習技術を用いており、コーディングのオートコレクト機能のように、問題解決のための推奨事項を提供する。このツールは、4つの次元でコードを分析し、コードやデザイン、メトリクス、重複の問題を追跡できる。全ての解析データはクラウド上に安全に保存され、Webブラウザとツールの間の通信はSSLで暗号化されている。
Parasoft
Parasoftは他の静的解析検査ツールとは異なり、さまざまな静的解析手法をサポートする。その中には、パターンベースやフローベース、サードパーティー解析、メトリクス・多変量解析などを含む。また、ソフトウェアの欠陥が重大な障害を引き起こしたり、セキュリティ脆弱性が残ったりする前に、これらの欠陥を防止するのに役立つ。
Parasoftのツール群は、C/C++対応の「C++test」、Java対応の「Jtest」、C#/Visual Basic.NET対応の「dotTEST」などの静的コード解析ツールから成る。
C++testは高度なC/C++コード解析エンジンを使用してコードをふるいにかけ、抽象的な解釈を構築し、コードチェッカーを適用して問題点や脆弱性を発見する。2500以上のルールが用意されており、ベストプラクティスや業界標準、専用のバグファインダーをカバーしており、迅速で正確な分析を実行できる。
IDEまたはCLIから処理でき、解析結果をIDEで表示したり、ダウンロード可能なレポートとしてエクスポートしたりすることもできる。
Checkmarx
Checkmarx Software Security Platformは複数のツールから成り、コード検査機能とスキル開発機能を提供する。プライベートクラウド版とオンプレミス版がある。
「Static Application Security Testing」(SAST)や「Software Composition Analysis」(SCA)、「Interactive Application Security Testing」(IAST)といった一連のソフトウェアセキュリティツールを運用できる包括的な集中管理プラットフォームだ。
次に個々のツールの特徴を紹介する。
Checkmarx SAST(CxSAST)は大規模コードに対応した柔軟で正確な静的解析ソリューションであり、カスタムコードに含まれる数百ものセキュリティ脆弱性を特定するために利用できる。ソフトウェア開発ライフサイクルの早い段階でソースコードをスキャンし、脆弱性を特定し、早期に修正するための実用的な洞察を提供できるという。25以上のプログラミング言語とそれらのフレームワークをサポートしており、設定の必要はない。
Checkmarx Software Composition Analysis(CxSCA)は、ソフトウェアのコードベースを迅速にスキャンし、オープンソースソフトウェア(OSS)のライブラリ(直接または間接的な依存関係)を検出できる。使用されているOSSの特定のバージョンを識別して、関連する脆弱性やライセンスの問題を発見できる。
加えてOSSのコンフリクトやコンプライアンス違反に起因する、知的財産や著作権侵害の潜在的なリスクを可視化する。
Checkmarx Interactive Application Security Testing(CxIAST)は、既存の機能テスト活動を自動的に活用し、実行中のアプリケーションの脆弱性を検出するツールだ。CxIASTをCxSASTと組み合わせることで、現在市場に出ているSASTソリューションと完全に統合された唯一のIASTツールになるとComparitechは述べている。これにより、製品間の相関関係が把握可能となり、問題解決に要する時間を短縮できる。
さらに静的解析によって得られるコードレベルの洞察と、IASTから得られるランタイムの理解を組み合わせることで、問題がどこにあるのかを正確に見つけ出すことが可能となる。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 企業のセキュリティ維持にはなぜペネトレーションテストが重要なのか
WhiteSourceはペネトレーションテストに関する解説記事を公開した。テストの目的と重要性の他、ペネトレーションテストと脆弱性評価との違い、テストを進める7つのステップ、主要なテストアプローチ、テストに使うツールについて紹介した。 - C++やPython向けのコード可視化ツール「Sourcetrail」がオープンソースに
Coati Softwareは、クロスプラットフォームのインタラクティブなコード可視化ツール「Sourcetrail」を、無料のオープンソースソフトウェアとして公開した。CやC++、Java、Pythonなどに対応している。コードを読むことにほとんどの時間を費やす開発者に役立つツールだ。 - Microsoft、ソースコード解析ツール「Application Inspector」をOSSとして公開
Microsoftは、オープンソースでクロスプラットフォームのソースコード解析ツール「Microsoft Application Inspector」を公開した。多種多様なプログラミング言語で記述されたコンポーネントを使用した数百万行のコードを解析できる。コードの時間的な変化はもちろん、特に「危険な」部分がどこなのかを特定できる。