セキュア・コード・レビューはアプリケーションのソースコードを手動または自動で調査するプロセスです。この調査の目的は、既存のセキュリティ上の欠陥や脆弱性を特定することです。コード・レビューでは、ロジックの誤りを重点的に検出し、仕様の実装を確認し、スタイル・ガイドラインをチェックするなどのアクティビティを行います。
自動コード・レビューは、事前に定義されたルールセットを用い、ツールによってアプリケーションのソースコードを自動的にレビューし、拙劣なコードを探すプロセスです。自動レビューでは、手動レビューよりソースコード内の問題を迅速に発見できます。
手動コード・レビューでは、人手によってソースコードを1行ずつ確認しながら脆弱性を探します。手動コード・レビューは決定したコーディングの文脈を明確にするために役立ちます。自動化ツールは高速である反面、開発者の意図や一般的なビジネス・ロジックを考慮することはできません。手動レビューはより戦略的で、個別の問題に注目します。
初めてのイタレーションでは、コード・レビューには時間のかかる公式レビューが必要でしたが、開発の高速化に伴い、時間のかかるレビューから、アジャイルな最新の開発手法に対応できる、より動的で簡素なプロセスへと進化していきました。
最近では、SCM/IDEへの統合が容易なレビュー・ツールもあります。静的アプリケーション・セキュリティ・テスト(SAST)などのツールは、手動によるレビューとは別に、開発チームが脆弱性を見つけて修正するために役立つ入力データを提供します。これらのツールはGitHubやGitLabなどのさまざまな開発環境、あるいはEclipseやIntelliJなどのIDEと互換性があるため、開発者は自分の好みの環境で作業できます。
コード・レビュー(手動、自動、または両者の組み合わせ)は自動通知または手動によって開始できます。堅牢なセキュア・コード・レビューを実行するための現在新のベストプラクティスとしては、手動レビューと自動レビューを併用する方法があります。この併用手法により、ほとんどの潜在的な問題を捕捉できます。
セキュア・コード・レビューはソフトウェア開発ライフサイクル(SDLC)の期間中いつでも行うことができますが、早期に行うほど、コードの修正が容易で時間もかからないため、効果も大きくなります。特に、開発者がコードを実際に作成しながら自動コード・レビューを用いれば、必要に応じてすぐに変更が可能です。手動コード・レビューは、コミット・フェーズで実行する場合や、マージ・リクエストをリポジトリに送信する場合に特に有効です。また、ビジネス・ロジックや開発者の意図を考慮しながらコードをレビューすることもできます。
自動レビューでは、大規模なコードベースを迅速かつ効率的に解析できます。開発者は、コーディング中にオープンソース・ツールまたは商用ツールを使用して自動レビューを実行し、リアルタイムで脆弱性を見つけることができます。最先端の開発チームはSASTツールも使用し、追加の入力データを投入して脆弱性の発見に役立てています。これにより、開発者はチェックインする前にコードを修正できます。有効な開発プロセスとしては、開発者がコードを作成しながら自分でレビューを行う方法があります。
手動レビューでは、上級開発者または経験豊富な開発者がコードベース全体の徹底的なレビューを行います。このプロセスは面倒で時間がかかる場合がありますが、自動化ツールでは見落とされる可能性があるビジネス・ロジックの問題などの欠陥を発見できます。QAテストの階層化も有効ですが、手動テストでも見落とされる可能性があるケースがまだあります。自動レビューと手動レビューの併用をお勧めします。
手動によるレビューとSASTなどのツールからのフィードバックを組み合わせることで、コミットされるコードの全体的なセキュリティが向上し、運用環境に入り込む欠陥の数を減らすことができます。
セキュア・コード・レビューは開発の成功には必須のプロセスであり、次の利点があります。
セキュア・コード・レビューの成果を上げるには、主に以下の要素が必要です。
シノプシスはアプリケーション・セキュリティの分野で業界リーダーに選ばれています。シノプシスの最先端のCoverity® SASTソリューションにより、コード・レビューの段階で開発者の生産性を高めることができます。
最近のDevOps環境の開発では、既存のシステムに簡単に統合できるCoverityなどのツールが必要です。Coverity Code Sight™を利用することで、コードの作成時にIDEにシームレスに統合して生産性を向上させ、セキュリティと品質の問題を排除することができます。CIサーバーでコードをビルドする際に、Coverityを統合して自動スキャンを構成することもできます。Coverityはプロジェクトのクオリティゲートとして機能し、ポリシーに違反したプロジェクトのビルドを失敗させることができます。また、Coverityを構成して、ポリシー違反を開発者に通知するようにすることもできます。
Coverityは任意のSCMとの統合も容易です。たとえば、CoverityはGitLabのプルリクエストへの統合が容易で、これによってフィードバックの情報源を追加したり、コードをチェックインする前にポリシー違反を簡単に見つけることできます。SASTからのフィードバックをSDLCに取り入れることで、セキュリティの欠陥を修正するための有益な指針が得られます。
Coverityでコード・レビュー・アクティビティを強化する方法の詳細については、ホワイト ペーパー「Build Security Into Your SDLC With Coverity(Coverityを使用してSDLCにセキュリティを組み込む)」をご覧ください。