はじめに:SASTとDASTの役割とは?
脆弱性診断の重要性
アプリケーションのセキュリティを確保するためには、脆弱性診断が欠かせません。セキュリティを脅かす可能性のある脆弱性を早期に発見し、適切な対策を講じることで、安全性の高いソフトウェアを提供することができます。
SASTとDASTの概要
その中でも特に重要なのが、SAST(静的アプリケーションセキュリティテスト)とDAST(動的アプリケーションセキュリティテスト)です。これらは異なる観点からアプリケーションの脆弱性を診断する手法であり、それぞれの特徴を理解して適切に活用することで、包括的なセキュリティ対策を講じることが可能になります。
SASTの役割
-
静的解析による脆弱性の早期発見
SASTはソースコードを静的に解析し、開発段階で潜在的な脆弱性を検出することに優れており、早期に問題を発見することでコストを抑えることができます。
DASTの役割
-
動的解析による攻撃耐性の検証
一方、DASTはアプリケーションが実際に稼働している状態で外部からの攻撃に対する脆弱性を検証するために用いられ、運用段階でのセキュリティリスクを低減するのに役立ちます。
両方を併用する利点
この二つの診断方法は、それぞれ異なる観点からアプリケーションのセキュリティを強化する役割を果たし、両方を併用することで、より強固で包括的なセキュリティ対策を構築することが可能です。
以下に、SAST(Static Application Security Testing)とDAST(Dynamic Application Security Testing)に関する表を作成しました。文言は多少変更していますが、画像の内容に基づいています。
手法 | SAST (静的アプリケーションセキュリティテスト) | DAST (動的アプリケーションセキュリティテスト) |
---|---|---|
特性 | ソースコードの解析 | 実行中のリクエストとレスポンスの解析 |
工程 | コーディング中 | 結合テスト以降 |
診断時間 | 短い | 長い |
過検知 | 多い | 少ない |
必要なもの | ソースコード | 実行環境 |
カバー範囲 | アプリケーション全体 | アプリケーションおよびミドルウェア |
代表的ツール | CxSAST | Vex |
SASTとDASTの違いと使い方
SASTの特徴と目的
SAST(静的アプリケーションセキュリティテスト)は、コード品質の向上と早期にセキュリティリスクを発見することを目的に開発段階で利用されます。コードを静的に解析し、潜在的な問題を早期に修正することで、開発コストの削減につながります。
DASTの特徴と目的
一方、DAST(動的アプリケーションセキュリティテスト)は、運用中のアプリケーションに対して実行し、実際に攻撃者が利用できる脆弱性を検証するために使用されます。これにより、外部からの攻撃に対する耐性を強化できます。
SASTツールとDASTツールの一覧
脆弱性診断を行うには、目的に応じた適切なツールを選ぶことが重要です。ここでは、SASTとDASTの代表的なツールについて紹介します。
SASTツール
-
SonarQube: オープンソースで、多くのプログラミング言語に対応。コード品質とセキュリティの同時診断に適しています。
SonarQube 公式サイト -
Checkmarx: エンタープライズ向けの静的解析ツールで、DevOpsパイプラインに統合可能です。大規模コードでも高精度に対応。
Checkmarx 公式サイト -
Veracode: クラウドベースで、CI/CD環境に容易に統合可能なエンタープライズ向けツールです。
Veracode 公式サイト -
CodeQL(GitHub Advanced Security): コードのパターンをデータベースとして検索し脆弱性を発見するツール。GitHub Actionsと組み合わせてDevSecOpsを実現可能です。
CodeQL 公式サイト
DASTツール
-
OWASP ZAP: オープンソースのDASTツールであり、Webアプリケーションの動的診断に非常に役立ちます。ユーザーフレンドリーなインターフェースを持ち、学習コストも低いため、初心者にも適しています。
OWASP ZAP 公式サイト -
Burp Suite: プロフェッショナル向けのツールであり、手動診断と自動診断の両方に対応。脆弱性の発見から攻撃のシミュレーションまで、多彩な機能を提供します。
Burp Suite 公式サイト -
Acunetix: Webアプリケーションの脆弱性診断に特化したDASTツール。SQLインジェクションやXSSといった典型的な脆弱性を効率的に検出します。
Acunetix 公式サイト -
Netsparker: Webアプリケーションの脆弱性を検出し、自動的にバグの存在を検証するDASTツール。誤検出のリスクを低減し、重要な問題に集中できます。
Netsparker 公式サイト
SAST・DASTレポートの読み方
脆弱性診断の結果を理解することは、セキュリティ対策において非常に重要です。SASTとDASTは、それぞれ異なる形式のレポートを生成しますが、共通して深刻度や対策方法などの情報が記載されています。
SASTレポートの見方: コードレベルの脆弱性
SASTレポートでは、コード内に存在する脆弱性やバグが一覧で表示されます。各問題には深刻度(クリティカル、高、中、低)や影響範囲が示されており、これに基づいて優先順位をつけて対応することが重要です。
問題の種類 | 深刻度 | 影響範囲 | 対応の優先順位 |
---|---|---|---|
SQLインジェクション | クリティカル | 全ユーザーのデータ漏洩可能性 | 最優先 |
ハードコーディングされたパスワード | 高 | 特定の機能に限定 | 高優先度 |
不適切な例外処理 | 中 | 一部機能の停止リスク | 中程度の優先度 |
コーディング規約違反 | 低 | コードの可読性に影響 | 低優先度 |
DASTレポートの見方: 実行時の脆弱性
DASTレポートでは、アプリケーションの実行中に検出された脆弱性が報告されます。Webアプリケーションの場合、SQLインジェクションやクロスサイトスクリプティング(XSS)といった脆弱性がリストアップされます。各脆弱性には対策の提案も含まれており、即座に対応策を講じることが求められます。
脆弱性の種類 | 深刻度 | 検出された場所 | 推奨される対策 |
---|---|---|---|
SQLインジェクション | クリティカル | ログインフォーム | プリペアドステートメントを使用 |
クロスサイトスクリプティング (XSS) | 高 | コメント欄 | 入力のエスケープ処理 |
セッションフィクセーション | 中 | 認証処理の一部 | セッションIDの再生成 |
ディレクトリトラバーサル | 低 | ファイルアップロード機能 | 入力値のバリデーション |
深刻度評価の違いと対応策の優先順位
SASTとDASTのレポートで共通して重要なのが、深刻度の評価です。高い深刻度の脆弱性から優先的に対処し、アプリケーション全体の安全性を向上させることが効果的です。
SASTとDASTを併用する利点
SASTとDASTを組み合わせる理由
SASTは開発初期段階でコードレベルの問題を発見し、DASTは運用段階で実行時の脆弱性を検出します。これにより、セキュリティ対策がコードのライフサイクル全体にわたって強化されます。
コードレベルと実行時の脆弱性を包括的にカバー
SASTとDASTを併用することで、開発から運用までの間に発生する脆弱性を総合的にカバーできます。これにより、事前の対応と実運用の両方の観点からアプリケーションの安全性を確保することが可能です。
効果的な診断フローの構築
SASTとDASTを用いることで、効果的な診断フローを構築できます。例えば、SASTでコードレビューを行った後、DASTで本番環境に近い状態での診断を行うことで、万全のセキュリティ対策が実現できます。
まとめと関連資料
この記事では、SASTとDASTの基本的な違いとそれぞれの利点、ツールの選び方、レポートの読み方について解説しました。SASTとDASTを適切に併用することで、脆弱性診断を効果的に行い、アプリケーションのセキュリティを強化することができます。
関連資料リンク
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2024.07.28
CroudStrikeブルースクリーン事件で学ぶEDRとEPPの違い
セキュリティ対策は、現代のIT環境において欠かせない要素です。特にエンドポイントセキュリティは、企業や個人のデータを守るために重要な役割を果たしています。本記事では、EDR(Endpoint Detection and Response)とEPP(Endpoint Protection Platform)の違いについて詳しく解説します。
- サイバーセキュリティ
2023.02.21
【図解】SYN flood攻撃の仕組みと対策
こちらの記事では、SYN flood攻撃の仕組みと対策方法について、図を用いながら解説します。
- サイバーセキュリティ
2023.02.26
【図解あり!】辞書攻撃の危険性と安全なパスワードの作成、管理方法を解説!
辞書攻撃は、主にWebサービスやシステムのログイン機能で扱われる、パスワードを特定するために行われるサイバー攻撃の一種です。
- サイバーセキュリティ