狠狠撸

狠狠撸Share a Scribd company logo
ファジングツールAFLの利用を支援するツールFuzz4Bによる
ファジング教育の試み
宮木 龍(名古屋大学)
○ 吉田 則裕(名古屋大学)
藤原 賢二(東京都市大)
高田 広章(名古屋大学)
? Fuzz4B開発者,TA
?担当講師の1人
1
https://github.com/Ryu-Miyaki/Fuzz4B
ファジングとは
ソフトウェアをクラッシュさせるように,
ファズ(テストケース)の生成を繰り返すこと
CUIのファジングツールが中心であり,
一般的ソフトウェア開発者が使用することは困難
2
Chrome ブラウザの欠陥16,000 個以上発見
Windows7の開発に利用 ? 数億円を節約 [1]
[1] M. Bohme, et al.: Fuzzing: Challenges and Reflections, IEEE Software, 2021
Fuzz4B(Fuzzing for Beginner)[2]
目的:代表的なファジングツールAFLを一般的な技術者が使えるように
すること
主な機能
? AFLのフロントエンドとしての機能
? AFLが検出した不具合を再現する機能
? 不具合を起こすファズを削減する機能
開発者向けのつもりであったが,
「教育目的に使えるのでは?」という意見があった
テストだけでなくデバッグも支援
[2] R. Miyaki, et al.: "Fuzz4B: A Front-End to AFL Not Only for Fuzzing Experts", A-TEST 2020
第一著者
が開発
3
4
関連研究:ソフトウェアテストの教育
? ソフトウェアテスト教育に関する論文を調査したサーベイ論文
[3]
? 調査対象は204本
? ソフトウェアテストのゲーミフィケーション [4]
? コンソーシアム型共同研究を通じたテスト教育 [5]
[2] V. Garousi, et al.: Software-testing education: A systematic literature mapping, JSS, 2020.
[3] 高澤ら:テスト貢献度に基づくゲーミフィケーションを用いた教育用ソフトウェアテストツー
ルの提案,情報処理学会第75回全国大会, 2013
[5] 森ら:コンソーシアム型共同研究を通じたソフトウェアテスト技術者の教育, 工学教育, 2011
ファジングの教育について報告した研究は存在しない.
本研究の概要
Fuzz4Bを用いて,ファジングからデバッグまでのプロセスを
経験してもらった結果を報告
? 受講生:ある国立大学の学部生4名
? 教育体制:
? 教員2名(うち一人は第二著者)
? TA1名(第一著者)
? 期間:1日あたり180分の講義 x 3日間
? 遠隔講義(Teamsを利用)
? 受講生は,自分自身が所有するPCを利用
? 画面共有でトラブル解決 5
講義の流れ(抜粋)
1. ソフトウェアテストに関する予習
2. ファジングとデバッグに関する講義
3. 演習A: Fuzz4Bのインストール?起動
4. 演習B: Fuzz4Bを用いたデバッグのハンズオンチュートリアル
5. 演習C: Fuzz4Bを用いたデバッグの演習
6. 演習D: GDBハンズオンチュートリアル
7. 演習E: Fuzz4BとGDBを用いたデバッグのハンズオンチュート
リアル
演習A?C, Eについて説明
6
演習A: Fuzz4Bのインストール?起動
? 教員による事前準備
? Fuzz4B等がインストールされた仮想マシンを作成した
? エミュレータ(QEMU)で仮想マシンを動作させるようにした
? 演習内容
1. 仮想マシンを起動
2. 欠陥を含むソースコードをコンパイル
3. 初期入力を作成
4. Fuzz4Bで不具合を検出
想定より低スペックのPCを使用した受講生がおり,
エミュレータのインストール等に時間を要した
7
演習B: Fuzz4Bを用いたデバッグのハンズオ
ンチュートリアル
? 目的:Fuzz4Bを利用してデバッグを経験する
? ハンズオン形式:遅れた学生が追いつくまで個別指導
? 対象プログラム:逆ポーランド記法で式を計算するプログラム
? ファジングを行うとゼロ除算エラーが発生し,クラッシュ
? Fuzz4Bのテストケース短縮機能の利用
? Fuzz4Bを用いると,ゼロ除算を表す短いファズが出力される
? 受講生は,クラッシュの原因がゼロ除算と気づくようにした
? 欠陥修正まで実施
? オペランドがゼロの場合の例外処理を追加
8
演習C: Fuzz4Bを用いたデバッグの演習
? 目的:演習Bと同じく,Fuzz4Bを利用してデバッグを経験する
? 形式:演習Bとは異なり,自力で取り組むように促す
? 当初は答えを教えない
? ある程度時間が経過したらヒントを与える
? 対象プログラム:文字列を辞書順にソートするプログラム
? 開きカッコのあとに,閉じカッコが来るとクラッシュするようなassert文
が埋め込んである
? プログラムが停止しないように修正
? エラーメッセージを表示した後に,正常終了させるように修正
9
演習E: Fuzz4BとGDBを用いたデバッグのハ
ンズオンチュートリアル
? 目的:Fuzz4BとGDBを用いたデバッグを経験させる
? 対象プログラム:簡単な自動応答システム
? 数値を入力すると,数値に応じたメッセージが出力させる
? 2を入力するとSegmentation Fault
? scanf関数の引数に与えるアドレス演算子&が不足
? 欠陥を含む行の特定
? Fuzz4Bの不具合を再現する機能とGDBのブレークポイントを使
用
? 欠陥修正まで実施
? アドレス演算子を追加 10
理解度確認テストの結果
設問1 設問2 設問3
受講生1 D C D
受講生2 A A C
受講生3 A A A
? ファジングとデバッグに関して,3つの設問を用意
? 設問1については,5段階で評価
? 設問2と3については,4段階で評価
? 第一著者と第二著者の採点が完全に一致
設問と採点基準は
予稿集P39に掲載
受講者間で
バラツキがあった
11
受講者アンケート
? 内容
? ファジングやデバッグ,デバッガに対する理解や興味
? リッカート尺度(5段階)
? 無記名
? 結果(詳細は予稿集P40)
? 全受講者が,ファジングやデバッグ,デバッガの全てについて
「まあまあ興味をもつことできた」と回答
? 受講者間で「理解できた」から「あまり理解できなかった」までバラついた
12
理解度確認テストの結果と一致
まとめ
? Fuzz4Bを用いて,ファジングからデバッグまでのプロセスを経験
させた結果を報告
? 演習A: Fuzz4Bのインストール?起動
? 演習B: Fuzz4Bを用いたデバッグのチュートリアル
? 演習C: Fuzz4Bを用いたデバッグの演習
? 演習E: Fuzz4BとGDBを用いたデバッグのチュートリアル
? 受講生の興味を引くことはできたが,理解度についてはバラツキ
があり,課題が残った.
13

More Related Content

Similar to ファジングツール础贵尝の利用を支援するツール贵耻锄锄4叠によるファジング教育の试み (17)

LibreOfficeの最新動向 - コミュニティとプロダクトの面から - / Current status of LibreOffice - Commu...
LibreOfficeの最新動向 - コミュニティとプロダクトの面から - / Current status of LibreOffice - Commu...LibreOfficeの最新動向 - コミュニティとプロダクトの面から - / Current status of LibreOffice - Commu...
LibreOfficeの最新動向 - コミュニティとプロダクトの面から - / Current status of LibreOffice - Commu...
Naruhiko Ogasawara
?
脱?勉強会宣言 @ 「勉強会主催者のための勉強会」
脱?勉強会宣言 @ 「勉強会主催者のための勉強会」脱?勉強会宣言 @ 「勉強会主催者のための勉強会」
脱?勉強会宣言 @ 「勉強会主催者のための勉強会」
Naruhiko Ogasawara
?
惭辞产笔谤辞驳谤补尘尘颈苍驳を体験してみよう!
惭辞产笔谤辞驳谤补尘尘颈苍驳を体験してみよう!惭辞产笔谤辞驳谤补尘尘颈苍驳を体験してみよう!
惭辞产笔谤辞驳谤补尘尘颈苍驳を体験してみよう!
Toshiyuki Ando
?
XP祭り2016 - SWチームとHWチームがスクラムを組んだら
XP祭り2016 - SWチームとHWチームがスクラムを組んだらXP祭り2016 - SWチームとHWチームがスクラムを組んだら
XP祭り2016 - SWチームとHWチームがスクラムを組んだら
Life Robotics
?
モブプログラミングを体験しよう at Agile Japan 2017 愛媛サテライト
モブプログラミングを体験しよう at Agile Japan 2017 愛媛サテライトモブプログラミングを体験しよう at Agile Japan 2017 愛媛サテライト
モブプログラミングを体験しよう at Agile Japan 2017 愛媛サテライト
Toshiyuki Ando
?
MobProgramming at クリエーションライン
MobProgramming at クリエーションラインMobProgramming at クリエーションライン
MobProgramming at クリエーションライン
Toshiyuki Ando
?
MobProgramming at ヴァル研究所 - 紹介
MobProgramming at ヴァル研究所 - 紹介MobProgramming at ヴァル研究所 - 紹介
MobProgramming at ヴァル研究所 - 紹介
Toshiyuki Ando
?
Lisp tutorの開発について
Lisp tutorの開発についてLisp tutorの開発について
Lisp tutorの開発について
Hiroki Noguchi
?
笔测迟丑辞苍开発环境构筑ハンズオンセミナー
笔测迟丑辞苍开発环境构筑ハンズオンセミナー笔测迟丑辞苍开発环境构筑ハンズオンセミナー
笔测迟丑辞苍开発环境构筑ハンズオンセミナー
地球人
?
Uno Platform か Blazor
Uno Platform か BlazorUno Platform か Blazor
Uno Platform か Blazor
Hiroyuki Mori
?
爆速机械学习サービス応用:実践编#测箩诲蝉飞1
爆速机械学习サービス応用:実践编#测箩诲蝉飞1爆速机械学习サービス応用:実践编#测箩诲蝉飞1
爆速机械学习サービス応用:実践编#测箩诲蝉飞1
驰补丑辞辞!デベロッパーネットワーク
?
Firefox OS and Open Web Board - IGGG Meetup 2015 Spring
Firefox OS and Open Web Board - IGGG Meetup 2015 SpringFirefox OS and Open Web Board - IGGG Meetup 2015 Spring
Firefox OS and Open Web Board - IGGG Meetup 2015 Spring
Gunma University
?
闯别苍办颈苍蝉を使おうよ
闯别苍办颈苍蝉を使おうよ闯别苍办颈苍蝉を使おうよ
闯别苍办颈苍蝉を使おうよ
Yohei Oda
?
Bot frameworkでdocomo Developer Supportを活用しよう
Bot frameworkでdocomo Developer Supportを活用しようBot frameworkでdocomo Developer Supportを活用しよう
Bot frameworkでdocomo Developer Supportを活用しよう
Shinya Nakajima
?
プロトタイピングツール投入のケーススタディ
プロトタイピングツール投入のケーススタディプロトタイピングツール投入のケーススタディ
プロトタイピングツール投入のケーススタディ
力也 伊原
?
海外メンバーを巻き込んで プロダクトマネジメントするときの心得 #pmjp #dots
海外メンバーを巻き込んでプロダクトマネジメントするときの心得 #pmjp #dots海外メンバーを巻き込んでプロダクトマネジメントするときの心得 #pmjp #dots
海外メンバーを巻き込んで プロダクトマネジメントするときの心得 #pmjp #dots
Takahiro Masaki
?
LibreOfficeの最新動向 - コミュニティとプロダクトの面から - / Current status of LibreOffice - Commu...
LibreOfficeの最新動向 - コミュニティとプロダクトの面から - / Current status of LibreOffice - Commu...LibreOfficeの最新動向 - コミュニティとプロダクトの面から - / Current status of LibreOffice - Commu...
LibreOfficeの最新動向 - コミュニティとプロダクトの面から - / Current status of LibreOffice - Commu...
Naruhiko Ogasawara
?
脱?勉強会宣言 @ 「勉強会主催者のための勉強会」
脱?勉強会宣言 @ 「勉強会主催者のための勉強会」脱?勉強会宣言 @ 「勉強会主催者のための勉強会」
脱?勉強会宣言 @ 「勉強会主催者のための勉強会」
Naruhiko Ogasawara
?
惭辞产笔谤辞驳谤补尘尘颈苍驳を体験してみよう!
惭辞产笔谤辞驳谤补尘尘颈苍驳を体験してみよう!惭辞产笔谤辞驳谤补尘尘颈苍驳を体験してみよう!
惭辞产笔谤辞驳谤补尘尘颈苍驳を体験してみよう!
Toshiyuki Ando
?
XP祭り2016 - SWチームとHWチームがスクラムを組んだら
XP祭り2016 - SWチームとHWチームがスクラムを組んだらXP祭り2016 - SWチームとHWチームがスクラムを組んだら
XP祭り2016 - SWチームとHWチームがスクラムを組んだら
Life Robotics
?
モブプログラミングを体験しよう at Agile Japan 2017 愛媛サテライト
モブプログラミングを体験しよう at Agile Japan 2017 愛媛サテライトモブプログラミングを体験しよう at Agile Japan 2017 愛媛サテライト
モブプログラミングを体験しよう at Agile Japan 2017 愛媛サテライト
Toshiyuki Ando
?
MobProgramming at クリエーションライン
MobProgramming at クリエーションラインMobProgramming at クリエーションライン
MobProgramming at クリエーションライン
Toshiyuki Ando
?
MobProgramming at ヴァル研究所 - 紹介
MobProgramming at ヴァル研究所 - 紹介MobProgramming at ヴァル研究所 - 紹介
MobProgramming at ヴァル研究所 - 紹介
Toshiyuki Ando
?
Lisp tutorの開発について
Lisp tutorの開発についてLisp tutorの開発について
Lisp tutorの開発について
Hiroki Noguchi
?
笔测迟丑辞苍开発环境构筑ハンズオンセミナー
笔测迟丑辞苍开発环境构筑ハンズオンセミナー笔测迟丑辞苍开発环境构筑ハンズオンセミナー
笔测迟丑辞苍开発环境构筑ハンズオンセミナー
地球人
?
Uno Platform か Blazor
Uno Platform か BlazorUno Platform か Blazor
Uno Platform か Blazor
Hiroyuki Mori
?
Firefox OS and Open Web Board - IGGG Meetup 2015 Spring
Firefox OS and Open Web Board - IGGG Meetup 2015 SpringFirefox OS and Open Web Board - IGGG Meetup 2015 Spring
Firefox OS and Open Web Board - IGGG Meetup 2015 Spring
Gunma University
?
闯别苍办颈苍蝉を使おうよ
闯别苍办颈苍蝉を使おうよ闯别苍办颈苍蝉を使おうよ
闯别苍办颈苍蝉を使おうよ
Yohei Oda
?
Bot frameworkでdocomo Developer Supportを活用しよう
Bot frameworkでdocomo Developer Supportを活用しようBot frameworkでdocomo Developer Supportを活用しよう
Bot frameworkでdocomo Developer Supportを活用しよう
Shinya Nakajima
?
プロトタイピングツール投入のケーススタディ
プロトタイピングツール投入のケーススタディプロトタイピングツール投入のケーススタディ
プロトタイピングツール投入のケーススタディ
力也 伊原
?
海外メンバーを巻き込んで プロダクトマネジメントするときの心得 #pmjp #dots
海外メンバーを巻き込んでプロダクトマネジメントするときの心得 #pmjp #dots海外メンバーを巻き込んでプロダクトマネジメントするときの心得 #pmjp #dots
海外メンバーを巻き込んで プロダクトマネジメントするときの心得 #pmjp #dots
Takahiro Masaki
?

More from Norihiro Yoshida (12)

Extracting a Micro State Transition Table Using KLEE
Extracting a Micro State Transition Table Using KLEEExtracting a Micro State Transition Table Using KLEE
Extracting a Micro State Transition Table Using KLEE
Norihiro Yoshida
?
A Quantitative Comparison of Coverage-Based Greybox Fuzzers
A Quantitative Comparison of Coverage-Based Greybox FuzzersA Quantitative Comparison of Coverage-Based Greybox Fuzzers
A Quantitative Comparison of Coverage-Based Greybox Fuzzers
Norihiro Yoshida
?
ソフトウェア開発における産学協創フォーラム オープニング資料ソフトウェア開発における産学協創フォーラム オープニング資料
ソフトウェア開発における産学協創フォーラム オープニング資料
Norihiro Yoshida
?
コードクローン 検出?変更管理ツール群の開発
コードクローン 検出?変更管理ツール群の開発コードクローン 検出?変更管理ツール群の開発
コードクローン 検出?変更管理ツール群の開発
Norihiro Yoshida
?
Proactive Clone Recommendation System for Extract Method Refactoring
 Proactive Clone Recommendation System for Extract Method Refactoring Proactive Clone Recommendation System for Extract Method Refactoring
Proactive Clone Recommendation System for Extract Method Refactoring
Norihiro Yoshida
?
Code Search Based on Deep Neural Network and Code Mutation
Code Search Based on Deep Neural Network and Code MutationCode Search Based on Deep Neural Network and Code Mutation
Code Search Based on Deep Neural Network and Code Mutation
Norihiro Yoshida
?
机械学习システムにおける技术的负债について
机械学习システムにおける技术的负债について机械学习システムにおける技术的负债について
机械学习システムにおける技术的负债について
Norihiro Yoshida
?
When, why and for whom do practitioners detect technical debts?: An experienc...
When, why and for whom do practitioners detect technical debts?: An experienc...When, why and for whom do practitioners detect technical debts?: An experienc...
When, why and for whom do practitioners detect technical debts?: An experienc...
Norihiro Yoshida
?
Revisiting the Relationship Between Code Smells and Refactoring
Revisiting the Relationship Between Code Smells and RefactoringRevisiting the Relationship Between Code Smells and Refactoring
Revisiting the Relationship Between Code Smells and Refactoring
Norihiro Yoshida
?
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...Mining the Modern Code Review Repositories: A Dataset of People, Process and ...
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...
Norihiro Yoshida
?
IWESEP 2013
IWESEP 2013IWESEP 2013
IWESEP 2013
Norihiro Yoshida
?
MSR2013
MSR2013MSR2013
MSR2013
Norihiro Yoshida
?
Extracting a Micro State Transition Table Using KLEE
Extracting a Micro State Transition Table Using KLEEExtracting a Micro State Transition Table Using KLEE
Extracting a Micro State Transition Table Using KLEE
Norihiro Yoshida
?
A Quantitative Comparison of Coverage-Based Greybox Fuzzers
A Quantitative Comparison of Coverage-Based Greybox FuzzersA Quantitative Comparison of Coverage-Based Greybox Fuzzers
A Quantitative Comparison of Coverage-Based Greybox Fuzzers
Norihiro Yoshida
?
ソフトウェア開発における産学協創フォーラム オープニング資料ソフトウェア開発における産学協創フォーラム オープニング資料
ソフトウェア開発における産学協創フォーラム オープニング資料
Norihiro Yoshida
?
コードクローン 検出?変更管理ツール群の開発
コードクローン 検出?変更管理ツール群の開発コードクローン 検出?変更管理ツール群の開発
コードクローン 検出?変更管理ツール群の開発
Norihiro Yoshida
?
Proactive Clone Recommendation System for Extract Method Refactoring
 Proactive Clone Recommendation System for Extract Method Refactoring Proactive Clone Recommendation System for Extract Method Refactoring
Proactive Clone Recommendation System for Extract Method Refactoring
Norihiro Yoshida
?
Code Search Based on Deep Neural Network and Code Mutation
Code Search Based on Deep Neural Network and Code MutationCode Search Based on Deep Neural Network and Code Mutation
Code Search Based on Deep Neural Network and Code Mutation
Norihiro Yoshida
?
机械学习システムにおける技术的负债について
机械学习システムにおける技术的负债について机械学习システムにおける技术的负债について
机械学习システムにおける技术的负债について
Norihiro Yoshida
?
When, why and for whom do practitioners detect technical debts?: An experienc...
When, why and for whom do practitioners detect technical debts?: An experienc...When, why and for whom do practitioners detect technical debts?: An experienc...
When, why and for whom do practitioners detect technical debts?: An experienc...
Norihiro Yoshida
?
Revisiting the Relationship Between Code Smells and Refactoring
Revisiting the Relationship Between Code Smells and RefactoringRevisiting the Relationship Between Code Smells and Refactoring
Revisiting the Relationship Between Code Smells and Refactoring
Norihiro Yoshida
?
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...Mining the Modern Code Review Repositories: A Dataset of People, Process and ...
Mining the Modern Code Review Repositories: A Dataset of People, Process and ...
Norihiro Yoshida
?

ファジングツール础贵尝の利用を支援するツール贵耻锄锄4叠によるファジング教育の试み