San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
/
/
Pentest

SAST (静的アプリセキュリティテスト)とは?

今日、サイバーの脆弱性や脅威が懸念される中、テストはアプリやソフト作成に欠かせない要素です。継続的なコード検査により、開発者はSDLCの早い段階で問題箇所を発見できます。 

アプリテスターはニーズに応じ、多様なテスト手法から最適なものを選択できます。その一つがSASTです。本ガイドでは、このテスト手法と、採用または回避すべき理由について説明します。

SAST (静的アプリセキュリティテスト)とは?

SASTとは?

まず、SASTの基本的な意味、つまり静的アプリセキュリティテストについて説明します。これはソフトウェア検証の手法に着想を得たAppSecテストの一種で、ソフト実行せずにコードをチェックします。

この手法は、静的および動的にソースコードを詳しく解析し、潜む脅威やエラーを発見することを目的としています。解析対象となるコードは、アセンブリコード、ソースコード、バイトコードです。また、コード検査用のスキャナーを使用し、CIパイプラインの初期段階で行います。

他の名称としては、ソースコード解析ホワイトボックステストと呼ばれます。

この手法はプログラムされたモジュールの検査に重点を置いているため、コードレビューとも呼ばれます。 

継続的なコード検査により、攻撃対象領域を減らし、ソリューションのセキュリティ向上を目指します。 

主に、SASTテストはクロスサイトスクリプティング、CSRF、SQL/SQLiインジェクションなどの脅威の影響を低減する上で重要な役割を果たすことが実証されています。

SASTはどのように動作するか?

続いて、SASTの運用方法について説明します。特にコード解析に基づき、コードの不具合をすぐに発見できるよう設計されています。解析の過程では、SQLインジェクション、エラー、未適切な入力の検出が狙いです。 

基本的な処理手順は次の通りです。

  • ソフトウェアソリューションの徹底的な解析
  • SDLCの各フェーズでコード解析を実施する
  • SASTツールをサポートするビルドモデルが必要
  • 標準的なルールに従って解析を行う

ここまででSASTによる広範なコード解析について理解いただけたかと思います。次に、プロセス中に使用される5種類の解析タイプを説明します。

  • 構成解析: アプリの設定ファイルを検査し、設定が標準的な手順と方針に沿っているかを確認することを目的としています。
  • 意味解析: 対象は構文、解決コード、識別子です。これらの要素をトークン化することでエラーを発見します。
  • データフロー解析: コードがアプリで使用される前に、データの流れを追跡しエラーを特定します。
  • 構造解析: コードの構造を分析することで、設計やコード、変数のエラーを発見します。
  • 制御フロー解析: 操作の流れを分析し、標準プロセスに沿っているかを確認します。異常があればエラーの存在を示します。
Static Application Security Testing
静的アプリセキュリティテスト

DevOpsにおけるSASTの利点

DevOpsでSASTを採用することで、多くのメリットが得られます。本節では、SASTの有望な利点を紹介します。

  • 手間のかからない開発

SASTテストの主な目的はソースコードのエラー検出です。開発者は開発初期からこの手法を導入可能で、コード記述と並行して利用されます。IDEのプラグインを用いたSASTの展開はこれまで以上に容易で、大きな手間はかかりません。

  • 問題のあるコードの正確な場所を表示

この手法は、問題が存在する正確な箇所を示すため、エラー検出が容易です。ソースコードは長大になることが多く、エラーはどこにでも潜みますが、SASTは問題箇所を強調表示します。これにより、不具合の検索や修正がこれまで以上に簡単になります。

  • テストケースの必要がない

DASTとは異なり、SASTはテストケースの定義に依存しません。解析ルールが全コードに自動的に適用され、例外はありません。これにより、存在する脆弱性を確実に検出できます。

  • コード実行に依存しない

SASTはコード実行を待つ必要がなく、コードが書かれた段階から使用可能です。実行を待たずにテストを開始できます。

  • シームレスな自動化

テキストファイルのスキャン中にGUI操作が不要なため、SASTの自動化は非常に容易です。DASTと比較しても、セットアップが必要なく高速です。 

SDLCにおいてなぜSASTが重要なのか?

SASTはSDLCの一部となり、その効率性を向上させることができます。その仕組みを以下で説明します。

ご存知の通り、SASTはコード実行を待たずに即座にコードレビューを開始します。脅威の検出は、コードが開発されると同時に始まります。 

SDLCのテストフェーズに入る頃には、コードはほぼ完成しており、このフェーズは短時間で終了します。しかし、これにより市場投入までの時間が延びることがあります。早期にSASTを導入することで、全体の開発時間が短縮され、SDLCが圧縮されます。 

ミッションクリティカルなアプリの場合、SASTの採用によりSDLCが迅速化され、記録的な短期間での納品が可能となります。納品時間が短縮される一方で、ソース、バイト、アセンブリ各コードの初期段階からのチェックにより、セキュリティも向上します。

SASTツールで検出可能な脆弱性

SASTが広く支持される理由は、その高い脅威検出能力にあります。AppSec専門家が数多くの有名な脆弱性を発見するのに役立ちます。以下、その例を示します。

一般的なサイバー脆弱性であるクロスサイトスクリプティングは、正規のアプリに不正なアクセスを試みるために利用されます。攻撃者は、ブラウザ側のスクリプトとして悪意あるコードを埋め込み、利用者にクリックさせる手法です。

SASTは全コードを点検し、悪意あるコードの実行を防ぐことで、この脆弱性の発生を抑制します。

次に、SQLインジェクションがあります。攻撃者が実行可能なリクエストに含まれるSQLクエリへ、悪意あるコードを仕込む脆弱性であり、成功するとデータベースに深刻な被害を及ぼす可能性があります。SASTテストにより、コードレビューが完全自動で行われ、開発からデプロイまで綿密に検査され、悪意ある要素が直ちに発見されます。

このエラーは、アプリが通常より多くのデータを書き込み、バッファとして保持する際に発生します。当初は不足を防ぐ目的ですが、やがてデータ破損の原因となります。攻撃者がバッファ内のコードを改ざんする恐れがあり、開発者がセキュリティ点検なしにそのコードを利用してしまう可能性があります。

SASTは、コードがエラーなく作成され、使用前にレビューされることを保証することで、このエラーの発生を抑制します。

  • 入力検証

この脅威は、アプリに不正な入力を仕込み、その影響を狙うものです。コードの改ざんにより大きな被害を引き起こす可能性があるため、SASTツールは問題箇所を迅速に特定し、対処することで、その影響を低減または完全に排除します。

静的アプリセキュリティテスト:メリットとデメリット

どの技術も完璧ではなく、SASTも例外ではありません。メリットとデメリットが存在するため、両面を理解することが重要です。

まずはメリットについて説明します。

  • SDLCの初期段階で導入できるため、早期にエラーを検出できる
  • エラーが発生している箇所を具体的に示す
  • 実行を伴わない手法である
  • 過度な設定作業が不要で、自動化が容易である

メリットを理解した後は、デメリットについて見ていきます。

  • 誤検知が発生する場合がある
  • テスト対象が若干ずれて、誤った箇所を示すことがある
  • 使用する言語に依存するため、対応外の場合は機能しない

SASTの導入

SASTには多くの利点がありますが、導入時は十分に注意し、できる限り完璧を目指す必要があります。これは標準的なフォーマットに基づいた戦略的な取り組みです。承認されたSAST導入の手順は以下の通りです。

  • 適合するSASTツールの選択

SAST導入の第一歩は、初期段階からコードレビューを実施できる適切なツールを選ぶことです。ツールがコードの言語に対応し、使用しているフレームワークと互換性があるか確認してください。

  • スキャン環境の構築

ツールを選定したら、ライセンス管理、アクセス制御の設定、適切なツールの導入、そしてロールベースのアクセスのセットアップなど、スキャン環境の構築に着手してください。

  • ツールの微調整

事前構築されたツールでは、スキャン要件を十分に満たせない場合があるため、基本的なカスタマイズが必要です。一般的な調整方法として、誤検知を減らすための設定変更や、ツールをスキャン環境に直接統合する方法があります。

  • アプリの読み込み

ツールがスキャン準備完了したら、対象のアプリをアップロードしてください。複数ある場合は、優先順位をつけ、リスクの高いアプリから順にスキャンします。

また、アプリは定期的に同期してください。コード更新や新機能追加時には最新版をアップロードし、最適なスキャン結果を得られるようにしましょう。

  • スキャン結果に注意を払う

スキャン結果を入手したら、詳細に分析し、もし誤検知があれば確認してください。

  • ツール使用の教育と管理

コードレビューが期待通りに進むよう、チームの教育とツールの使用管理を徹底してください。使用上の問題があれば、チームトレーニングを実施して対処しましょう。

SASTは他のテスト手法とどう組み合わせるか?

AppSecの分野にはSAST以外にも多くのテスト手法があります。SASTは他の手法と併用可能で、基本的にはコードスキャンに特化しています。DASTを利用する場合、SASTと組み合わせることで、コードセキュリティの強化が図れます。

DASTは入力と出力の検査に特化しており、コードレビューは行いません。しかし、SASTと併用すると、DASTもコード点検や入力・出力の検証を実施します。両者は非常に相性が良く、一つのコインの裏表と呼んでも過言ではありません。 

しかし、これら二つを組み合わせるとテスト速度がやや低下することがあります。特に複雑なアプリではDAST自体が遅いため、SASTの導入でさらに速度が落ちる可能性があります。その対策として、SASTは早期に導入することが重要です。一般的にCI/CDパイプラインやIDEが最適です。DASTは後段階で実施してください。

IASTとSASTは互いに相性が良いとは言えません。全く異なるワークフローとテストプロセスを採用しているためです。IASTは即時にコードをテストする動的な手法です。 

アプリは機能しながらコードレビューが継続されますが、SASTは実行前にコードをチェックします。したがって、IAST使用中にSASTを導入する意義は薄いと言えます。

SASTツール購入前の5つのポイント

SASTツールは、テスト戦略の自動化と精度向上を実現する優れた手段です。SASTテストの成功は、主にツールの品質と有用性に依存すると考えられます。 

幸い、選択肢は豊富にあります。有料・オープンソースを問わず多くのオプションが提供されています。最適なツールを選ぶためには、多少の手間を惜しまないことが大切です。

次のポイントを念頭に、SASTツール選定を進めてください。

  1. プログラミング言語との互換性

ツールがどの言語に対応しているか確認してください。多くのスキャナーは、対応する言語で書かれたコードのみ解析します。例えば、PythonベースのスキャナーはPythonコードにしか対応しません。アプリが他の言語で書かれている場合の対応も検討する必要があります。

アプリで使用しているプログラミングコードと、スキャナーがサポートする言語を十分に分析することが、SASTテスト戦略の成功を左右します。

  1. デモの実施をためらわない

ツールが使いやすいと謳っていても、実際の操作性は重要です。チームが使用する際に快適かどうかを確認し、技術仕様がチームの能力に合致しているかチェックしてください。

これを確かめるにはデモ実施が理想的です。デモ提供のあるツールを選ぶと、選定が容易になります。

  1. 検出可能な脆弱性の種類

SASTセキュリティツールの主目的は脆弱性の検出です。多くの脆弱性を検出できるツールは有力な選択肢となります。中途半端なツールでは、追加投資が必要になる場合がありますので、ツールが検出できる脆弱性をしっかり確認してください。

  1. 誤検知の発生レベル

誤検知が多すぎるツールは問題です。誤検知が頻発するとテストの効果が薄れるため、使用するツールが誤検知を最小限に抑えているか確認してください。

  1. ツールのライセンスを確認

ツールのライセンス面を軽視せず、使用するツールが適法なライセンスを取得しており、規定に沿っているか確認してください。レンタルモデル、ライセンスの柔軟性、機能のカスタマイズ性などに注目しましょう。

これらの点に留意すれば、質の高いSASTツールを最小限の手間で導入できます。

まとめ

SASTは、さまざまな脅威を検出するためにAppSec専門家が利用する、最も支持されるソースコードレビューおよびテスト手法の一つです。この記事では、この手法に関するほぼ全ての情報を網羅しました。

  • SASTは静的なプロセスで、SDLCの初期段階で導入可能
  • コードレビューとテストは、コード設計・開発と並行して実施できる
  • 使いやすく、初期段階からコードをチェックでき、テストケースを必要とせず、問題箇所を正確に示す
  • 適切な実装により、SQLインジェクション、CSRF、および入力検証による脆弱性を早期に検出できる
  • 各種SASTツールがプロセスの自動化と精度向上を助ける。ツール選定時は使いやすさ、誤検知の少なさ、柔軟なライセンス形態を確認することが大切

これでSASTに関する重要なポイントが理解いただけたかと思います。今日からSASTによるテストを始め、アプリのセキュリティ向上にお役立てください。

FAQ

参考資料

最新情報を購読

更新日:
February 25, 2025
学習目標
最新情報を購読
購読
関連トピック