GitHubが比較した2つのセキュリティテストツール、それぞれいつ誰が使う?ソフトウェア構成分析と静的アプリケーションセキュリティテスト

GitHubは開発者がよく使用するセキュリティツールのうち、SCAツールとSASTツールを取り上げ、それぞれの機能を説明するとともに、GitHubが提供する独自のSCAツールとSASTツールを紹介した。

» 2022年09月13日 13時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 GitHubは2022年9月9日(米国時間)、開発者が開発時によく使用するセキュリティツールのうち、ソフトウェア構成分析(SCA)ツールと静的アプリケーションセキュリティテスト(SAST)ツールを取り上げ、それぞれの機能を説明するとともに、GitHubが提供するSCAツール「Dependabot」と、SASTツール「コードスキャン機能」を紹介した。

 SCAツールとSASTツールは、いずれも開発者が自らコードのセキュリティを確保するために使用できるアプリケーションセキュリティテストツールだ。

 これらのツールが普及する以前は、開発がほぼ終了した段階で、開発者とは別のセキュリティ専門家がリリース直前のコードをテストしていた。この方法は手戻りが多く、開発時間が長く、開発コストも高くなる。

 だが、最近ではSCAツールやSASTツールなどの普及によって、開発者がコードを記述した直後に、より効率的で低コストな手段でコードの安全性を保つことが可能になっている。

SCAツールとは

 組織内のコードベースにある全てのオープンソースコンポーネントのセキュリティ状態を検知、管理する際に、SCAツールが役立つ。

 問題のあるオープンソースコードが特定されると、SCAツールはセキュリティ上の脅威に加え、帰属表示やポリシー順守を必要とするライセンス情報があるかどうかを判断する。高度なSCAツールを使うと、オープンソースコンポーネントの管理プロセス全体を自動化できる。

 SCAツールは脆弱(ぜいじゃく)性に関する包括的な情報を提供するため、開発者は容易にコードを修正できる。SCAツールはソフトウェア開発ライフサイクル(SDLC)全体を通じて使用できる。

SASTツールとは

 SASTツールの役割は、組織が所有するプロプライエタリソフトウェアのセキュリティ問題に対処することだ。SASTツールはソースコードをスキャンし、既知の脆弱なコードパターンと照合して分析する。これにより、潜在的なセキュリティ上の欠陥や脆弱性を特定できる。

 SASTツールを動かす際、動作するアプリケーションは不要であり、コードを実行することなくテストを実施できる。そのため、SDLCの早い段階でSASTツールによるテストを実施できる。SASTツールはコーディング中の開発者にリアルタイムのフィードバックを提供でき、コードがSDLCの次のフェーズに渡される前に、問題を修正する役に立つ。

 両ツールの特徴をまとめると次のようになる。

SCA SAST
オープンソースコードを扱う プロプライエタリなコードを扱う
修正では脆弱性にパッチを適用する 修正ではより安全なコードの作成や、セキュリティ上の弱点へ対処する
あるライブラリがツールに認識されていない場合、偽陰性になることが多い ある問題が実際にはセキュリティリスクではない場合、偽陽性(誤検出)が発生することが多い

 SCAツールとSASTツールを組み合わせると相乗効果を発揮する。いずれもソフトウェアの安全性を維持する上で重要だ。

修正プロセスはどう違う?

 SCAツールを使った場合、脆弱性を容易に修正できる。開発者はパッチを当てるか、最新版のソースコードをダウンロードすれば済むからだ。SASTツールはそうではない。通常、ツールが修正方法のガイダンスを提供するものの、提案に従うことが困難な場合や、コードの変更が必要になる場合があるからだ。どちらのツールもSDLC全体にわたって使用できるが、両者の組み合わせが最も効果を発揮するのは、プルリクエストの段階だ。

間違った検出が残る課題とテストスピードの違い

 SCAツールでは、偽陰性が現れる場合がある。実際には問題があるのに、問題がないと判定されてしまう。これは、必要なライブラリのインデックスが作成されておらず、そのためにコード内の問題が検知できないからだ。

 SCAツールは高速であり、プロジェクト規模にかかわらず、ビルドに影響を与えることなく、数秒でスキャンを実行できる。だが、従来のSASTツールは、より時間がかかる。テストがSDLCの外で実行されていた時代に作られたものだからだ。ただし、GitHubのSASTツール(コードスキャン機能)は、SDLCの中で実行され、所要時間がはるかに短い。

GitHubのSCAツールとSASTツールはどうなっている?

 GitHubは全ての開発者のホームとして、独自のSCAツールであるDependabotと、SASTツールであるコードスキャン機能を用意している。開発者はこれらをOSS(オープンソースソフトウェア)プロジェクトで無償利用できる。企業ユーザーは「GitHub Advanced Security」(GHAS)を利用して、コードのセキュリティを確保できる。

 Dependabotを使えば、リポジトリ内の脆弱な依存関係を簡単に発見し、修正できる。Dependabotを有効にすると、依存関係にあるソフトウェアの脆弱性について、常にアラートが発行される。さらに、Dependabotのセキュリティ更新を有効にすると、セキュリティアラートが発生したときに、それを修正するためのプルリクエストを自動的に作成する。

 Dependabotは依存関係をリアルタイムにキャッチするため、開発者は次のような情報をいつでも入手できる。

どの依存関係が追加、削除、更新されたのか、それぞれのリリース日はいつか
問題のあるコンポーネントを使用しているプロジェクトの数はどれほどか
それぞれの依存関係についての脆弱性データ
開発者が記述したコードが脆弱な呼び出しを行った場合の警告

 コードスキャン機能を使うと、コードを記述した際にセキュリティ上の問題がないかどうかをチェックして、修正案を開発者のワークフローにネイティブに統合する。Gitにプッシュするたびに、新しい潜在的な脆弱性がないかどうかスキャンされる。プルリクエストに直接、結果を表示できる。

 コードスキャン機能は「CodeQL」を使用しており、CodeQLは、GitHub Security Labと主要な研究者が作成し、オープンソース化した2000以上のCodeQLクエリを含んでいる。これにより、最小限の構成で脆弱性を発見できる。

 なお、SCAツールやSASTツールの他にも、GitHubは提供していないものの、動的アプリケーションセキュリティテスト(DAST)ツール、インタラクティブアプリケーションセキュリティテスト(IAST)ツールなどがある。

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。