ファジングテストの包括的なガイド

公開: 2021-05-17

セキュリティテストは、ビジネス目的であろうと商用目的であろうと、ソフトウェアが公式リリースの準備ができていることを確認するための最も重要なステップの1つです。 これにより、ソフトウェアに存在する可能性のある脆弱性を検出し、ハッカーがそのような欠陥を利用した場合の対策を講じることができます。

セキュリティテストに興味がある場合は、ここで事実を学ぶことができますが、知っておくべきことの1つは、リスク評価、侵入テスト、脆弱性スキャンなど、セキュリティテストを実行するためのさまざまな方法があることです。 また、セキュリティテストに少し慣れている場合は、「ファズテスト」という用語を聞いたことがあるでしょう。

ファジングテストは、特にマイクロソフトやグーグルのような企業の巨人が10年以上使用しているため、今日の業界では比較的一般的なテスト手法です。 しかし、驚くべきことは、標準的な手法であるにもかかわらず、それを知っている人はあまりいないということです。 そうは言っても、このガイドは、ファジングテストとは何かをその定義から説明することを目的としています。

ファジングテストとは何ですか?

ファジングテスト、または他の人が「ファジング」と呼ぶものは、プログラムに無効またはランダムなデータを入力して、悪用可能なエラーにつながる可能性のある脆弱性を検出することを含みます。 この入力は、ファイルの形式でも、ユーザーからの直接入力でもかまいません。 したがって、たとえば、ある種の計算プログラムを作成している場合は、通常、数値または数学演算を入力する必要があります。 ただし、ファズテストを実行している場合は、文字や特殊文字などの無効な入力を入力する必要があります。

そうすることでプログラムがクラッシュしたり、他の種類のエラーが発生したりした場合、プログラマーは脆弱性があると見なし、問題の修正を期待してコーディングの変更に取り組むことができます。 一見すると、ファジングテストは脆弱性スキャンや侵入テストなどの他の手法と同じだと思うかもしれませんが、その人気には理由があります。

なぜ企業はファズテストを使用するのですか?

セキュリティテストに関しては、万能のソリューションはありません。 それぞれの方法で、他の方法では検出できない問題を検出できます。 必要な運用コストが低いものもあれば、実行が簡単なものもあります。 すべてのセキュリティテスト手法と同様に、ファズテストは独自の方法で独自のものです。 以下は、企業がファジングテストを使用するように駆り立てるいくつかの利点です。

  • シンプルさ:ファズテストがどのように機能するかはすでにご存知でしょう。プログラムに無効な入力を入力するだけです。 一般に、プロセスの単純さは、セキュリティテストの点でスキルと経験が不足している個人または組織にとって大きな利点となります。
  • 自動化:セキュリティテストは、ソフトウェアとアプリケーションの開発において重要なステップかもしれませんが、多くの場合、プログラムを絶えずテストする以外に、他のことを行う必要があります。 ただし、ファザーを使用してプロセス全体を自動化できるため、ファズテストとは別の話になります。

ファザーは、必要なコマンドと条件が与えられた場合に、プログラムにデータを自動的に入力するためのツールです。 ファジングテストがビジネスの自動化を可能にするという事実は、それを企業にとって理想的なテスト手法にします。

  • 便利:通常、テストするときは、バグの可能性を減らし、プログラムのセキュリティを最大化するために、できるだけ多くのツールを使用する必要があります。 ファジングテストは自動化可能で簡単なので、ソフトウェアのセキュリティを強化するための便利な方法です。

一般に、ファジングは単純で実装が簡単ですが、ファジングテストにはさまざまなアプローチがあることに注意してください。 使用するタイプに応じて、テストプロセスの難易度と複雑さは異なります。 その点で、これはさまざまなタイプのファジングテストについて話す良い機会かもしれません。

ファジングテストへのさまざまなアプローチ

ファジングテストにはいくつかの種類がありますが、入力の生成方法が異なることを除けば、ほとんどの場合、互いに似ています。 とにかく、ファジングテストには4つのアプローチがあります。

  • ダムファジング:入力を完全にランダムに生成したい場合、通常はダムファジングを使用します。 ダムファザーは、プログラムの事前知識やインテリジェンスなしで入力を生成するツールであるため、この名前が付けられています。

たとえば、文法チェックプログラムを作成している場合、ダムファザーが画像を生成してしまう可能性があります。これは、プログラムが期待するものとはかけ離れています。 ダムファジングは、ファジングテストの最も簡単なアプローチです。

  • スマートファジング:コインの反対側にはスマートファジングがあります。 ダムファジングとは異なり、スマートファジングは、プログラムが何を受け取ることを期待しているかを知っている入力を生成します。 さらに、スマートファザーは、プログラムを必然的にクラッシュさせる入力を生成しません。 代わりに、予期しない動作を引き起こす可能性のある入力が発生します。

したがって、前の例では、スマートファザーは特殊文字を生成する可能性がありますが、画像やその他の不適切な入力は生成しません。 スマートファザーは、ダムファザーよりも実装が困難ですが、ほとんどの場合、より正確です。

  • ミューテーションファジング:ミューテーションファジングには、既存の有効な入力を変更するか、より具体的には「変更」することによって入力を生成することが含まれます。 電卓プログラムを使用したこの例では、ミューテーションファザーが既存の有効な入力を選択する場合があります。

選択した入力が「10 + 9」であるとします。 ミューテーションファザーは、値を増やして「180 + 129」に変換したり、操作を「10/9」に変更したりするなど、この入力の一部を追加、削除、または変更することによって、この入力を変更しようとします。

  • 世代別ファジング:最後に、世代別ファジングは最初から入力を生成します。これは、既存のファジングから入力を生成する突然変異ファジングの反対です。 参照がないため、世代別ファザーは突然変異型ファザーよりも実装がはるかに困難ですが、テスターのデータが増える可能性があります。

ファズテストを他の手法よりも少し面白くしているのは、さまざまなタイプを組み合わせてテストツールを強化できることです。 たとえば、プログラムのニーズに応じて、スマートミューテーションファザーまたはダム世代ファザーを作成できます。 おそらく、ファジングテストで実行できる無数の組み合わせが、企業が他の方法よりもファジングテストを好むもう1つの理由です。

まとめ

ファジングテストについて詳しく知ると、なぜ今のように人気が高まっているのかがすぐにわかります。 ただし、他の手法と同様に、ファズテストにはいくつかの欠点があることにも注意してください。 したがって、ファジングテストがアプリケーションやソフトウェアに害を及ぼすよりも効果があるかどうかを判断することが重要です。 前に述べたように、ソフトウェアセキュリティテストに万能のソリューションはありません。ファズテストがそのソリューションになることは間違いありません。

これについて何か考えがありますか? コメントで下に知らせてください、または私たちのツイッターまたはフェイスブックに議論を持ち越してください。

編集者の推奨事項: