今日のWebアプリケーションの大半は、危険な脆弱性を含んでいます。そのセキュリティを分析するためには、動的なスキャナなしにはできません。DAST (Dynamic Application Security Testing) ツールを使えば、セキュリティの問題を迅速に検出し、評価することができます。このようなツールを選択する際に、何を重視すべきでしょうか?
様々な調査によると、脆弱性の70%は、コードのエラーと関係があります。Webアプリケーションのコードの脆弱性を利用して、ハッカーはマルウェアを配布したり、クリプトジャッキング攻撃を仕掛けたり、フィッシングを採用してユーザーを悪意のあるサイトにリダイレクトしたり、電話をリモートでハッキングしたり、ソーシャルエンジニアリングの手法を使って個人データを盗んだりすることができるのです。
しかし、脆弱性の数を減らし、製品のセキュリティレベルを向上させることは十分可能です。そのためには、DevSecOps(開発とセキュリティを連携させ、ソフトウェア作成の各段階で脆弱性をチェック・テストするプロセス)に頼ることができます。
DevSecOpsのプロセスは非常に膨大であり、数多くの情報セキュリティ・ツールを含むこともあります。この記事では、DASTと、動的アプリケーション解析のための正しいスキャナの選び方についてお話したいと思います。どのようなツールの特性やパラメータに注意を払う必要があるのか、また現在どのような種類の製品が市場に出回っているのか、一緒に考えていきましょう。
DASTとは?
DAST (Dynamic Application Security Testing)は、配備され機能しているアプリケーションの自動分析を行う、安全な開発手法の1つです。ダイナミックスキャナーは、HTTP経由のすべてのアクセスポイントをチェックし、一般的な脆弱性を利用した外部からの攻撃をシミュレートし、様々なユーザーのアクションをシミュレートします。このツールは、サービスが持つAPIを判断し、検証リクエストを送信し、可能であれば不正なデータ(引用符、区切り文字、特殊文字など)を使用します。
ダイナミックスキャナーは、大量のリクエストを送信し、分析します。送信されたリクエストと受信したレスポンスの分析、および通常のリクエストとの比較により、さまざまなセキュリティ問題を発見することができます。
ほとんどのスキャナーは、同様の機能と手口を持っています。その主な構成要素は、クローラーとアナライザーです。
クローラーは、到達可能なすべてのページのすべてのリンクを走査し、ファイルの内容を調べ、ボタンを押し、ページ名の候補の辞書を調べます。このプロセスにより、攻撃対象領域の大きさと、アプリケーションとの既存の相互作用の方法を考慮した、可能な攻撃ベクターを推定することができます。
アナライザは、アプリケーションを直接チェックします。受動的または能動的なモードで動作させることができます。最初のケースでは、クローラが送信する情報のみを調査します。2 番目のケースでは、クローラが見つけたポイントや、現在ページ上に存在しないがアプリケーションで使用可能な他の場所に、 不正なデータでリクエストを送ります。そして、サーバーからの応答に基づいて、脆弱性の存在を推測します。
DASTツールを選ぶ際に注意すべき点
■脆弱性スキャンの品質
これは、発見された脆弱性と見逃された脆弱性の比率です。スキャナの解析結果をすぐに理解することは不可能です。そのためには、少なくともどのような脆弱性があり得るかをおおよそ理解し、その推定値とスキャン結果を比較する必要があります。ツールを評価する方法はいくつかあります。
- アプリケーションを持っていて、バグバウンティプログラムやペネトレーションテストですでに脆弱性をチェックしている場合、その結果とスキャナーの結果を比較することができます。
- アプリケーションがまだない場合は、原則としてトレーニング用に作成された他のプリベイラブルソフトウェアを使用することができます。技術スタックの点で、開発環境に近いアプリケーションを見つける必要があります。
スキャンの品質を評価する際には、誤検出の数が決定的な役割を果たします。誤検出が多すぎると、結果に支障をきたします。また、実際のエラーを見逃してしまうこともある。ツールのスキャン品質を判断するには、レポートを分析し、レスポンスを解析し、偽陽性の数と割合を計算する必要がある。
■クローリング
アプリケーションに関する情報がなく、ゼロから分析する必要がある場合、収集できるパスと遷移の数、つまりクロールの精度を把握することが重要です。これを行うには、DASTの製品設定を見ることができます。フロントエンドからバックエンドへのリクエストを監視できるかどうか、例えばSwaggerやWSDLアプリケーションを解析できるかどうか、HTMLやJSのリンクを見つけられるかどうか、などを調べる必要があります。また、アプリケーションに関する情報を取得するプロセスも調べる価値があります。
スキャンする前に、例えば、どのAPIが使用されているかを調べることができます。これにより、プログラムの完全なスキャンを実行するために、ツールが何を必要としているかを理解することができます。スキャナを選ぶ際には、各ツールが取り込めるものをリストアップし、開発プロセスに組み込めるかどうかを確認するのが有効です。
■脆弱性スキャンの速度
このパラメータも、特に開発プロセスにチェックを組み込んでいる場合には重要です。スキャンはプロセスを遅くし、結果的に時間とお金の無駄遣いにつながります。スキャンの速度は、アプリケーションがリクエストに応答する速度、同時接続数、その他いくつかの要因に大きく依存します。したがって、異なる DAST ツールの速度を比較するためには、ほぼ同じ条件下で同じソフトウェアを実行する必要があります。
■拡張設定
自動解析ツールには詳細な設定が必要です。それらを使えば、不要なリクエストを削除したり、スキャン範囲を限定したりすることができます。これにより、プロセスの品質と解析のスピードが向上します。ツールのタスクを適切に設定するには、利用可能なすべてのオプションと設定を用意する必要があります。
アプリケーションに適応する「スマート」なスキャナーもあります。しかし、このようなツールでも、チェックの目的が異なるため、手動で設定する必要があります。例えば、フルスキャンから始まり、表面的な分析で終わるなど、いくつかの方法でアプリケーションをスキャンする必要がある場合があります。この場合、手動モードは間違いなく便利です。
ツールを選ぶ際には、設定可能なパラメーターの総数やその設定のしやすさに注意する必要がある。異なるツールの作業を比較するために、それぞれのツールでいくつかのスキャンプロファイルを作成することができます。初期分析には高速で浅く、本格的なものには時間がかかっても深くです。
■統合
動的解析をできるだけ効果的に行うには、この方法を開発プロセスに統合し、ビルド中に定期的にスキャナを実行することが有効である。CI/CDプロセスで使用されるもののリストを事前に作成し、ツールを起動するためのおおよその計画を立てる必要がある。
そうすることで、開発プロセスに組み込むことが容易かどうか、APIを使用することが便利かどうかを理解することができる。
■技術
スキャナを選択する際には、自社が開発で使用している技術を考慮する必要がある。これを行うには、アプリケーションを分析し、使用されている技術、言語、フレームワークのリストを作成する。特に会社が大きい場合、リストはかなり広範囲になる可能性がある。したがって、スキャナを評価する基準として、いくつかの重要なパラメータのみを選択することが適切である。
- そのツールがカバーしている技術やフレームワークの数。
- 企業が重要なサービスで使用している主要な技術をサポートする能力
■ログインシーケンスの記録
アプリケーションに入るためには認証が必要なため、ログインシーケンスを記録することはダイナミックスキャナにとって非常に重要である。このプロセスには、パスワードを送信する前にハッシュ化したり、フロントエンドで共有キーで暗号化したりなど、多くの落とし穴がある。したがって、ツールがそのようなニュアンスにすべて対応できるかどうか、事前に確認する必要があります。そのためには、できるだけ多くの異なるアプリケーションを選択し、それぞれのアプリケーションでスキャナーがログイン段階を通過できるかどうかを確認する必要があります。
また、ログアウトしたときのツールの動作も確認しておくとよい。スキャナーは、分析プロセス中に多くのリクエストを送信します。そのうちのいくつかに応答して、サーバーはユーザーをシステムから「放り出す」ことができる。ツールはこのことに気づき、アプリケーションに再入力するはずです。
■ツールのアップデート
技術は常に進化しているため、ツールを選択する際には、そのアップデートやシグネチャ・パターン・分析ルールの新バージョンがどれくらいの頻度でリリースされるかを考慮することが重要です。この情報は、製品のWebサイトで確認するか、ベンダーに問い合わせるのがよいでしょう。これにより、開発元がトレンドに従っているかどうか、また、チェックのデータベースがどれだけ最新に保たれているかが分かる。
製品の開発に影響を与えられるかどうか、開発者が新機能のリクエストにどのように対応しているかを確認することも望ましい。これにより、必要な機能がどれだけ早く製品に搭載されるか、また、オプションの更新の一環としてベンダーとのコミュニケーションがどのように手配されるかがわかる。
どのツールを選ぶか?
Netsparker、Acunetix、Nessus、Rapid7、AppScan、VEXなど多くのツールが市場に出回っています。ここでは2つのツールについて簡単に触れます。
■BurpSuite Enterprise
このツールはPortSwiggerによって開発されました。この製品は、スキャンの対話と管理、レポートの送信など、本格的なREST APIを備えています。スキャンエージェントは、古典的なBurpSuiteです。「ヘッドレスモード」で起動しますが、制限があります。例えば、ヘッドポータルからの制御コマンドでしか対話できず、プラグインを読み込むことができなくなります。一般的に、このツールが正しく設定されていれば、優れた結果を得ることができます。
■OWASP ZAP (Zed Attack Proxy)
この人気のあるツールは、OWASPコミュニティによって作成されたため、完全に無料です。異なるプログラミング言語用のSDKとAPIを備えている。OWASPのオプションや独自のプラグインを使用することができる。
この製品には、様々なCI/CDツール用の拡張機能があります。異なるモードで実行し、プログラム的に制御することができる。開発プロセスにツールを簡単に挿入することができます。同時に、このスキャナには欠点もあります。オープンソースのソリューションであるため、スキャンの品質はエンタープライズソリューションよりも低くなります。また、ツールの機能はそれほど広くはなく、深くもありませんが、拡張や改良が可能です。
まとめ
DASTツールを選ぶ際には、この記事で指摘した基準を使うことができるか、確認する必要がある。各企業はそれぞれ独自のニュアンスと特徴を持っている。これらすべての選択基準と合わせて考慮しなければならない。また、事前にニーズを定義し、ツールからどのような結果を得たいかを理解しておくとよいでしょう。間違いのないように、様々な選択肢の本格的なテストを行い、互いに比較し、最適なソリューションを選択することをお勧めします。