Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Goで学ぶ Fuzzing

TOC
September 07, 2022

Goで学ぶ Fuzzing

Let's Go Talk #3 で LT 登壇した際の資料
https://connehito.connpass.com/event/257000/

TOC

September 07, 2022
Tweet

More Decks by TOC

Other Decks in Programming

Transcript

  1. - 元々 go-fuzz というツールがあったが、Go 1.18 から標準で機能として追 加された - go-fuzz は今まで334個のバグを見つけている(すごい!)

    - 既存のツールよりも簡単に、ユニットテストと同じように書けることを目指し た - ref. Design Draft: First Class Fuzzing Go 1.18 で追加されたFuzzing
  2. 実際のコード例 - seed corpus と呼ばれる 「種になるデータ」を入れる。未 指定もできるがパターンがわ かっているなら指定した方が信 頼できそう。 -

    テスト部分はユニットテストと 同様にはできない場合がある (=入力を予測できない)。元 に戻せるテストだったり、エ ラーが起きたかどうかで確認 する。
  3. go-fuzz を使うと - func Fuzz(data []byte) int でテストデータ生成したり - `$

    go-fuzz-build` したり - `$ go-fuzz` したり と特有の処理、コマンドがあるっぽい
  4. 実際に実行すると - IDE だと GUI 上で -fuzz フ ラグをつけられて便利 -

    execs: 入力数。大量に実行 されていることがわかる - interesting: コードカバレッ ジが変化するような入力値。数 の増加は時間と共に鈍化。 実行
  5. - Design Draft: First Class Fuzzing - Go1.18から追加されたFuzzingとは - フューチャー技術ブログ

    - Go Fuzzingによるファジングテスト/ランダムテスト - 絶対に落とせない!友人の結婚式の余興用アプリケーションをエラーゼロ で突破した - M3 Tech Blog 参考