
この記事では、AI SASTツールのリーダー10社を紹介する。各ツールの中核機能と、セキュリティの発見、優先順位付け、修復を強化するためにAIを実装する独自の方法を探ります。
SASTとは?
静的アプリケーションセキュリティテスト(SAST)は、アプリケーションのソースコード、バイトコード、または、バイナリを 分析し、ソフトウェア開発ライフサイクル(SDLC)の早い段階で、脆弱性とセキュリティ上の欠陥を特定するための方法論です。SAST は、ソースコード内の脆弱性を発見するため、多くの場合、安全でないコードに対する最初の防御となります。
詳細はこちら SAST vs DAST 知っておくべきこと
SASTはあなたのコードにどのような脆弱性を見つけましたか?
SASTが発見できる脆弱性には様々なものがあり、使用されているコーディング手法、技術スタック、フレームワークによって異なります。以下は、SASTツールが通常発見する最も一般的な脆弱性です。
SQLインジェクション
データベースの侵害につながる可能性のある、ユーザ入力の不適切なサニタイズを検出する。
インジェクション・コードの例
# Function to authenticate user
def authenticate_user(username, password):
query = f"SELECT * FROM users WHERE username = '{user}' AND password = '{password}'"
print(f"Executing query: {query}") # For debugging purposes
cursor.execute(query)
return cursor.fetchone()
クロスサイト・スクリプティング (XSS)
ユーザー入力が不正に検証またはエンコードされ、悪意のあるスクリプトのインジェクションを許している事例を特定する。
XSSに脆弱なコードの例
<script>
const params = new URLSearchParams(window.location.search);
const name = params.get('name');
if (name) {
// Directly inserting user input into HTML without sanitization
document.getElementById('greeting').innerHTML = `Hello, ${name}!`;
}
</script>
バッファオーバーフロー
メモリ割り当ての不適切な処理がデータ破損やシステムクラッシュにつながる可能性がある箇所を強調。
バッファオーバーフローに脆弱なコード例
1#include
2void vulnerableFunction() {
3 char buffer[10]; // A small buffer with space for 10 characters
4
5 printf("Enter some text: ");
6 gets(buffer); // Dangerous function: does not check input size
7
8 printf("You entered: %s\n", buffer);
9}
10
11int main() {
12 vulnerableFunction();
13 return 0;
14}
安全でない暗号の慣行
脆弱な暗号化アルゴリズム、不適切な鍵管理、ハードコードされた鍵を検出する。
import hashlib
def store_password(password):
# Weak hashing algorithm (MD5 is broken and unsuitable for passwords)
hashed_password = hashlib.md5(password.encode()).hexdigest()
print(f"Storing hashed password: {hashed_password}")
return hashed_password
SASTツールは貴重な洞察を提供し、開発者は問題が致命的になる前に修正することができる。
AIがSASTツールをどのように強化するか
現在、AIの話題(そしてBullSh*t)から逃れることはできない。AIがセキュリティ・ツールにどのように実装されているかを正確に知ることは難しい。私たちは、AIを搭載したSASTのリーダー企業のいくつかを比較し、これらのツールがセキュリティを強化するためにAIを実装するさまざまな方法を説明したいと考えました。
現在、SASTツールに関連するAIには3つのトレンドがある。
- AIによる脆弱性検出の改善:既知の脆弱性に関する大規模なデータセットで訓練されたAIモデルは、誤検知を減らしながら、セキュリティ上の問題を特定する精度を向上させる。
- AIによる自動優先順位付け: AIは、深刻度、悪用可能性、潜在的なビジネス上の影響に基づいて脆弱性をランク付けし、開発者が重要な問題に最初に集中できるようにします。
- 自動修復を提供するAI:AIは、コンテキストに応じたコードの修正または提案を提供し、修正プロセスを迅速化し、開発者が安全なコーディングプラクティスを習得できるようにする。
AIを搭載したSASTツール・トップ10
ここでは、従来のSASTの能力を強化するためにさまざまな方法でAIを使用している10の業界リーダーを紹介する(アルファベット順)。
1.Aikido セキュリティSAST|AI AutoFix

コアAI機能|自動修正機能(ダッシュボード+IDE)
AikidoSecurityは、SASTスキャナーで発見された脆弱性のコード修正プログラムを作成するためにAIを使用し、修正プロセスをスピードアップするために自動プルリクエストを生成することもできます。
他のツールとは異なり、Aikido サードパーティのAIモデルにあなたのコードを送信せず、あなたのコードがAIモデルを通して漏れないようにする独自の方法を持っています。Aikido 、あなたのコードのサンドボックス環境を作成し、目的に応じて調整されたLLMがそれをスキャンし、脆弱性について再度スキャンされた提案を作成します。提案された改善策が検証に合格すると、サンドボックス環境が破棄される前に、プルリクエストが自動的に作成される。Aikidos AutoFixはまた、AIが生成したコードを使用する際、開発者が十分な情報を得た上で判断できるよう、提案に対する信頼度スコアを与えることができる。
2.チェックマークス

コアAI機能|オートレメディエーション (IDEのみ)
Checkmarx SASTツールは、IDE内でAIが生成したコーディング提案を開発者に提供することができます。ツールはChatGPTに接続し、開発者のコードをOpenAIモデルに送信し、提案を取得します。この方法は、ChatGPTへのクエリプロセスを簡単にしますが、独自のプロセスを追加しないため、現時点では機能が制限されます。
警告 - このユースケースは、独自のコードをOpenAIに送信するため、コンプライアンス基準を満たしていない可能性があります。
3.コードアントAI

コアAIの能力|検出力の向上 (ダッシュボード)
CodeAntは 、コードの脆弱性の発見と修正提案に完全にAIを使用しているコード・セキュリティと品質ツールです。CodeAntは、AIモデルがどのように機能するかについてのドキュメントを提供していないが、一般的にAIをコア検出エンジンとして使用しているため、特に大企業では検出が遅くなる可能性がある。
4.コードスレット

コアAI機能|自動優先順位付け (ダッシュボード)
CodeThreatはオンプレミスで静的コード解析を提供し、AI支援による修復戦略を提供する。主な違いは、CodeThreatは自社のオンプレミスAIモデルを自社のツールに統合できることだ。これは、データをサードパーティに送らないという利点があるが、現時点では遺伝子学習されたAIモデルしか提供できないことを意味し、ChatGPTのようなオンプレミスAI LLMを実行する必要がある。
5.フォーティファイ スタティック コード アナライザー

AIコア能力|優先順位付けの改善(ダッシュボード)
Fortify Static Code Analyzerは、ソースコードの脆弱性をスキャンし、悪用の可能性などのアラートが出されたときに、ユーザーがしきい値を調整するオプションを提供します。Fortifies AI Autoassistantは、脆弱性に割り当てられた過去のしきい値をレビューし、他の脆弱性のしきい値をインテリジェントに予測します。
注:Fortify Static Code Analyzerは、脆弱性を発見したり、その修正を提案したりするためにAIを使用するのではなく、管理パネルで使用される管理設定を予測するためにAIを使用します。
6.GitHub アドバンスドセキュリティ|CodeQL

AIコア機能|自動修復 (IDE+ダッシュボード)
GitHub CodeQLは、AIを使用してコード提案の形でインテリジェントな自動修復を作成する静的コードスキャナーです。開発者は、GitHub CodeSpacesのプルリクエストや自分のマシンから変更を受け入れたり、却下したりできる。GitHub Advanced Securityの一部だ。
7.Qwiet AI|SASTコード

コアAI機能|自動修正(ダッシュボード)
QwietAI SASTは、AIを活用してコードの脆弱性に対する修正アドバイスとコード修正を自動提案する、ルールベースの静的アプリケーション・セキュリティ・テスト・ツールです。Qwiet AI SASTの中核となるのは、問題の分析、修正案の提案、修正案の検証という3段階のAIエージェントです。
8.スニークコード|DeepCode

AIの中核機能|オートレメディエーション (IDE)
Snyk Codeは、開発者に特化したリアルタイムのSASTツールで、Snykが買収したDeepCode AIにより、IDE内から開発者にコード提案を提供することができる。DeepCode AIは複数のAIモデルを利用し、そのモデルの核となるセールスポイントは、トップクラスのセキュリティ専門家によってキュレートされたデータに基づいて学習されるため、AIの結果に対する信頼性が向上することだ。
9.Semgrepコード

コアAI機能|検出の向上
SemGrepsのAIアシスタント(その名もアシスタント)は、潜在的な脆弱性を取り巻くコードのコンテキストを使用して、より正確な結果を提供し、推奨されるコード修正を提供します。また、SemGrepのルールを作成し、提供されたプロンプトに基づいて検出を強化するために使用することもできます。
10.ベラコード修正

コアAI機能|自動修復
Veracode Fixは、開発者がVeracode IDEエクステンションまたはCLIツールを使用しているときに、コード内の脆弱性に基づいて変更を提案するためにAIを使用します。Veracode Fixの主な差別化点は、そのカスタム訓練されたモデルが、野生のコードではなく、データベース内の既知の脆弱性に対して訓練されていることである。この利点は、提案される修正に対する信頼性が高くなることだが、コードの修正を提案できるシナリオが限定されることだ。
SASTツールの選び方
AI)はセキュリティ市場に比較的新しく参入したものであり、業界のリーダーたちは革新的なアプリケーションを継続的に模索している。AIは、セキュリティ・システムを強化するためのツールとしてとらえるべきであり、むしろ唯一の真実の源としてとらえるべきである。注意すべき点は、AIは並みのツールを効果的なものに変えることはできないということだ。その可能性を最大限に引き出すために、AIはすでに強固な基盤と実績のあるツールと統合されるべきである。