メインコンテンツまでスキップ

コンセプト

本ドキュメントでは、Shisho Cloud の Web アプリケーション診断機能に関するコンセプトを紹介します。具体的には、以下の事項について詳しく説明します。

  • Web アプリケーション診断機能を通して実現できること
  • Web アプリケーション診断機能の特長
  • Web アプリケーション診断機能における脅威の種別と脆弱性の重大度
  • 具体的な検査項目と業界標準のカバレッジ
  • Web アプリケーション診断機能と手動診断サービスの使い分け方

Web アプリケーション診断機能を通して実現できること

Web アプリケーション診断機能を利用することで、以下に示す3つの事項を実現することができます。

  1. Web アプリケーションの提供者や利用者に悪影響を及ぼすリスクがわかる
  2. セキュアな Web アプリケーションを実現していくためのアプローチがわかる
  3. Web アプリケーションに存在するリスクの洗い出しを低コストで実施できる

以下にて、それぞれの事項について詳しく説明します。

Web アプリケーションの提供者や利用者に悪影響を及ぼすリスクがわかる

たとえば、データベースへ不正にアクセスされたり、Web アプリケーションを実行しているサーバが攻撃者によって乗っ取られたりすると、Web アプリケーションが管理している個人情報等の機微な情報が流出したり、決済情報が改ざんされたりするといった、事業の継続性に重大な影響を及ぼす攻撃が行われる恐れがあります。あるいは、ユーザーの意図に反して決済処理が実行されたり、重要なデータが削除されたりすることを可能にするような脆弱性が存在した場合、ユーザーがアプリケーションを介して不利益を被ることになります。

Shisho Cloud の Web アプリケーション診断機能は、このようなインパクトの大きいセキュリティリスクや、ユーザーに不利益を与える恐れのあるセキュリティリスクを優先的に検出することで、Web アプリケーションの堅牢化に貢献します。

セキュアな Web アプリケーションを実現していくためのアプローチがわかる

セキュアな Web アプリケーションを実現していくためには、単にスキャンを実行して脆弱性を列挙するだけでは不十分です。検出された脆弱性のうち、実際に事業リスクにつながり得るのはどの脆弱性か、それはどの程度影響があると考えられ、どのように修正すればよいのか、といった取り組みを効率的かつ体系的に実施していくことが重要です。

Shisho Cloud の Web アプリケーション診断機能は、事業リスクにつながる脆弱性に絞ってスキャンを実施することに加えて、わかりやすいレポートとトリアージ機能を通して、検出された脆弱性を調査、修正するまでのプロセスを強力にサポートします。

Web アプリケーションに存在するリスクの洗い出しを低コストで実施できる

前述のとおり、Web アプリケーション診断機能は事業の成長や Web アプリケーションの堅牢化を強力にサポートしますが、このような機能を提供するサービスは高価かつ複雑になりがちです。

私たちは、本機能を安価に提供することを約束します。それは、診断エンジンおよび検知エンジンの内製化や、検査項目に応じた診断手法 (動的な診断およびソースコードを用いた静的な診断) の使い分けによる診断コストの圧縮といった工夫によって実現しています。決して、診断の品質を下げることで安価に提供しているわけではありません。

加えて、私たちは、使いやすく理解しやすいユーザーインタフェースやトリアージ機能を提供することで、工数的なコストを抑えた上で診断を実施できる環境を用意しています。

Flatt Security のミッションである「エンジニアの背中を預かる」という使命を実現するためには、単に高品質なサービスを提供するだけではなく、どのような環境の組織であっても利用しやすいサービスを提供することが不可欠です。この理念に則り、私たちは高品質な診断を経済的にも工数的にも低コストに実施できる仕組みを作り上げていきます。

Web アプリケーション診断機能の特長

Shisho Cloud の Web アプリケーション診断機能では、確度の低い大量のアラートに悩まされることなく、真に重要なアラートにのみ向き合うことができます。

さて、Web アプリケーションのセキュリティ診断において、多くの脆弱性や潜在的な問題を列挙することは重要です。しかしながら、一般的に検出される脆弱性や潜在的な問題の中には、重大度が低いものが存在することも事実です。そのような重大度の低いアラートが大量に報告される環境では、本質的に対処すべき重大度の高いアラートを見逃してしまったり、その対処が遅れたりすることが懸念されます。

そのため、私たちは「脆弱性や潜在的な問題を単に列挙して、それをすべてアラートするだけでは適切なセキュリティ評価には繋がらない」と考えています。

そこで、Shisho Cloud の Web アプリケーション診断機能では、事業の継続性に大きなインパクトを与えうる脆弱性や潜在的な問題を優先して特定し、ご報告します。そのため、以下に該当するような場合において、本機能は意図的に報告を行いません。

  • あるデータを送った際に診断対象の Web アプリケーションが意図しない挙動を見せるものの、脆弱性が存在するとは断定できない場合。
  • セキュリティを向上させるための仕組みが利用されていないものの、対応にかかるコストが対応によって得られるメリットと見合わないと判断できる場合。

脅威の種別と脆弱性の重大度

私たちは、脅威の種別を定義して検知すべき脆弱性を分類、特定した上で、脆弱性の重大度を用いて優先的に対応すべきものは何かを判断しています。

まず、脅威は情報セキュリティの三大要素 1 である機密性、完全性、可用性のそれぞれを脅かす「情報漏洩」、「データ改ざん」および「サービス停止」に分類されます。なお、代表的な脅威モデリング手法である STRIDE 2 では、これらに加えて「なりすまし」や「権限昇格」、「否認」なども定義されていますが、どれも結果としては上記のいずれかの脅威に帰着する (例: なりすましによってユーザの情報が漏洩する、権限昇格によって意図しないデータ書き込みが行われる等) ため、ここでは分類に加えていません。

脅威の種別説明
情報漏洩Web アプリケーションが管理する情報が意図せず漏洩する。
データ改ざんWeb アプリケーションが管理する情報が意図せず改ざんされる。
サービス停止Web アプリケーションが提供するサービスが停止する。あるいは、レスポンスが大幅に遅延する。

また、脆弱性の重大度は以下の3つの階層に分類されます。なお、これらの分類は Flatt Security がセキュリティ診断サービスにおいて定義している評価指標をベースにしつつ、DREAD モデルにおける Damage Potential (潜在的な被害の度合い) や Affected Users (影響を受けるユーザの度合い) の枠組みを参考に定義しています。

重大度説明
事業の継続性に対して重大な影響を与える可能性がある脆弱性。
事業の継続性に対して影響を与える可能性がある脆弱性。
事業の継続性に対して軽微な影響を与える可能性がある脆弱性。または、ある脆弱性の発生やそれによって生じる影響を助長させる可能性がある設定不備等の問題。

そして、これらの要素の組み合わせに対応する具体的な脆弱性や問題を特定します。

以下に、例を一部挙げます。

  • 情報漏洩 × 高: SQL インジェクションによって、Web アプリケーションが利用するデータベース内の情報が漏洩する。
  • 情報漏洩 × 中: 特定のパスにおいて、バージョン管理ファイル等の情報が意図せず公開される。
  • 情報漏洩 × 低: GraphQL API においてイントロスペクションクエリが許可されている。
  • データ改ざん × 高: OS コマンドインジェクションによって、Web アプリケーションが利用するサーバー上の任意のファイルが改ざんされる。
  • データ改ざん × 中: CSRF によって、正規のユーザーが意図しない変更をリクエストさせることが可能になる。
  • サービス停止 × 高: マッチに膨大な時間を要する正規表現を利用したリクエストによって、Web アプリケーション全体が停止し、サービスの提供が不可能になる。
  • サービス停止 × 中: 循環参照を行うような GraphQL クエリによって、Web アプリケーションの負荷が増大し、サービスの提供が遅延する。

Web アプリケーション診断機能では、Flatt Security が必要と判断した検査項目に基づいた動的検査やソースコード検査を提供しています。なお、検査項目の提供に関する意思決定を行う際には、上記のプロセスに加えて、プロフェッショナルサービス (手動診断) を提供するセキュリティ企業としてのノウハウと経験を活かしております。

まとめると、対象の Web アプリケーションがセキュアであると説明できるようになるために最適な検査を提供しています。

セキュリティ企業としてのノウハウを活かした診断機能の高度化

Flatt Security の手動診断では、単に定型的な脆弱性や既知の脆弱性を調査するだけではなく、近年発見されたばかりの攻撃手法や独自の攻撃手法を用いることがあります。

このような攻撃手法を検査項目として定義することで、プロフェッショナルサービスで得たノウハウを Web アプリケーション診断機能の高度化に活用しています。

検査項目と業界標準のカバレッジ

検査項目は、上記の前提のほか、Flatt Security が提供するセキュリティ診断サービスが定義する診断項目 や、以下に示す業界標準等を考慮して決定しています。

具体的な検査項目は、私たちの評価基準を前提として決定しており、その内容は上記に示すような業界標準が定義しているすべての項目をカバーしているわけではありません。なぜなら、それらがカバーする範囲には、アプリケーションや開発組織の文脈に依存するために機械的な判断が困難な事項や、必ずしも事業リスクをもたらすわけではない事項が含まれるためです。

言い換えれば、Web アプリケーション診断機能が提供している検査項目は、様々な業界標準が定義している検査項目のうち、私たちが重要であると判断した項目を含んでいるという関係性があります。

現時点において提供されている検査項目を確認したい場合は Web アプリケーション向けのマネージド検査を参照してください。

Web アプリケーション診断機能と手動診断サービスの使い分け方

結論として、個人情報等の機微な情報を扱う Web アプリケーションや事業にとって重要なサービスを提供する Web アプリケーションについては、Web アプリケーション診断機能の利用のみでは残余するリスクが多くの場合無視できないと考えられるため、手動診断をあわせて実施することを強く推奨します。

まず、Web アプリケーション診断の種別は大きく分けて以下のように分類することができます。

自動のセキュリティ診断

  • アプリケーションスキャナーやソースコード解析ツール等のみを利用する方法を指します。
  • 低コストかつ継続的に実施することが可能な一方、誤検知や検査できない観点が存在する等のデメリットが存在します。また、脆弱性の存在による影響や再現性の評価は実施しません。
  • 結果として、Web アプリケーションに存在する脆弱性が洗い出されます。
  • Shisho Cloud の Web アプリケーション診断機能もこれに該当します。

手動のセキュリティ診断

  • 上記のツールを実行して得られた結果を診断員が精査し、脆弱性の存在可否や、存在する場合の影響、再現性等をより詳細に評価する方法を指します。
  • 誤検知は抑制できる一方、検知率や検査可能な観点はツールの性能に依存します。
  • 結果として、Web アプリケーションに存在する脆弱性と、脆弱性による事業リスクが洗い出されます。

高度な手動のセキュリティ診断

  • ツールの実行やその結果の精査に加え、アプリケーションの仕様やビジネスロジックに関する理解をもとに、診断員がソースコードレベルでの検査を行う方法を指します。
  • アクセス制御の不備や仕様からの逸脱など、ツールでの検知が難しい Web アプリケーション固有の脆弱性を洗い出すことが可能です。
  • 結果として、Web アプリケーションに存在する脆弱性と、脆弱性による事業リスクが洗い出されます。
  • Flatt Security が提供する セキュリティ診断サービス がこれに該当します。

まとめ

上記の通り、Web アプリケーション診断機能は事業やユーザーに悪影響を及ぼす全ての脆弱性を特定、評価できるわけではありません。なぜなら、一部の脆弱性は、アプリケーションのソースコードおよびアーキテクチャを精査しないと検出できなかったり、アプリケーションの仕様を理解している人にしか評価できなかったりするからです。以下に例を示します。

  • たとえば、インターネット経由で、そのアプリケーションに登録されている全ユーザーの名前が取得可能な API が存在するとします。
    • このとき、その API が SNS のように、全ユーザーの名前が公開されることが仕様として定義されているアプリケーションに存在する場合、それは意図されたものであるため脆弱性ではありません。
    • 一方、マルチテナントアプリケーションのように、全ユーザーの名前を公開することが仕様上好ましくないアプリケーションに存在する場合、脆弱性として判断することが妥当です。
  • たとえば、ソースコード内のある関数に SQL インジェクション脆弱性が存在するものの、その関数へのコードパス中に存在するバリデーション機構によって、不正な入力値がブロックされているとします。
    • 高度な手動診断では、ソースコードや依存するライブラリ等を精査しながら「そのバリデーション機構をバイパスして攻撃するような手法はないか」といったレベルまで調査を行います。
    • 一方、Web アプリケーション診断機能は、対象の Web アプリケーションに対して攻撃用のデータを含んだリクエストを送信し、特定の挙動が確認された場合に脆弱性が存在すると判断します。この場合、そのようなリクエストはバリデーション機構によってブロックされてしまうため、本機能は脆弱性が確認できなかったものとして判断します。

具体的にどの診断種別を採用すべきかは一概には断定できず、Web アプリケーションが管理する情報の機密レベルや攻撃が発生した際に事業にもたらされる影響等を鑑みて、都度判断することが必要です。ただし、特に個人情報等の機微な情報を扱う Web アプリケーションや事業にとって重要なサービスを提供する Web アプリケーションについては、継続的に自動診断を実施しつつ、あわせて高度な手動診断を定期的に実施することが好ましいと言えます。

なお、Flatt Security ではセキュリティエンジニアによる高度な手動診断と Shisho Cloud の Web アプリケーション診断機能を柔軟に組み合わせたプランも提供しています。詳しくは、サポートまでお問い合わせください。

Footnotes

  1. NIST - NIST SP 1800-26A (https://www.nccoe.nist.gov/publication/1800-26/VolA/index.html)

  2. OWASP - Threat Modeling Process (https://owasp.org/www-community/Threat_Modeling_Process#stride)