情報セキュリティ ブログ記事

現役セキュリティエンジニアが語るWebアプリケーション診断とは?

2020/06/15

 

 

前回の記事で脆弱性検知の重要性についてとりあげましたが、今回はその施策の中のひとつ、Webアプリケーション診断について取り上げたいと思います。
私はWebアプリケーション診断を専門としていますが、Webアプリケーション診断とはどういうものなのか?とお客様からよく質問を受けることがあるので、今回の記事ではその必要性や目的など詳しく書いていきます。

Webアプリケーション診断の必要性

個人情報やWebサービス等をサイバー攻撃から守る第一歩として
まず、Webアプリケーションって何?って思われる方もいると思ますが、イメージし易いものとしては自社のホームページやECサイト等のWebサイトです。
最近はホームページの改ざんやクレジットカード情報の漏えいといったセキュリティ被害のニュースを目にする機会も比較的増えてきていると思いますが、それらの多くの割合を占めるのがWebアプリケーションの脆弱性を突いたサイバー攻撃によるものです。

また、このWebアプリケーションの脆弱性を突くサイバー攻撃の中には従来のセキュリティ対策では防げないものも数多く、新たな対策を講じなければいけないケースが数多くあります。

こうしたこともあり、そのため、Webアプリケーションの脆弱性をいかに無くしていくかが非常に重要とされてきており、そのための第一歩としてニーズが高まってきているのがWebアプリケーション診断であり、近年ではWebサイトを受託開発する際にはWebアプリケーション診断を実施することが要件になってケースも増えてきています。

Webアプリケーション診断で実現出来ることは、自社のWebアプリケーションの脆弱性の有無・程度を測ることですが、それによりセキュリティ被害のリスクの把握や事前対策を講じることができ、結果的にセキュリティ被害の防止や被害軽減に繋げられる、という点です。

このWebアプリケーション診断に関しては、無償のツールや安価なツールを使ったサービスも存在していますが、使い方が難しかったり、診断結果がよく理解できない、といったこともありますので、一度は専門家の診断を受けて脆弱性を見つけてもらうことをお勧めします。

Webアプリケーション診断とは?

Webアプリケーション診断とは、一言で言うと、Webアプリケーション(Webサイト)に脆弱性が潜んでいないかを調べることです。
具体的には、セキュリティエンジニアが、診断対象のWebアプリケーションに対して疑似攻撃を仕掛け、Webアプリケーションの挙動(レスポンス)から脆弱性の有無を判断したりします。

Webアプリケーション診断は細かく分けると色々な種類がありますが、セキュリティエンジニアが実際のサイバー攻撃者と同様にWebアプリケーションの内部構造(ソース、設定ファイルなど)を一切把握しない形で診断(疑似攻撃)を実施するブラックボックス型の診断が主流です。

また、Webアプリケーション診断はインターネット経由で実施することが多いですが、社内限定で使用するようなインターネットに公開されていないWebアプリケーションに対しては、実際にお客様の社内に訪問して診断するオンサイト診断を実施することもあります。

Webアプリケーション診断の手法について ツール(自動)診断と手動診断

まず、Webアプリケーション診断の手法として、ツール(自動)診断と手動診断という大別があります。
Webアプリケーション診断はいかに多くの疑似攻撃を試行できるか(網羅性)が重要なポインになりますが、その疑似攻撃をセキュリティに精通したエンジニアが手動で実施するか、Webアプリケーションスキャナツール(以下、診断ツール)等のツールを使って実施するかの違いです。

例えば、1つのパラメータに対して100~300種類以上の疑似攻撃を試行しますが、仮にパラメータ数が10,000個の場合、3,000,000回以上の疑似攻撃を行う必要があることになり、 この膨大な回数の診断全てを手動で行うのは現実的ではないため、ほとんどのWebアプリケーション診断ではWebアプリケーションスキャナツール(以下、診断ツール)を活用する形で網羅性を高めて診断を実施します。

※下記XSS(クロスサイトスクリプティング)の検査パターンの例です。

診断ツールは無償で公開されているものも存在していますが、その診断ツールそれぞれにはWebアプリケーションの脆弱性を検査する検出パターン(以下、シグネチャ)が予め複数用意されており、そのシグネチャも一般的に頻繁に悪用される疑似攻撃が定義されており、比較的簡単な手順で網羅的に診断を実施することができます。
しかし、そのシグネチャも万能なものではないため、パターン定義が難しい脆弱性は検出することができなかったり、診断ツールの過剰反応等による誤検知も発生することがあります。よって、診断ツール任せにするだけは満足できる結果を得ることは難しく、ツール診断の結果をセキュリティの知識のある人間が一つずつ確認することが重要になります。

無償のものもあって、自動で網羅的に、という点でツール(自動)診断は良いことばかりという印象を持たれるかもしれませんが、一方、セキュリティエンジニアが手動で実施する手動診断はツール(自動)診断では対応が難しい脆弱性を検出できるという大きなメリットがあります。

例えば、WebブラウザからWebアプリケーションに向けて送信されるHTTPリクエスト通信をローカルプロキシツール(クライアントで動作するプロキシ)で一旦保留にし、診断者がHTTPリクエストを任意の形に改変した上で送信します。そして、それに対するレスポンスを解析し、脆弱性の有無を判別します。

セキュリティエンジニアが任意の検査を行うことができるため、ツール(自動)診断では検出できない脆弱性を検出することができますが、手動で実施するという性質上、診断に多くの時間を要し、料金が高額になってしまうのが一般的です。また、脆弱性の検出精度はセキュリティエンジニア自体のスキルに依存するため、「診断者Aなら検出できたが、診断者Bなら検出できない」といったように診断品質の均質化が難しいという課題があります。

診断ベンダーによっては、ツール診断のみ、手動診断のみ、等というような提供内容の違いがありますが、これまでお伝えしたように、ツール(自動)診断と手動診断にはそれぞれ長所・短所があるため、本来は双方の特徴を理解し、お互いに短所を補うように手法を組み合わせが望ましい姿だと考えます。
ちなみに、当社が提供している診断サービスのる診断手法は、ツール(自動)診断をメインとし、そちらを補完する形で手動診断を実施するハイブリット診断でそれを実現しています。

なお、実際の診断業務ではお客様側のご要望により時間的・費用的な制約が出てくるため、その制約の中でいかに工夫をして網羅性や精度の高い最大限価値のある診断結果を提供できるかが診断ベンダーの腕の見せ所です

ツール(自動)診断と手動診断の比較

■ツール(自動)診断

  • 高い網羅的、かつ容易に診断が可能
  • 診断者のスキルや経験にあまり依存しない
  • パターン定義が難しい脆弱性は判別することが困難
  • 技術者のスキルにあまり依存しない
  • CAPTCHAなど、スキャナによるアクセスを防ぐ仕組みが存在するページなど、診断対象の仕様によっては診断ができない
  • 比較的料金が安い(診断者の人件費が小さい)

■手動診断

  • 限られた時間内では網羅性が乏しくなってしまう
  • 診断者のスキルや経験に大きく依存する
  • パターン定義が難しい脆弱性も判別可能
  • 技術者のスキルに依存する
  • 基本的に診断できない画面はない
  • 料金が高額(診断者の人件費が大きい)

まとめ

Webサービスの利用者の安全を守るためにサービス提供側が行わなければならないことは潜在的な脆弱性を明らかにし、対策を進めて脆弱性を最小化することで、そのためにはWebアプリケーション診断は非常に重要なことです。

実際にサイバー攻撃を受けてしまった場合の被害の大きさはもちろんですが、「Webサービスを提供していてまだ一度もWebアプリケーション診断を行ったことがないなんて言語道断だ!」と糾弾される世界も着実に近づいており、そうしたことにならないためにも是非一度は診断ベンダーにWebアプリケーション診断を実施してもらうことをお勧めします!

このエントリーをはてなブックマークに追加