セキュアSDLC、SAST、DASTツール
静的解析(SAST)、動的解析(DAST)、脅威モデリングを開発の早い段階から活用し、ソフトウェア開発ライフサイクルにセキュリティを組み込みます。
「セキュアSDLC、SAST、DASTツール」はCoddyKit上の無料Security+ Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSecurity+ Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Security+ Academyコースには全4レッスンが含まれています。
安全なSDLCとは
Secure Software Development Lifecycle(SSDLC)は、要件定義から設計、コーディング、テスト、デプロイ、保守に至るソフトウェア開発のすべての段階に、セキュリティ活動を組み込みます。従来のSDLCではセキュリティを最終段階のゲートとして扱うため、コストが高く、効果も限定的です。安全なSDLCの考え方は、脆弱性を可能な限り早期に発見して修正することです。設計中に見つかった欠陥は、本番環境で見つかった欠陥よりもはるかに低コストで修正できるためです。
開発におけるセキュリティの左シフト
Shift leftとは、セキュリティ対策を最後に付け加えるのではなく、開発タイムラインの左側、つまりより早い段階に移すことです。実際には、ユーザーストーリーにセキュリティ要件を含め、設計中に脅威モデリングを実施し、開発中にコードレビューとSASTを行い、リリース前にDASTを実行します。左シフトを実践するチームは、脆弱性を最も低コストで修正できる開発中に発見できます。本番環境で発見するのではありません。
脅威モデリング:STRIDEとPASTA
脅威モデリングは、設計段階でセキュリティ脅威を体系的に特定し、文書化します。STRIDEモデルは、脅威をなりすまし、改ざん、否認、情報漏えい、サービス拒否、特権昇格に分類します。PASTA(Process for Attack Simulation and Threat Analysis)は、攻撃者の目的をシミュレートするリスク中心の手法です。脅威モデルにより、1行もコードを書く前に、優先順位付けされた緩和策を策定できます。
# STRIDE threat categories (mnemonic)
# S - Spoofing identity
# T - Tampering with data
# R - Repudiation of actions
# I - Information disclosure
# D - Denial of service
# E - Elevation of privilege静的アプリケーションセキュリティテスト(SAST)
SAST(ホワイトボックステスト)は、アプリケーションを実行せずにソースコード、バイトコード、またはバイナリを分析し、既知の脆弱性に関連するコーディングパターンを探します。SASTツールはコードベース全体をすばやくスキャンし、ハードコードされた認証情報、SQLインジェクションのシンク、安全でないデシリアライゼーションなどの問題を報告できます。IDEやCIパイプライン内で実行され、ファイル名と行番号を付けて検出結果を報告するため、修正が容易です。
# Example: running Semgrep SAST in CI
semgrep --config=auto --error src/
# Common SAST tools:
# - Checkmarx, Veracode, Fortify (commercial)
# - Semgrep, SonarQube, Bandit (open source)
# - GitHub CodeQL (integrated with GitHub Actions)SASTの限界:誤検知
SASTの主な限界は、実際には安全なコードを脆弱だと判定する誤検知が発生しやすいことです。このアラート疲れにより、開発者は検出結果を調査せずに無視するようになります。また、SASTツールでは、実行時の設定問題、実行時の挙動に依存する認証の欠陥、サードパーティAPI呼び出しの脆弱性を検出できません。SASTは、検出結果を正確にトリアージできるよう開発者をトレーニングすることで、最も効果的に活用できます。
動的アプリケーションセキュリティテスト(DAST)
DAST(ブラックボックステスト)は、実行中のアプリケーションに対してHTTPエンドポイントへ攻撃ペイロードを送り、脆弱性の兆候がないか応答を分析します。DASTではソースコードへのアクセスは必要ありません。攻撃者と同じようにアプリケーションをテストするためです。認証バイパス、応答に反映されるXSS、サーバーの設定ミスなど、実行時の問題の検出に優れています。DASTツールにはOWASP ZAP、Burp Suite、Netsparkerがあります。
# Running OWASP ZAP baseline scan against a URL
docker run -t owasp/zap2docker-stable zap-baseline.py \
-t https://staging.example.com \
-r zap-report.html
# ZAP sends probe requests and analyzes responses
# without requiring source code accessSASTとDAST:相互補完的なアプローチ
SASTとDASTは競合するものではなく、相互補完的なものです。SASTはコードレベルの問題を早期に発見し、IDEと統合できますが、実行時の挙動を把握できません。DASTは実行時の脆弱性を発見でき、ソースコードも必要ありませんが、自動プローブで実行されないコードパスはスキャンできません。CIパイプラインでSASTを、ステージング環境に対してDASTを使用するなど、両方を組み合わせることで、SDLC全体の脆弱性カバレッジを最大化できます。
インタラクティブアプリケーションセキュリティテスト(IAST)
IASTは、実行時にアプリケーションへ計測を組み込むことで、SASTとDASTの両方の要素を組み合わせます。IASTエージェントはアプリケーション内部(サーバー上)で動作し、テストトラフィックが通過する際のコード実行を監視します。汚染されたユーザー入力をコードパス経由で機密性の高いシンクまで追跡し、純粋なSASTよりも低い誤検知率で脆弱性を発見できます。IASTは特にJavaおよび.NETアプリケーションで効果的で、機能テストの実行にも自然に統合できます。
ソフトウェアコンポジション解析(SCA)
Software Composition Analysis(SCA)は、アプリケーション内のオープンソースライブラリとサードパーティ依存関係を特定し、脆弱性データベース(NVD、OSV)と照合します。現代のアプリケーションでは、推移的依存関係も含めて数百もの依存関係を取り込む場合があります。そのため、OWASP Dependency-Check、Snyk、RenovateなどのSCAツールは、攻撃者がサプライチェーンで既知のCVEを悪用する前に検出するために不可欠です。
# OWASP Dependency-Check (scans project dependencies)
dependency-check --project myapp --scan ./target --format HTML
# Snyk CLI
snyk test # finds vulnerabilities in package.json / requirements.txt
snyk monitor # continuously monitors for new CVEsCI/CDパイプラインのセキュリティ
CI/CDパイプラインにセキュリティツールを統合すると、セキュリティゲートを通過していないコードが本番環境に到達することを防げます。一般的なDevSecOpsパイプラインでは、コミットごとにSAST、依存関係の変更時にSCA、レジストリへのプッシュ前にコンテナイメージスキャン、Terraform/CloudFormationに対するIaCスキャン、ステージング環境へのデプロイに対するDASTを実行します。セキュリティチェックに失敗するとビルドがブロックされ、セキュリティをデフォルトとする文化が徹底されます。
# GitHub Actions example — security gate in CI
jobs:
security:
steps:
- uses: actions/checkout@v4
- name: Run SAST
run: semgrep --config=auto --error .
- name: SCA check
run: snyk test --severity-threshold=high
- name: Container scan
run: trivy image myapp:latest --exit-code 1安全なコードレビューの実践
自動化ツールであっても、セキュリティロジックに重点を置いた人間によるコードレビューに取って代わることはできません。ピアレビューでは、認証と認可のチェックが適切な場所にあること、エラー処理で機密情報が漏えいしないこと、暗号関数が承認済みのアルゴリズムとパラメーターを使用していること、ビジネスロジックをバイパスできないことを確認します。開発チーム内のセキュリティチャンピオン、つまりセキュリティトレーニングを受けた開発者が、セキュリティチームとエンジニアリングチームの橋渡しをします。
クイックチェック
このレッスンで扱ったCompTIA Security+(SY0-701)の概念について、理解度を確認しましょう。
レッスンのまとめ
このレッスンでは、安全なSDLCはセキュリティを最後に付け加えるのではなく、開発のすべての段階に組み込むこと、SASTは実行せずにコードを分析し、DASTは実行中のアプリケーションをテストすること、そしてSCAは脆弱なオープンソース依存関係を特定し、CI/CDのセキュリティゲートは検出結果を自動的に適用することを学びました。次は、LDAPとActive Directoryを使ったディレクトリサービスについて学びます。
よくある質問
「セキュアSDLC、SAST、DASTツール」レッスンは無料ですか?
はい。「セキュアSDLC、SAST、DASTツール」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Security+ Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Security+ Academyコースには全4レッスンが含まれています。
「セキュアSDLC、SAST、DASTツール」で何を学びますか?
静的解析(SAST)、動的解析(DAST)、脅威モデリングを開発の早い段階から活用し、ソフトウェア開発ライフサイクルにセキュリティを組み込みます。 ブラウザで直接実行するハンズオンコードでSecurity+ Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Security+ Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSecurity+ Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「セキュアSDLC、SAST、DASTツール」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSecurity+ Academyレッスンでコードを書いて実行できますか?
はい。すべてのSecurity+ Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- SQLインジェクションとコマンドインジェクション
- クロスサイトスクリプティング(XSS)とCSRF
- 認証の不備と安全でないデシリアライゼーション
- セキュアSDLC、SAST、DASTツール