今回のブログ投稿の執筆者:James Spadaro(Cisco ASIG)、Lilith Wyatt(Cisco Talos)
脆弱性研究者としてネットワーク アプリケーションを監査し、脆弱性を特定する場面を想像してみてください。最初はその大変さが想像できないかもしれませんが、いくつかの条件や制約を知り想像は一変します。ネットワーク アプリケーションやプロトコルが機能する仕組みについての情報が非常に限られており、費やせる時間もごくわずかなのです。さあ、どうしますか?
このような場面では、ネットワーク アプリケーションの脆弱性を特定することが極めて困難になるでしょう。「ファジング」とは、こうした場面でソフトウェアをテストし、脆弱性を効率的に特定するためのテスト方法です。しかし、ここで疑問になるのはファズの実効性です。
ここで「Mutiny Fuzzing Framework」と「Decept Proxy」の登場です。
Mutiny Fuzzing Framework
「Mutiny Fuzzing Framework」は、突然変異型ファジング ツールを介してネットワーク トラフィックを送信するネットワーク ファジング ツールです。このツールの目標は、綿密性を犠牲にする代わりに、できるだけ高速にネットワーク ファジングを実行することです。
Mutiny の大まかな仕組みは、正当なサンプル トラフィック(ブラウザ要求など)を .fuzzer ファイル形式で準備し、この .fuzzer ファイルを実行して指定したパケットを変更(異変)させ、対象ホストに対してトラフィックを生成することです。Mutiny は拡張・構成することで多様な動作にも対応し、たとえば入出力に基づいてメッセージを変更する、ネットワークエラーの処理方法を指定する、別のスレッドで対象ホストを監視する、といったことが可能になります。
Mutiny はクリアテキスト トラフィックに対しては使いやすい一方で、TLS などの多くのネットワーク プロトコルはネイティブでサポートしていません。ここで Decept Proxy が活躍します。Decept Proxy を使用すれば、暗号化されたトラフィックの捕捉とファジングを簡素化できるだけでなく、Mutiny によるトラフィックの捕捉と処理も非常に簡単になります。
Decept Proxy
Decept Proxy は多目的ネットワーク プロキシで、TCP/UDP/DTLS/ドメイン ソケット接続から、別のプレーン テキスト/TLS セキュア ソケット接続に、トラフィックをプレーン テキスト形式または TLS セキュア形式で転送できます。Decept Proxy は .fuzzer ファイルを直接生成でき、Mutiny が TLS ホストと通信することを可能にするため、Mutiny の補助ツールとして非常に役立ちます。.fuzzer ファイルの直接生成機能は、TLS 接続をファジングする場面で特に便利です。
Decept Proxy が他のプロキシと異なる点:
- TLS エンドポイント、IPv6、Unix ソケット、抽象名前空間ソケット、L3 プロトコル/キャプチャ、L2 ブリッジング モード、パッシブ モードをサポート
- SSH プロキシ接続/スニッフィング/フィルタリングを実行可能
- 移植性を念頭に置いて作成されているため、標準の Python ライブラリのみを使用。Python 2 がインストールされていれば Decept Proxy を実行可能
Decept Proxy は、Justin Seitz 氏が作成した Black Hat Python の TCP proxy.py に基づいています。
Mutiny Fuzzing Framework と Decept Proxy の活用例
Mutiny Fuzzing Framework と Decept Proxy は、さまざまなネットワーク アプリケーションやデバイスを評価する上で効果を発揮しており、ネットワーク ファジングによってバグや脆弱性を特定し、多数のシスコ製デバイスの改良に貢献してきました。Mutiny と Decept が役立った他の例には、次のバグや脆弱性が含まれます。
- CVE-2014-7815:QEMU における Denial of Service(DoS)のバグ
- TALOS-2017-0439:Circle with Disney デバイスに影響する、Tinysvcmdns のヒープ オーバーフロー バグ
- VMware 製品で発見された複数の脆弱性(Talso の開示ポリシーに基づき、責任を持って公開済み)
ツールの入手先
Mutiny Fuzzing Framework と Decept Proxy は、Talos からオープンソース ツールとして公開されています。これらのツールは Talos が積極的に開発しており、機能向上に向けたご意見をお寄せいただけると助かります。ただし、これらのツールは現状のまま提供されており、公式にはサポートされていないことにご注意ください。これらのツールは、すべてユーザの責任のもとでご利用ください。
Mutiny Fuzzing Framework は GitHub(下のリンクを参照)に置かれています。Mutiny にはいくつかの開発ブランチがありますが、安定版を希望する場合はマスター ブランチを使用してください。開発中のベータ ブランチには新機能が含まれていますが、安定性に欠けるため通常用途には適さない可能性があります。
Mutiny Fuzzing Framework の入手先(GitHub):
https://github.com/Cisco-Talos/mutiny-fuzzer
Decept Proxy の入手先(GitHub):
https://github.com/Cisco-Talos/Decept
本稿は 2017年12月7日に Talos Group のブログに投稿された「The Mutiny Fuzzing Framework and Decept Proxy」の抄訳です。