セキュア・コード・レビュー

セキュア・コード・レビューとは

セキュア・コード・レビューはアプリケーションのソースコードを手動または自動で調査するプロセスです。この調査の目的は、既存のセキュリティ上の欠陥や脆弱性を特定することです。コード・レビューでは、ロジックの誤りを重点的に検出し、仕様の実装を確認し、スタイル・ガイドラインをチェックするなどのアクティビティを行います。

自動コード・レビューは、事前に定義されたルールセットを用い、ツールによってアプリケーションのソースコードを自動的にレビューし、拙劣なコードを探すプロセスです。自動レビューでは、手動レビューよりソースコード内の問題を迅速に発見できます。

手動コード・レビューでは、人手によってソースコードを1行ずつ確認しながら脆弱性を探します。手動コード・レビューは決定したコーディングの文脈を明確にするために役立ちます。自動化ツールは高速である反面、開発者の意図や一般的なビジネス・ロジックを考慮することはできません。手動レビューはより戦略的で、個別の問題に注目します。

セキュア・コード・レビューの歴史

初めてのイタレーションでは、コード・レビューには時間のかかる公式レビューが必要でしたが、開発の高速化に伴い、時間のかかるレビューから、アジャイルな最新の開発手法に対応できる、より動的で簡素なプロセスへと進化していきました。

最近では、SCM/IDEへの統合が容易なレビュー・ツールもあります。静的アプリケーション・セキュリティ・テスト(SAST)などのツールは、手動によるレビューとは別に、開発チームが脆弱性を見つけて修正するために役立つ入力データを提供します。これらのツールはGitHubやGitLabなどのさまざまな開発環境、あるいはEclipseやIntelliJなどのIDEと互換性があるため、開発者は自分の好みの環境で作業できます。

コード・レビュー・プロセスのしくみ

コード・レビュー(手動、自動、または両者の組み合わせ)は自動通知または手動によって開始できます。堅牢なセキュア・コード・レビューを実行するための現在新のベストプラクティスとしては、手動レビューと自動レビューを併用する方法があります。この併用手法により、ほとんどの潜在的な問題を捕捉できます。

セキュア・コード・レビューはソフトウェア開発ライフサイクル(SDLC)の期間中いつでも行うことができますが、早期に行うほど、コードの修正が容易で時間もかからないため、効果も大きくなります。特に、開発者がコードを実際に作成しながら自動コード・レビューを用いれば、必要に応じてすぐに変更が可能です。手動コード・レビューは、コミット・フェーズで実行する場合や、マージ・リクエストをリポジトリに送信する場合に特に有効です。また、ビジネス・ロジックや開発者の意図を考慮しながらコードをレビューすることもできます。

自動レビューでは、大規模なコードベースを迅速かつ効率的に解析できます。開発者は、コーディング中にオープンソース・ツールまたは商用ツールを使用して自動レビューを実行し、リアルタイムで脆弱性を見つけることができます。最先端の開発チームはSASTツールも使用し、追加の入力データを投入して脆弱性の発見に役立てています。これにより、開発者はチェックインする前にコードを修正できます。有効な開発プロセスとしては、開発者がコードを作成しながら自分でレビューを行う方法があります。

手動レビューでは、上級開発者または経験豊富な開発者がコードベース全体の徹底的なレビューを行います。このプロセスは面倒で時間がかかる場合がありますが、自動化ツールでは見落とされる可能性があるビジネス・ロジックの問題などの欠陥を発見できます。QAテストの階層化も有効ですが、手動テストでも見落とされる可能性があるケースがまだあります。自動レビューと手動レビューの併用をお勧めします。

手動によるレビューとSASTなどのツールからのフィードバックを組み合わせることで、コミットされるコードの全体的なセキュリティが向上し、運用環境に入り込む欠陥の数を減らすことができます。

重大な脆弱性を静的アプリケーション・セキュリティ・テストで検出

詳細はこちら

セキュア・コード・レビューが重要な理由

セキュア・コード・レビューは開発の成功には必須のプロセスであり、次の利点があります。

  • SDLCの後工程になってから発見されるデリバリーでの欠陥を削減
  • 開発者が後工程で欠陥の修正に費やす時間を削減することにより生産性を向上
  • 本番環境に入り込むバグやセキュリティ脆弱性を削減
  • コードベース全体の一貫性と保守性の向上
  • コラボレーション、知識共有、開発生産性が向上し、得られた教訓を将来のコード開発に伝達して役立てることが可能
  • 開発プロセスの高速化とセキュリティの向上、リソースの使用と手間の削減によるROIの向上
セキュア・コード・レビュー | シノプシス

セキュア・コード・レビューの要素

セキュア・コード・レビューの成果を上げるには、主に以下の要素が必要です。

  • 手動レビューと自動レビューの併用
  • コラボレーション(知識や学んだ教訓の共有など)
  • コードをマージする前に欠陥やポリシー違反を削減するために役立つ指標の調査

シノプシスの支援内容

シノプシスはアプリケーション・セキュリティの分野で業界リーダーに選ばれています。シノプシスの最先端の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にセキュリティを組み込む)」をご覧ください。