ツール診断のエラーハンドリングから考える診断員の違い(2023/07/18)
1. はじめに
こんにちは、アセスメントサービス部の篠宮です。
突然ですが、診断ベンダを選定する基準はなんでしょうか?
金額や、期間、診断項目などがあげられるかと思いますが、「誰が診断するか」によって診断結果が大きく変わることをご存知でしょうか?
今回は、診断ベンダの裏側の話も交えつつ、ツール診断のエラーハンドリングに焦点をあてて、誰が診断するかで、何が変わるのかを解説していきます。今や、診断ベンダは数多く出てきていることから、その選定には一苦労かと思います。本記事が、お客様のニーズにあった診断ベンダ選定の一助になれば幸いです。
2. ツール診断とは?
脆弱性の中には、「この時、この動きをしたら、この脆弱性だ」と、機械的に判断しやすい脆弱性があります。このような脆弱性については、人が頑張って全て診断するのではなく、専用のツールの機能を用いて診断することが一般的です。このように、機械的に検知しやすい脆弱性をツールを用いて診断するサービスをツール診断と呼ぶことが多くあります。
※診断ベンダにより、名称は異なる場合があります。
3. エンジニアとオペレータ
診断ベンダというと、どのベンダも洗練されたエキスパート集団と思われるかもしれません。しかしながら、昨今の脆弱性診断の需要増大から、残念ながらその体制を取れない場合があります。本記事では、わかりやすく表現するため、ツールをただ実行するのではなく、「サイトの挙動を見て、臨機応変に対応するスキルを持つか」を基準に、下記2つの診断担当を定義します。
こう表現すると、「エンジニアに診断してほしい」と思うかもしれませんが、正直なところ、シンプルなWebアプリケーションであれば、エンジニアとオペレータでの違いは生まれない場合もあります。むしろ、コストがかからない分、安くサービスを受けられる可能性があります。
では、どのような場合に違いがあるのでしょうか?違いは様々ありますが、今回はエラーハンドリングに焦点をあてて、解説していきます。
4. エラーハンドリングにおけるエンジニアとオペレータの違い
「意外」と思うかもしれませんが、実は、Webアプリケーションによっては、ボタンをポチっとするだけでは、充分にツールを用いた診断ができない場合があります。
なぜかというと、Webアプリケーションによっては、その機能を使うための前提条件が存在する場合があるからです。前提条件の例としては、下記のようなものがあげられます。
例)商品の在庫がないと、注文できない
自社のサイトから発生した通信でないと、通信を許可しない
メールに送信した値を画面に入力する必要がある
など
前提条件を満たさない場合、通常、Webアプリケーションはエラーメッセージやエラー画面を返し、対象の機能を実行しません。本記事では、診断対象の機能を実行するための前提条件を満たし、エラーを極力発生させずに診断することをエラーハンドリングと定義します。
※この表現は、診断ベンダにより異なります。例)「正常系の遷移を診断する」など
エンジニアとオペレータの大きな違いの1つとして、「エラーハンドリングに対処できるか、否か」ということをあげることが出来ます。
エンジニアの場合、サイトの挙動やツールの挙動を見て、「正しく診断できているか」、「エラーハンドリングが必要であるか」という判断ができます。当然、必要に応じて、エラーハンドリングを行った上で、診断を試みます。
オペレータの場合、診断用ツールにて、エラーが起きていることに気づけない場合があります。また、気づけた場合でも、サイトの挙動の理解やツール設定の理解度、あるいは診断工数の制限に応じて、適切な対応ができない可能性があります。
では、なぜエラーハンドリングができないことが大きな違いを生むのでしょうか?
ここでは、ある登録処理が診断対象となった場合を例に、Webアプリケーションの内部のフローを想像してみます。下記はシンプルな例ですが、Webアプリケーションが、前提条件をチェックし、問題ないなら登録処理を行い、問題があればエラーを返すフローを表しています。
重要なことは、もしエラーハンドリングを正しく行わない場合(前提条件チェックを満たさない場合)、本来実施したかった登録処理は診断されないということです。そのため、例えば、登録処理にSQLインジェクションと呼ばれる重要な脆弱性があったとしても、ツール診断で見落とされることになります。
当然ではありますが、攻撃者には、高い洞察力と充分な時間があるため、エラーハンドリングを行います。「診断したはずなのに、攻撃を受けた」という事例を耳にしますが、中には、こういった背景もあるかもしれません。
5. まとめ
今回は、診断ベンダの裏側の話も交えつつ、ツール診断のエラーハンドリングに焦点をあてて、誰が診断するかで、診断結果が大きく変わることをご紹介しました。
しかしながら、診断ベンダのHPやカタログには、「こういう診断項目を診断しています」とまでしか、基本的には書いてありません。そのため、診断員がエンジニアかオペレータかを見分けるために、「エラーハンドリングはきちんとしていますか?」などと質問いただくとよいかと思われます。ただし、YES/NOの質問ですと、YESしか返ってこないと思われますので、「依頼予定の対象サイトの場合は、どのようなエラーハンドリングをすることを想定しているか」をあわせて確認するとよいでしょう。対象サイトの開発チームや開発ベンダにあらかじめ想定される前提条件を確認しておくと、診断ベンダの回答と合わせて確認しやすいでしょう。
(もちろん弊社のWebアプリケーション診断では、全ての案件において、エンジニアが担当し、エラーハンドリングを行いながら診断しています。)
本記事がお客様の安全安心なシステムづくりの一助になれば幸いです。