脆弱性診断とは(⾮エンジニア向け)

今やパーソナルコンピュータやスマートフォンの普及に伴いWebサービスを通じて情報を取得したり、SNSを介して情報を発信することが普通となりつつあります。また、コミュニケーションにはメールに加えてチャットが広がり、企業においてもDXの促進などITサービスを通じて⽣産性を向上することが当たり前になりつつあります。

そのような便利なITサービスの代表格とも⾔えるWebサービスですが、⼀⽅でネット被害や個⼈情報の漏洩などネガティブな話題が付きまとうのも事実です。このような状況の中、なんとなくWebサイトのセキュリティは⼤事、脆弱性は怖いといった漠然としたイメージを保たれている⽅は多いのではないでしょうか?

ここではWebサービスに絞ってですが、

  • そこに潜む脆弱性とはどんなものなのか?

から始まり、仮に⾃分がWebサービスを提供することになった際には

  • どのようなセキュリティ対策を⾏っていけば良いのか?
  • 導⼊の際に気を付けるポイントとは?

といったことを中⼼にお話しさせていただきます。

Webサイトに潜む脆弱性とは?

まず厳密な定義があるのではありませんが、Webサイトとは同⼀のドメイン内(Google検索であれば「www.google.com」の部分)に配置されているWebページの集まりのことを指し⽰すのが⼀般的です。似たような⾔葉にWebサービスなどがありますが、これらもWebサイトを通じて提供されるサービスを指すことが⼀般的でWebサイトとほぼ同義語と考えて問題ありません。

Webサービスには、⽶国のGAFAM(Google、Amazon、Facebook、Apple、Microsoft)に代表されるように、インターネットを通じて世界中で様々な種類が提供されています。例えば、Googleの検索サービスやAmazonのオンラインショッピングのためのECサービス、Facebookのソーシャルネットワークサービスなど数多くのWebサービスが提供されています。

これらのサービスは⼤枠では同じWebサービスであり、技術的なアーキテクチャも同じWebサイトとなります。しかしWebサイトを通じて実際に提供されるWebサービスには⼤きな違いがあります。

⼀般的なWebサイトの構成例

上記はWebサイトの構成をおおまかにまとめた図となります。Webサイトは、技術的に⾒ると階層構造になっており、図の上部のWebアプリケーションに近づくにつれて⼈が解釈しやすいテキストデータを扱います。

⼀⽅で下部のオペレーティングシステムに近づくにつれてコンピューターが解釈しやすいバイナリー形式のデータを扱うようになっています。このようにWebサイトは、それぞれのソフトウェア群の役割を明確にするために階層化されています。

前述したWebサービスの違いは上記の図で⾔うところのWebアプリケーションの違いとなります。この部分は各サービスに応じてオーダーメイドで作成されるため、それぞれのWebサイトで全く異なったソフトウェアになります。

これに対して、Webアプリケーション以下のフレームワークやミドルウェア、オペレーティングシステムなどについては、通信を⾏う、データを読み書きするなど、どのWebサイトでも共通して実⾏される処理を担います。そのため、これらのソフトウェア類は独⾃で構築するのではなく、世界中で使われる共通のソフトウェアを使⽤することが⼀般的になります。

混⼊する脆弱性(セキュリティ上のバグ)の違い

セキュリティ上のバグのことを脆弱性と呼びますが、Webサイトには上記の図の通り、おおまかに分けて2種類の脆弱性が混⼊する可能性があります。

1つ⽬がそのWebサイト固有の脆弱性で、⼀般的にWebアプリケーションの脆弱性と呼ばれる問題です。この脆弱性は、問題の発⽣原因からある程度カテゴライズできますが、どの箇所において発⽣するか?といった部分については各Webアプリケーションの作りに依存します。

2つ⽬が該当するバージョンのOSやミドルウェアを利⽤している際に発⽣するプラットフォームにまつわる脆弱性です。この脆弱性は存在した場合、どのWebサイトであっても同様の⼿順で問題が再現されることが特徴として挙げられます。

脆弱性対策のステップ

品質の⾼いソフトウェアを作るためには、構築してからテストを繰り返してバグを取り除く⼯程が必須となります。なお、このアプローチはセキュリティを担保する上でも同じです。

Webサイトでは構築がある程度完成したタイミングで脆弱性の有無を確認するセキュリティ検査を実施して、検出した脆弱性に対して対策を実施する、あるいは運⽤を続けていく過程で、機能を追加するなどのタイミングで同様のセキュリティ検査を実施して脆弱性に対処していくといった⼯程を繰り返すことで安全性が⾼まっていきます。

しかし、とは⾔え上記の対応を⾏うために、⽇進⽉歩で進化するサイバー攻撃に関する専⾨知識を、Webサイトを構築する開発エンジニアに兼任で⾝に付けて対応してもらうのは、習得する知識の量や取得するまでに要する時間を考慮すると、なかなかシビアな部分があります。

また開発エンジニアとは別に⾃社内に専⾨のセキュリティエンジニアが所属する専⾨部署を持って対応できるならばそれが理想ですが、社会的なセキュリティエンジニアの⼈材不⾜や会社側の経営的なコストパフォーマンス(⾮採算部⾨になるため)の観点から、こちらもなかなか実現が難しいところがあります。

そのため、⼤部分の企業において脆弱性に対処するためにセキュリティ検査を実施する場合、外部の専⾨会社に委託するケースになることが⼤半だと思います。しかし、実際に依頼しようと思っても、どのベンダーに依頼すれば良いのか分からないと頭を悩ませる担当者様は少なくないと思います。

セキュリティ検査の種類

セキュリティ検査は、実施するだけではなく依頼することもハードルが⾼いと感じてしまうのには様々な理由がありますが、その理由のうち⼤きな割合を含むのはセキュリティ検査の内容の複雑さにあると思います。ここではセキュリティ検査をおおまかに分類して、導⼊に対するメリットとデメリットについて整理していきます。

報奨⾦制度のセキュリティ検査(バグバウンティ)

まだ⽇本ではあまり導⼊が進んでいませんが、海外ではメジャーになりつつあるセキュリティ検査サービスです。検査を⾏う⼈員が⾃由参加型のセキュリティ検査サービスで、企業は検出した脆弱性の危険度に応じて報奨⾦を⽀払うというサービスです。特徴としては以下の通りとなります。

メリット

  • ⾮常に卓越したスキルセットを持つエンジニアが参加する場合がある
  • 脆弱性が少ないサイトであれば必要最低限のコストで済む
  • OSやミドルウェア、フレームワークなどの世界的に未知の脆弱性が検出されることがある
  • 問題を再現できるプログラムやその⼿法(Exploit)の詳細が得られる
  • 参加者が多ければ網羅性が確保できる
  • 対外的に⾃社のセキュリティ意識の⾼さがアピールできる

デメリット

  • 運⽤が難しい(受け付けた脆弱性の実害性を確認する必要があるためナレッジや専任の人員が必要)
  • グローバル(英語)に対応しなければならないケースがある

上記のメリットに挙げた通りうまく運⽤できた場合は、有益な検査結果をコストを抑えて得ることができるため、⾮常に魅⼒的なセキュリティ検査サービスです。しかしその反⾯、デメリットに挙げたように、契約⾯や運⽤⾯のハードルが⾼く、グローバル対応しなければならないなど、企業体⼒の⾼い会社でないと導⼊が難しい側⾯があります。

Securify Bugty ではtriageオプションの提供も行っているため、運用面での課題を解決することが出来ます。

4万人のバグハンターによる
世界レベルでのセキュリティ・サービス品質を実現
Securify Bugty

依頼型のセキュリティ検査

法⼈間で契約を結んで実施するセキュリティ検査サービスです。国内で専⾨ベンダーに依頼して実施する場合は、基本的にこちらのセキュリティ検査サービスになります。なお、近年ではセキュリティ検査サービスは以下の2種類に⼤別されます。

ペネトレーションテスト

別名、侵⼊検査とも呼ばれるセキュリティ検査サービスです。専⾨性が⾼く、国内では提供するセキュリティベンダーがまだまだ少ないのが現状ですが、徐々に提供が広がっているサービスとなります。

メリット

  • セキュリティインシデントに繋がる問題とその⼿順が明確に判明する
  • 後述する脆弱性診断よりも精度の⾼い検査結果が得られる

デメリット

  • 実施範囲は事前に想定したケースのみ
  • 検査期間が⻑い
  • 検査にかかるコストが割⾼
  • 検査結果は委託先企業のレベルによって変動する

実際にセキュリティインシデントに結びつく問題があるかどうかを調べる専⾨性の⾼いプロフェッショナルサービスです。インシデント発⽣時の影響が⼤きいと考えられるWebサイトにおいて実施するのに適しています。

しかしコストは割⾼になる傾向があり、かつ検査の範囲は限定的になるため、ある程度のセキュリティレベルを担保したシステムでないと、コストを掛けたのに脆弱性を⾒逃してしまうという結果を招く可能性があります。そのため、この点については選定の際に注意が必要です。

脆弱性診断サービス

現状ではセキュリティ検査サービスというと、この脆弱性診断サービスを指すケースが⼀般的です。(提供するベンダーによっては診断サービスなどと略されることもありますが、同じサービスです。)後述しますが、この脆弱性診断サービスについては、前述した脆弱性の特性に合わせて、Webアプリケーション脆弱性診断とプラットフォーム脆弱性診断の2種類のサービスに細分化されます。

メリット

  • 総合的なセキュリティ検査が実施できる
  • ⼀定⽔準の脆弱性が網羅的に検出できる

デメリット

  • 従量制の価格を採⽤するベンダーが多いため、実施範囲はコストと相談になる
  • 検査期間は実施範囲に⽐例して⻑くなる
  • バグバウンティほどの検査結果は得られにくい

いろいろな種類があるセキュリティ検査サービスですが、これまで導⼊したことがない、あるいは⾃社内に専⾨の部署やエンジニアがいないなどの場合、基本的に選択肢となるのが、この脆弱性診断サービスになります。そのため、以降はこちらの脆弱性診断サービスの詳細について解説していきます。

脆弱性診断サービスについて

前述した通り脆弱性診断サービスは、Webサイトで混⼊する脆弱性の発⽣原因に即して、以下の2種類のサービスに分類されます。

プラットフォーム脆弱性診断(ネットワーク脆弱性診断)

提供ベンダーによってはネットワーク脆弱性診断サービスと呼ぶこともありますが、同様の検査サービスです。実施⽅法は主に専⽤ソフトウェアで⾃動的に⾏うツール診断がメインとなります。そのため、現状では⽐較的、安価で実施するベンダーが増えています。

なお、最近ではAWSやAzure、GCPといったクラウドサービス上でサーバーやネットワーク機器の設定を完結させるWebサービスが増えてきていることから、その設定状況を確認することでプラットフォームにまつわる脆弱性を検出するクラウド設定診断サービスなどを提供するベンダーも増えてきています。

このクラウド設定診断サービスはアプローチが異なるだけで、検査結果はプラットフォーム脆弱性診断サービスで検出される問題とほぼ同等になるため、クラウドサービスで環境を構築している際には選択肢の⼀つになります。

Webアプリケーション脆弱性診断

Webアプリケーションに混⼊する脆弱性に特化して実施されるセキュリティ検査サービスです。主に実施⽅法にはエンジニアが⽬視で検査するマニュアル診断と専⽤ソフトウェアで⾃動的に⾏うツール診断の2種類の実施⽅法があります。こちらの詳細については次節で解説します。

Webアプリケーション脆弱性診断におけるツール診断とマニュアル診断の違い

プラットフォームにまつわる脆弱性は、その特性上、発⾒するのに適している検査⽅法がツール診断であることは疑念の余地がありませんが、Webアプリケーションの脆弱性を⾒つけ出す場合、ツール診断とマニュアル診断はどちらが適しているのか?とたびたび議論になることがあります。

また、この議論は脆弱性診断サービスの導⼊を検討されている⽅を悩ませる要因にもなっていると感じますが、結論から⾔えば、どちらが優れていると⾔い切れるものではありません。それぞれの診断⽅法には⼀⻑⼀短があるため、強いて⾔えばWebアプリケーションの特徴に合わせて、双⽅の検査⽅法をハイブリッドして実施するのが望ましいと⾔えます。

マニュアル診断

⼀般的にセキュリティエンジニアが⽬視で実施するセキュリティ検査の総称と呼ばれることが多いです。特徴は以下の通り、⼈間が実施するため対応に融通が効きやすく検査精度が⾼くなる傾向にありますが、属⼈性が⾼いため当たり外れがあります。またエンジニアが対応することで、検査期間が⻑くなったりコストが割⾼になる傾向があります。

ただし、診断実績が豊富なセキュリティベンダーにおけるマニュアル診断は、品質のばらつきを抑えるために⼿法をマニュアル化し、後述するツール診断を実施した上で、ツールではカバーできない部分をマニュアルで補完することで双⽅の強みを⽣かしたサービスをマニュアル診断と称していることがあります。そのため、提供内容の詳細については各ベンダーにお問い合わせいただくことをお勧めいたします。

メリット

  • 複雑な画⾯遷移やロジックにまつわる脆弱性を検出することができる
  • 全般的に検査精度が⾼い

デメリット

  • 検査結果は実施者のスキルに依存する(委託先ベンダーにもよる)
  • ⼈件費が上乗せになるためコストは割⾼
  • 検査期間が⻑くなる

ツール診断

専⽤ソフトウェアで実施するセキュリティ検査の総称です。Webアプリケーションの脆弱性を検査する場合、複雑な画⾯遷移やロジックに対応できないケースがあったり、検査精度がやや悪くなるといったデメリットがあります。しかしその反⾯、属⼈性が薄いため、検査期間が短く⽐較的安価に利⽤ができるといったメリットがあります。

メリット

  • 検査期間は⽐較的短い
  • コストは割安
  • 検査結果が実施者のスキルに左右されない

デメリット

  • 複雑な画⾯遷移やロジックに対応できないケースがある
  • 検出漏れや誤検知が多い

導⼊する際のポイント

導⼊する場合、現状の⾃社での脆弱性に対する対応状況について把握されることをお勧めいたします。その上で⽬的に沿ったセキュリティサービスを選択する、あるいは内容を⾒直すことをお勧めいたします。

セキュリティ検査サービスの利⽤がない場合

これまでセキュリティ検査サービスなどを全く利⽤していないのであれば、現状把握のために⼀度、実施されることが望ましいと⾔えます。この際に導⼊するサービスとしては脆弱性診断サービスが適していますので、Webアプリケーション脆弱性については、予算がなければツール診断、ただし重要な箇所やサービスに対してはマニュアル診断を選択する、そうでない場合は両⽅の診断を選択します。また過去に実施したことがなければ、併せてプラットフォーム脆弱性診断サービスの導⼊もご検討いただくのが望ましいです。

すでにセキュリティ検査サービスを導⼊している場合

実施しているサービス内容を今⼀度、ご確認ください。その際に、実施内容に過不⾜がないか?(マニュアル診断が未実施など)あるいは⽬的と合っていないセキュリティ検査サービスを選択していないか?(網羅的な検査が必要なのにペネトレーションテストを選択しているなど)等をご確認いただいた上で、必要に応じて実施内容の⾒直しを⾏うことをお勧めいたします。

⼗分な体制や⼈員が確保できている場合

ご紹介した通り国内での導⼊が少ない状況ですが、⼗分な⼈員や体制が確保できている状況であればバグバウンティ制度などによるセキュリティ検査サービスを導⼊することで、より⾼いセキュリティレベルの確保が⾒込めます。そのため、このようなサービスの導⼊についてご検討されるのが望ましいと⾔えます。

まずは手軽にツールで脆弱性診断

本記事では、脆弱性診断の重要性について紹介してきました。

セキュリティベンダーに依頼する脆弱性診断もある一方で低コストで実現できる手法としてツールでの脆弱性診断という選択肢もあります。

ツールでの脆弱性診断を通じてセキュリティレベルを強化したい
企業様はぜひ弊社の脆弱性診断サービス「Securify Scan」を活用ください。

無償でのトライアル実施も行っておりますので、
お気軽にお問い合わせください。

Webアプリケーションの
継続的セキュリティを簡単に実現
Securify

ブログ一覧へ戻る

サービスに関するご質問・ご相談など
お気軽にお問い合わせください