Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Goで学ぶ Fuzzing
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
TOC
September 07, 2022
Programming
320
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Goで学ぶ Fuzzing
Let's Go Talk #3 で LT 登壇した際の資料
https://connehito.connpass.com/event/257000/
TOC
September 07, 2022
More Decks by TOC
See All by TOC
仮説→実験→検証→学び... プロダクト開発を前に進めるためにMobius Outcome Deliveryを学び 実践していること
toc0522
3
4.2k
ファシリテーションLT ~良いファシリテーションをするために~
toc0522
0
570
もっと快適に! デプロイフロー改善への道!
toc0522
0
950
Go で Golden File Test
toc0522
1
1.3k
Other Decks in Programming
See All in Programming
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
150
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.1k
Simple Storage Service(S3) is not simple
iwatsukayura
0
260
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
160
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
570
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
630
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
22
22k
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
330
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
160
wkhtmltopdfの次どうするか問題2026
willnet
2
1.9k
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
200
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
RailsConf 2023
tenderlove
30
1.6k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Deep Space Network (abreviated)
tonyrice
0
360
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Everyday Curiosity
cassininazir
0
350
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
280
Transcript
2022/09/07 Let’s Go Talk #3 TOC Goで学ぶ Fuzzing
- TOC - コネヒト株式会社 - バックエンドエンジニア - 主にPHP - Go
は趣味で勉強中 自己紹介
- 入力されうるテストケースを大量に入力し、挙動を確認するテスト手法 - 意図しないデータが入力されたときに、挙動を調べることで不具合・脆弱 性の確認を行う - 想定外のデータを`ファズ`というらしい - テストをする立場だと、自分に都合のいいテストデータを選びがちである が、バイアスのかからないテストデータを利用できる
Fuzzingってなに?
- 元々 go-fuzz というツールがあったが、Go 1.18 から標準で機能として追 加された - go-fuzz は今まで334個のバグを見つけている(すごい!)
- 既存のツールよりも簡単に、ユニットテストと同じように書けることを目指し た - ref. Design Draft: First Class Fuzzing Go 1.18 で追加されたFuzzing
実際のコード例 - seed corpus と呼ばれる 「種になるデータ」を入れる。未 指定もできるがパターンがわ かっているなら指定した方が信 頼できそう。 -
テスト部分はユニットテストと 同様にはできない場合がある (=入力を予測できない)。元 に戻せるテストだったり、エ ラーが起きたかどうかで確認 する。
ユニットテストと比較
go-fuzz を使うと - func Fuzz(data []byte) int でテストデータ生成したり - `$
go-fuzz-build` したり - `$ go-fuzz` したり と特有の処理、コマンドがあるっぽい
実際に実行すると - IDE だと GUI 上で -fuzz フ ラグをつけられて便利 -
execs: 入力数。大量に実行 されていることがわかる - interesting: コードカバレッ ジが変化するような入力値。数 の増加は時間と共に鈍化。 実行
実際に実行すると - 失敗したテストケースは別 ファイルと記録される - 次回テストするときのテスト データとして用いられる - これも個別実行できるので デバッグに便利!
- Go 標準の Fuzzing は既存のユニットテストっぽく書けるので学習コスト が小さそう - 自身のバイアスに囚われない、信頼できるテストケースを見つけられそう - Design
Draft: First Class Fuzzing で思想を知るのは面白いので、他 のも見てみたい まとめ
- Design Draft: First Class Fuzzing - Go1.18から追加されたFuzzingとは - フューチャー技術ブログ
- Go Fuzzingによるファジングテスト/ランダムテスト - 絶対に落とせない!友人の結婚式の余興用アプリケーションをエラーゼロ で突破した - M3 Tech Blog 参考