情報通信
IR情報 会社情報

技術資料

セキュリティ:ファジングについて

ソフトウェアやシステムの開発においてバグや未知の脆弱性を検出する方法として、「ファジング」という手法があります。最近ではスマートフォンやネットワーク家電、制御系のシステムなど幅広くこのファジングが導入されています。ここでは、ファジングとそのテスト手法についてご紹介します。

ファジングとは

ファジングは、ブラックボックステストの手法のひとつとして位置づけられます。対象となるソフトウェアやシステムに予測できない入力データ(ファズ)を与えて、例外を監視することによりバグや脆弱性を検出するテストです。主に製品の開発部門や出荷前の製品をテストする品質保証部門において活用されます。ファジングの特徴は、大量のファズを使って総当たり的に検査を行うという点です。このような総当たり的な手法を「ブルートフォース」と呼びます。あらゆるパターンの入力を試すことが理想であるため、同じ手順の作業を少しずつ入力する値を変えながら何度も繰り返して実施することになります。そのためファジングツールによって自動化して行うのが一般的です。

ホワイトボックステスト・ブラックボックステスト

ホワイトボックステストとは、ソフトウェアやシステムの内部構造を把握した上で動作検証を行うテスト手法です。内部構造を把握した上での検証なので、細部にいたるまで網羅的にチェックできるというメリットがある一方、大規模なソフトウェアでは検証に膨大な手間がかかることやソースコードが入手できないと適用できないといった問題があります。
ブラックボックステストは、ホワイトボックステストとは逆にソフトウェアやシステムの内部構造とは関係なく、入力を制御しその出力を観察するテスト手法です。さまざまな入力に対して仕様書通りの出力が得られるかどうかを確認することが目的で、システム内部でどういった処理が行われているかは一切考慮しません。ソースコードも必要ありません。

ファジングツール

ファジングツールには、主に以下の3つのフェーズがあります。

  • ①ファズの生成
  • ②ファズの送信
  • ③ファジング対象の挙動・死活監視

ファジングツールは、これらの一連の動作(テストケース)を自動で繰り返し行うことによりバグや脆弱性を検出します。

Webサーバへのファジングの例

ここで、ヘッダ部分に「aAaAaA...」という異常な文字列を含むHTTPリクエストをWebサーバに送信するファジングの例を紹介します。まず、正常なHTTP GETリクエストをファジング対象に送信します。Webサーバからは正常な応答が返ってきます。(図1)

図1 正常なHTTPリクエスト
【図1】正常なHTTPリクエスト

次に、リクエスト行に「aAaAaA...」という異常な文字列(ファズ)を含むHTTP GETリクエストをファジング対象へ送信します。(①ファズの生成、②ファズの送信)すると、それを受信したWebサーバは何も応答を返しませんでした。(図2)

図2 異常なHTTPリクエスト(ファズ)
【図2】異常なHTTPリクエスト

ファジングツールはWebサーバからの応答を待っていますが、ファジングツールにはWebサーバがどういう状態なのかわかりません。Webサーバが、異常な文字列を含むリクエストを破棄したかもしれませんし、クラッシュしているかもしれません。そこで、ファジングツールから死活監視のパケットを送信します。(③ファジング対象の挙動・死活監視)この例では、死活監視のために正常なHTTPGETリクエストを送信しています。Webサーバが正常に動作していれば、HTTPレスポンスを返すはずです。しかし応答を返さなかったので、Webサーバはクラッシュしたと判断できます。(図3)ファジングツールは、このテストケースを”失敗”と判定します。(図4)

図3 ファジング対象の死活監視
【図3】ファジング対象の死活監視
図4 ファジングツールでの測定結果
【図4】ファジングツールでの測定結果

試験者は失敗したテスト結果を分析し、対象機器に修正を施します。このようなテストを繰り返し行うことで対象機器のバグや脆弱性を削減でき、製品の品質を向上させることができます。また、テストは自動で行われるため、その労力や費用を抑えることもできます。


参考文献:
独立行政法人 情報処理推進機構 セキュリティセンター 「IPA ファジング活用の手引き」
http://www.ipa.go.jp/security/vuln/fuzzing.html
株式会社 技術評論社 「ソフトウェアの脆弱性検出におけるファジングの活用」
http://gihyo.jp/dev/feature/01/fuzzing

 

contact
contact

detail__vid--text.png

はい (3)
いいえ (2)

アーカイブ

  • クラウド・仮想化:NFVについて

    近年、通信事業者ネットワークにおける仮想化技術の導入が進んでおり、より複雑な仮想化ネットワークの効率的で安定した構築/運用のための仮想化インフラストラクチャの検証も必要不可欠になっています。
    ここでは、近年成長が進んでいる仮想化技術に欠かせないNFVについてご紹介します。

  • 5G/IoT:What’s 5G?

    「4G」「LTE」の次世代技術として今まさに開発が進められている最新の移動通信の技術が「5G」です。
    ここでは、5世代移動通信システム「5G」とはどのようなものであるのか、私たちの生活にどのような変化をもたらすのかについてご紹介します。

  • 時刻同期:時刻同期に高精度が求められる理由

    私達の日々の生活に加え、社会インフラにおいても様々なシーンで「時刻同期」の制度が求められており、「時刻」を「同期」させることで私達の社会は成り立っています。
    ここでは、「時刻同期」の重要性をいくつか例を交えてご紹介します。

  • オートモーティブ:情報通信技術と自動車の融合

    携帯電話で話をしながら人々が歩いているのと同様に、自動車同士が通信しながら走行する社会がすぐそこまで来ています。
    ここでは、スマートモビリティ社会の実現に向けた、自動車における様々な通信技術をご紹介します。

  • 5G/IoT:移動通信の電波伝搬とフェージング

    近年、携帯電話をはじめ無線技術を用いたシステムは目覚ましい進化を遂げており、これらの技術に欠かせない電波伝搬の原理を理解しておくことが重要です。
    ここでは、電波伝搬の基礎に加え移動通信における電波伝搬についてご紹介します。

PAGE TOP

本ウェブサイトではサイト利用の利便性向上のために「クッキー」と呼ばれる技術を使用しています。サイトの閲覧を続行されるには、クッキーの使用に同意いただきますようお願いいたします。詳しくはプライバシーポリシーをご覧ください。