ファジングとは?
特定のシステムにファズ(予測不可能な入力データ)データを与えることで意図的に例外を発生させ、その例外の挙動を確認する方法をファジングと呼びます。
歴史は非常に古く、元祖となるツールは1989年に開発されたUNIXアプリケーションの脆弱性テストツールと呼ばれています。
https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%B8%E3%83%B3%E3%82%B0
2019年2月にGoogleが「ClusterFuzz」というファジングツールをOSS化した事が記憶に新しいですが、
ファジングはシステムの脆弱性診断を行う上で必ず理解しなければいけない概念です。
https://github.com/google/clusterfuzz
※AppGoatではIPAが提供する「ファイルフォーマットファザー」というファジングツールを使います。実用性があるかと言われると微妙なので、平行して別ツールを探さないと技術は身に着かないかも・・・
ファイルフォーマットファザーを使った脆弱性診断体験
ファイルフォーマットファザーは、検証用のファイルを生成し検証対象を診断するツールです。
生成する検証用ファイルの仕様は以下
ファイル名の長さと圧縮データのサイズとExtra Fieldの長さで検証してくれる仕様の様で、一つ前の記事で書いた通り、バッファオーバーフロー対策が不要な言語であればそもそも不要なツールですね。
ただ、学習の過程でZipの仕様をまとめた資料が見つかったので学びはあったかなという所。
https://gist.github.com/ysakasin/2edf8d3bf55c6ebf63f82851e302b030
個人的なニーズが高まったら、ClusterFuzzを使ってみた系の記事を書こうかなという所・・・
とりあえず次回はFTPプロキシソフトの異常終了についてまとめます。