← 一覧に戻る

SAST対DAST対IAST:置換ではなく、三兄弟の補完のためのセキュリティテスト

itadol5j

アプリケーションセキュリティテストの3つの最も一般的な省略は、SAST、DAST、IASTです。 多くの人々が最初の反応は「最強の1つを選択」だったが、それは仮説の提案だった - 3人の兄弟は競争しませんでしたが、異なる視点から同じ問題を見ました。 選択肢は、誰よりも高度なものではなく、ソフトウェアのライフサイクルにあるステージでは、あなたが見つけたいループホールの種類とあなたがどれだけ耐えることができるかによって異なります。

安全性試験の3つの方法の適用の概要

I. ファースト・リファレンスに関する定義

  • SAST(静的アプリケーションセキュリティテスト)その他の組織プログラムを実行しない, スキャンソースコード/バイトコードがホワイトボックスに所属するループホールを見つけます。
  • ツイートその他の組織ランニングプログラム外部起動リクエスト、シミュレート攻撃は「ブラックボックス」であり、ソースコードは必要ありません。
  • IAST(相互適用安全テスト)その他の組織プログラムを実行するプラグイン(エージェント)は、フローとコードのコンテキストと組み合わせ、グレーボックスに属します。

これらの3を理解するための鍵は、SASTが「コードに間違いがあるか?」と尋ねるそれぞれの答えが異なることです。 DASTは「走る時に実際に逃げることはできますか?」と尋ねます。 IASTは、「この操作では、データが本当に危険の点に流れている」と尋ねます。

SAST:コードライティングステージで問題の解決

SASTはソースコードを直接解析(または中間製品をコンパイル)し、プログラムを実行しません。 初期段階での問題を検知したり、コードを提出した場合でも、特定の文書や行番号を探し、修理コストを削減することができます。 「コードをスワイプ」でき、実行中の時間環境に依存しません。

ショートボード: 特定のコードが実際のビジネスでトリガーされるかどうかを判断しないため、通常、エラーの割合は高くなります。実行時にのみ公開される問題(例えば、設定エラー、保証バイパス、実際のライブラリに依存する呼び出しチェーン)は十分に見られません。ソースコードは必要であり、サードパーティのクローズドソースコンポーネントは機能しません。

典型的なシナリオ: CI のストリーミング ライン コードの送信ドアは可視された注入、ハード コーディング キー、バックボーンへのハザード機能呼出しを防ぐために閉鎖されます。

DAST:「本当に働いているのか」を検証する

DASTは、ターゲットをブラックボックスとして使用し、外部からのリクエストを送信し、攻撃ペイロードを構築し、応答を観察します。 その最大の価値は...実際の攻撃を閉じます。— 比較的低い報告で「実行への本当のアクセス」の問題が発見されました。 ソースコードは必要ありませんので、サードパーティのコンポーネント、設定レイヤーもカバーできます。

ショートボードレイト検出の検出と修理のコストが高まるという展開は、多くの場合、それだけではありません。カバレッジは、非検出できない機能ポイントの検出なしで、例えば到達できる爬虫類やテストルートに限定されています。ソースコードを正確に見つけることは困難であり、開発と報告は「どのURLが問題である」だけ知られており、設定コストは、ログイン、マルチステップビジネスプロセスを必要とするシナリオで高いです。

典型的なシナリオ: オンラインで行く前にセキュリティクリアランス, 展開環境の定期的なスキャン.

IV. IAST:ランタイムプラグ、実際のデータフローでコンテキストをバランシング

IASTは、アプリケーションに意図を注入することにより、プログラムを実行したときにコードの実行と外部の流れを観察します。 リクエストがどのように起きるか、データがコードに流れているかがわかります。宿の完全な証拠を取ります。通常はSASTよりも低く、正確です。

ショートボードターゲット環境にプローブをデプロイできる必要があります(生産環境に関する懸念)。テストカバレッジの信頼性は、実装されているコードなしで見つけることができません。これは、多くの場合、機能的/自動化されたテストに結びついています。言語とフレームワークのサポートの違い、および特定のパフォーマンスコスト。

典型的なシナリオ:自動テストと組み合わせてテスト環境で実行します。, 機能性を検証し、出力安全結論を同期する.

データフローを見て、内部コードからスタックを呼び出します

5、3対1

サイズ:ツイートツイートツイート
テストオブジェクトソース/バイト(実行しない)アクティブターゲット(外部)オペレーションアプリケーション(内部プラグ)
パースペクティブホワイトボックスブラックボックス灰色箱
介入のための時間エンコード/サブミッションフェーズ 初期値導入後試験/実行時間
ソースコードが必要はい。必要性無し。条件(差し込むことができます)
インポートされたレベル高い低いログイン
位置精度ファイル/行URL/インターフェイスへコールイン/データストリーム
依存性を上書き限定(ソースコード部分参照)走行中のオーバーライド露出実行パスによる制限
典型的なシーンCIコードドアバンオンラインで行く前に確認し、受け入れて下さい。自動テストと組み合わせる

ベトナム なぜ置換ではなく補完性

一緒に3つを置くと、彼らは補完的であるために彼らのブラインドゾーンを見つけます。

  • SAST はコードを参照しますが、トリガーされるかどうかはわかりません。 DAST はトリガーできるかどうかを知っていますが、問題がどの行なのかはわかりません。 IAST は両方、実行するコードが必要です。
  • SASTは、早期、広大、大声でカバーします。 DASTには小さなノイズがほとんどありますが、遅延の介入、狭いカバレッジが狭くなります。 IASTは高精度を持っていますが、十分にプラグを差し込んで実行することができます。
  • 「赤いテープの束」の疲労に脆弱であるSASTに行くだけです。DASTに行くと、ループホールがしばしばラインに露出されている場所。IASTに行くと、それが到達されていないパスが盲目です。

現実への答えは1つまたは2つではありませんが、ステージバイステージのアプローチ:SASTの初期使用は、悪い味と危険の明確なパターンを詰め込むため、IASTのテストフェーズは、自動化と組み合わせてIASTと正確に検証され、攻撃者の視点からの外部受諾のためのDASTの上下線の使用。 3つの優先順位は、重要なギャップなしでアプリケーションセキュリティテストクローズドループを構成する。

静的、動的、インタラクティブなテストは、クローズされた円を形成します。

VII。 着陸の実践的な問題

1。 誰がそれを取引するのか

いずれにしても、レポートを固定する人はいません。 明確なトリアージプロセスがあります: 誰が見て、どのくらいの期間を閉じる、「リスクを受け入れる」をマークする方法。 特に、SASTはベースライン管理を必要とし、それ以外の場合、歴史の遺産は新しい問題を捨てます。

カバレッジは、ツールブランドよりも重要です

発見する IAST の能力は、テストによってどのように多くのコードが覆われているかに直接依存します。 DAST は、爬虫類によって到達される多くのインタフェースに依存します。 より高価なツールを交換するよりも、オンラインで行く前に「検出率」を測定する方が意味があります。

3. 安全検査をワンオフテストとして扱いません お問い合わせ

安全テストは、オンラインに行く前に一元化するのではなく、継続的なR&Dプロセスに埋め込まれるべきです。 CI は SAST を実行します。, 環境 IAST をテストします。, 定期的に生産 DAST を行います。, 火を節約するために人間の肉に依存する必要はありません。.

4. ツール間のシナジーに焦点を当てる

理想的な状態は、3つのタイプの結果が同じビューにグループ化できることです。同じループホール、SAST はコードの場所を提供し、IAST はデータストリームの証拠を与え、DAST は可用性を検証します。 3つの戦国島よりもはるかに価値があります。

VIII. 決定書のリスト

  • はい。提出段階ちょうどSASTの明らかなループホールを離れて、ドアの閉鎖およびベースラインに焦点を合わせて下さい。
  • 確認のためデプロイされたシステムは本当に攻撃できますか? • カバーおよびログイン構成に焦点を合わせるDASTによって。
  • セキュリティの結論を得るため。自動テストによる出力そして IAST に正確に見つけて下さい。
  • 限られたリソースは、SASTの第一優先としてのみ使用され、その後、徐々にIAEA / DASTを完了することができます。
  • 「1つのサイズのフィットオール、永久的なソリューション」の検索は存在しませんが、組織し、プロセスする方法は答えです。

SAST は、DAST は実用的であり、IAST は特異的であり、組み合わせて完全な画像です。