SlideShare uma empresa Scribd logo
1 de 20
ファジング
2021年3月5日 06:30 PM
安藤類央
ファジングとは?
• 脆弱性検査・バグハンティングの手法の1つ
• 対象となるソフトウェア・システムのエラーの条件、つまり、
製品の欠陥を引き起こすことを期待して、不正なデータをわざ
と製品に送り付けるプロセス
• 従来はWEBの脆弱性検査に使うことが多々あったが、最近の
ファジングの適用領域は組み込みシステム、車載システム、電
力システムにも広がっている。
脆弱性検査
• ホワイトボックステスト
ソースコード検査
• ブラックボックステスト
ファジング
• グレーボックステスト
リバースエンジニアリング
脆弱性(ぜいじゃくせ
い)とは、コンピュー
タのOSやソフトウェ
アにおいて、プログラ
ムの不具合や設計上の
ミスが原因となって発
生した情報セキュリ
ティ上の欠陥のことを
言います。 脆弱性は、
セキュリティホールと
も呼ばれます。
ファジングの対象
• 実行ファイル(バイナリ)
バッファオーバーフロー
整数オーバーフロー
Use-After-Free
• WEBアプリケーション
SQLインジェクション
SSRF (サーバサイドリクエストフォージェリ)
ディレクトリトラバーサル
ファジングのツール
❐ AFL – 突然変型のファズを生成
❐【未使用】Triforce AFL – AFLの拡張版
OSのカーネルにも使える?
❐【未使用】Defensix – 組み込みシステム向け?
最小限のファジング
while [1]; do cat /dev/urandom | nc –vv target port; done
LinuxのUramdomデバイスからランダムデータを読み込み、
Netcatを使ってランダムデータをターゲットとポートに送る操作を
Whileループを使ってユーザが止めるまで続ける。
この方法によって、ミッションクリティカルがソフトウェアのバグが
結構見つかっている。
このテクニックでスタックを破壊すると、読み出しスタックが壊れる
ので、デバッガやディスアセンブラの併用は難しい。
デバッガはファジングに使えるか?
“デバッガを利用してターゲットの監視を検討するとき、1つの
大きな落とし穴があります。ほとんどのデバッガは対話型の利用
を前提にしているので、既存のデバッガをプログラマティックに
制御して、役立つ情報を自動抽出する状況は多くありません。”
“デバッガを使って最終的に求めることは、ファズツールへの手
動のチェックインと、デバッガが例外を認識したときのプロセス
の再スタートです。”
- ファジング:ブルートフォースによる脆弱性発見手法
ファジングのフェーズ 1
ターゲットの特定
入力の特定
ファズデータの生成
ファズデータの実行
例外の監視
攻撃可能性の判定
1. 開発中のアプリケーション
2. サードパーティ製アプリケーション
サードパーティ製アプリケーションの
場合、過去の脆弱性などをチェックする
アプリケーションを選択した場合、
さらにアプリケーション内の特定の
ファイルやライブラリをチェックする
ファジングの6つの
フェーズ
ファジングのフェーズ 2
ターゲットの特定
入力の特定
ファズデータの生成
ファズデータの実行
例外の監視
攻撃可能性の判定
不正に入力される脆弱性は、サニタイズ
や検査ルーチンの適用を行わずに入力
されたデータを処理することで生じる
入力ベクトルを列挙することは、
ファジングを成功させるために極めて
重要
入力ベクトルの例
onAbort / onBlur / onChange
SCRIPT SRC=
Dictionary of Attack Patterns
https://github.com/fuzzdb-project/fuzzdb
ファジングのフェーズ 3
ターゲットの特定
入力の特定
ファズデータの生成
ファズデータの実行
例外の監視
攻撃可能性の判定
入力ベクトルを限定したら、
ファズデータを生成する。
データの生成
定義済みの値を使う
既存データを変異させる
動的にデータを生成する
ファズの生成方法3種類
• 事前用意型 あらかじめファズを用意しておき、それらを1つ
ずつファズの入力として使う。テストの再現性が高いが、ファ
ズを用意する手間がかかる。
• ランダム型 ファズをその都度ランダムに生成する。ファズを
用意する手間がかからないが、再現性が低い(原因を突き止め
にくい)
• 突然変異型 あらかじめ用意した初期値に対して次々と変更を
加えながらファジングを行う。AFLで使われる。
ファジングのフェーズ 4
ターゲットの特定
入力の特定
ファズデータの生成
ファズデータの実行
例外の監視
攻撃可能性の判定
実行の形態
ターゲットにパケットを送る
ファイルを開く
ターゲットプロセスを起動する
ファジングのフェーズ 5
ターゲットの特定
入力の特定
ファズデータの生成
ファズデータの実行
例外の監視
攻撃可能性の判定
例外の監視
10000個のファズパケットを
ターゲットのWEBサーバに送り、
最終的にサーバをクラッシュさせた後、
クラッシュを招いたパケットを
正確に特定する。
ファジングのフェーズ 6
ターゲットの特定
入力の特定
ファズデータの生成
ファズデータの実行
例外の監視
攻撃可能性の判定
攻撃可能性の判定
監査の目標によっては、欠陥が認識
されたあとで、見つかったバグがさらに
攻撃されるかも判定しないといけない。
応用
coverage-based fuzzing / gray-box fuzzing
❐ グレーボックステストではない
❐ ある入力でプログラムを実行したときのコードカバレッジを
測定し,その情報を利用して次の入力を決定
❐ 代表的なものに、American Fuzzy Lop (AFL)がある
ファジング実践資料(AFL編)
https://www.ipa.go.jp/files/000081408.pdf
#include <stdio.h>
#include <string.h>
void process_password()
{
char enterpassword[2];
printf("Do you want to enter a password?:");
scanf("%s", enterpassword);
if(strcmp(enterpassword, "N") == 0)
return;
printf("You entered:");
printf(enterpassword);
printf("n");
char password[256];
printf("Enter you password:");
scanf("%s", password);
if(strcmp(password, "S3cr3tP@ssw0rd!") == 0)
{
printf("Correct!n");
}
else
{
printf("Incorrect.n");
}
}
int main(int argc, char** argv)
{
process_password();
return 0;
}
コードカバレッジ
Directed Greybox Fuzzingと深層学習
❏In this paper, we introduce Directed Greybox Fuzzing (DGF) which generates inputs with
the objective of reaching a given set of target program locations efficiently.
“Directed Greybox Fuzzing” – CCS17
❏In this paper, we propose a deep-learning-based approach to predict the reachability of
inputs (i.e., miss the target or not) before executing the target program, helping DGF
(directed grey-box fuzzing) filtering out the unreachable ones to boost the performance
of fuzzing.
“FuzzGuard: Filtering out Unreachable Inputs in Directed Grey-box Fuzzing through Deep
Learning” – Usenix Security 2019
Demo
https://github.com/google/AFL
2003 gcc test.c
2004 afl-gcc ./test.c
2007 afl-fuzz -i ./afl_in/ -o ./afl_out/ ./a.out
https://x9security.com/fuzzing-explained-with-afl/

Mais conteúdo relacionado

Semelhante a ファジングの解説

Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめJenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめatsushi_tmx
 
クラウド接続した医療機器のサイバーセキュリティ対策
クラウド接続した医療機器のサイバーセキュリティ対策クラウド接続した医療機器のサイバーセキュリティ対策
クラウド接続した医療機器のサイバーセキュリティ対策Eiji Sasahara, Ph.D., MBA 笹原英司
 
Secure architecting on OCI (Oracle Cloud Infrastructure) 2021年3月16日
Secure architecting on OCI (Oracle Cloud Infrastructure) 2021年3月16日Secure architecting on OCI (Oracle Cloud Infrastructure) 2021年3月16日
Secure architecting on OCI (Oracle Cloud Infrastructure) 2021年3月16日Masanori KAMAYAMA
 
ソースコード検査に耐えるコードとは?
ソースコード検査に耐えるコードとは?ソースコード検査に耐えるコードとは?
ソースコード検査に耐えるコードとは?Yasuo Ohgaki
 
アプリケーションのシフトレフトを実践するには
アプリケーションのシフトレフトを実践するにはアプリケーションのシフトレフトを実践するには
アプリケーションのシフトレフトを実践するにはRiotaro OKADA
 
ITPro Expo 2014: クラウド統合基盤 ソリューション ~ VMware/Cisco/EMC 統合基盤 VBlock ~
ITPro Expo 2014: クラウド統合基盤 ソリューション ~ VMware/Cisco/EMC 統合基盤 VBlock ~ITPro Expo 2014: クラウド統合基盤 ソリューション ~ VMware/Cisco/EMC 統合基盤 VBlock ~
ITPro Expo 2014: クラウド統合基盤 ソリューション ~ VMware/Cisco/EMC 統合基盤 VBlock ~シスコシステムズ合同会社
 
脆弱性もバグ、だからテストしよう DevSummiFukuoka
脆弱性もバグ、だからテストしよう DevSummiFukuoka脆弱性もバグ、だからテストしよう DevSummiFukuoka
脆弱性もバグ、だからテストしよう DevSummiFukuokaichikaway
 
高信頼性を確保するソフトウェア開発手法と実践 -組込み製品の潜在的価値を今以上に高めるために-
高信頼性を確保するソフトウェア開発手法と実践-組込み製品の潜在的価値を今以上に高めるために-高信頼性を確保するソフトウェア開発手法と実践-組込み製品の潜在的価値を今以上に高めるために-
高信頼性を確保するソフトウェア開発手法と実践 -組込み製品の潜在的価値を今以上に高めるために-Yoshio SAKAI
 
ディペンダブルなクラウドコンピューティング基盤を目指して
ディペンダブルなクラウドコンピューティング基盤を目指してディペンダブルなクラウドコンピューティング基盤を目指して
ディペンダブルなクラウドコンピューティング基盤を目指してKazuhiko Kato
 
2013年の最新セキュリティ課題に組織的に対応するには?
2013年の最新セキュリティ課題に組織的に対応するには?2013年の最新セキュリティ課題に組織的に対応するには?
2013年の最新セキュリティ課題に組織的に対応するには?itforum-roundtable
 
なぜ自社で脆弱性診断を行うべきなのか
なぜ自社で脆弱性診断を行うべきなのかなぜ自社で脆弱性診断を行うべきなのか
なぜ自社で脆弱性診断を行うべきなのかSen Ueno
 
202005 log analyse
202005 log analyse202005 log analyse
202005 log analyseSAKURUG co.
 

Semelhante a ファジングの解説 (14)

Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめJenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
 
クラウド接続した医療機器のサイバーセキュリティ対策
クラウド接続した医療機器のサイバーセキュリティ対策クラウド接続した医療機器のサイバーセキュリティ対策
クラウド接続した医療機器のサイバーセキュリティ対策
 
Secure architecting on OCI (Oracle Cloud Infrastructure) 2021年3月16日
Secure architecting on OCI (Oracle Cloud Infrastructure) 2021年3月16日Secure architecting on OCI (Oracle Cloud Infrastructure) 2021年3月16日
Secure architecting on OCI (Oracle Cloud Infrastructure) 2021年3月16日
 
ソースコード検査に耐えるコードとは?
ソースコード検査に耐えるコードとは?ソースコード検査に耐えるコードとは?
ソースコード検査に耐えるコードとは?
 
アプリケーションのシフトレフトを実践するには
アプリケーションのシフトレフトを実践するにはアプリケーションのシフトレフトを実践するには
アプリケーションのシフトレフトを実践するには
 
ITPro Expo 2014: クラウド統合基盤 ソリューション ~ VMware/Cisco/EMC 統合基盤 VBlock ~
ITPro Expo 2014: クラウド統合基盤 ソリューション ~ VMware/Cisco/EMC 統合基盤 VBlock ~ITPro Expo 2014: クラウド統合基盤 ソリューション ~ VMware/Cisco/EMC 統合基盤 VBlock ~
ITPro Expo 2014: クラウド統合基盤 ソリューション ~ VMware/Cisco/EMC 統合基盤 VBlock ~
 
脆弱性もバグ、だからテストしよう DevSummiFukuoka
脆弱性もバグ、だからテストしよう DevSummiFukuoka脆弱性もバグ、だからテストしよう DevSummiFukuoka
脆弱性もバグ、だからテストしよう DevSummiFukuoka
 
高信頼性を確保するソフトウェア開発手法と実践 -組込み製品の潜在的価値を今以上に高めるために-
高信頼性を確保するソフトウェア開発手法と実践-組込み製品の潜在的価値を今以上に高めるために-高信頼性を確保するソフトウェア開発手法と実践-組込み製品の潜在的価値を今以上に高めるために-
高信頼性を確保するソフトウェア開発手法と実践 -組込み製品の潜在的価値を今以上に高めるために-
 
ディペンダブルなクラウドコンピューティング基盤を目指して
ディペンダブルなクラウドコンピューティング基盤を目指してディペンダブルなクラウドコンピューティング基盤を目指して
ディペンダブルなクラウドコンピューティング基盤を目指して
 
2013年の最新セキュリティ課題に組織的に対応するには?
2013年の最新セキュリティ課題に組織的に対応するには?2013年の最新セキュリティ課題に組織的に対応するには?
2013年の最新セキュリティ課題に組織的に対応するには?
 
なぜ自社で脆弱性診断を行うべきなのか
なぜ自社で脆弱性診断を行うべきなのかなぜ自社で脆弱性診断を行うべきなのか
なぜ自社で脆弱性診断を行うべきなのか
 
202005 log analyse
202005 log analyse202005 log analyse
202005 log analyse
 
Zero trust
Zero trustZero trust
Zero trust
 
Software Test Basic
Software Test BasicSoftware Test Basic
Software Test Basic
 

Mais de Ruo Ando

KISTI-NII Joint Security Workshop 2023.pdf
KISTI-NII Joint Security Workshop 2023.pdfKISTI-NII Joint Security Workshop 2023.pdf
KISTI-NII Joint Security Workshop 2023.pdfRuo Ando
 
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤Ruo Ando
 
解説#86 決定木 - ss.pdf
解説#86 決定木 - ss.pdf解説#86 決定木 - ss.pdf
解説#86 決定木 - ss.pdfRuo Ando
 
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座 ~アイドル戦略に見るDXを専門家が徹底解説~
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座  ~アイドル戦略に見るDXを専門家が徹底解説~SaaSアカデミー for バックオフィス アイドルと学ぶDX講座  ~アイドル戦略に見るDXを専門家が徹底解説~
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座 ~アイドル戦略に見るDXを専門家が徹底解説~Ruo Ando
 
解説#83 情報エントロピー
解説#83 情報エントロピー解説#83 情報エントロピー
解説#83 情報エントロピーRuo Ando
 
解説#82 記号論理学
解説#82 記号論理学解説#82 記号論理学
解説#82 記号論理学Ruo Ando
 
解説#81 ロジスティック回帰
解説#81 ロジスティック回帰解説#81 ロジスティック回帰
解説#81 ロジスティック回帰Ruo Ando
 
解説#74 連結リスト
解説#74 連結リスト解説#74 連結リスト
解説#74 連結リストRuo Ando
 
解説#76 福岡正信
解説#76 福岡正信解説#76 福岡正信
解説#76 福岡正信Ruo Ando
 
解説#77 非加算無限
解説#77 非加算無限解説#77 非加算無限
解説#77 非加算無限Ruo Ando
 
解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレス解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレスRuo Ando
 
解説#78 誤差逆伝播
解説#78 誤差逆伝播解説#78 誤差逆伝播
解説#78 誤差逆伝播Ruo Ando
 
解説#73 ハフマン符号
解説#73 ハフマン符号解説#73 ハフマン符号
解説#73 ハフマン符号Ruo Ando
 
【技術解説20】 ミニバッチ確率的勾配降下法
【技術解説20】 ミニバッチ確率的勾配降下法【技術解説20】 ミニバッチ確率的勾配降下法
【技術解説20】 ミニバッチ確率的勾配降下法Ruo Ando
 
【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-freeRuo Ando
 
ITmedia Security Week 2021 講演資料
ITmedia Security Week 2021 講演資料 ITmedia Security Week 2021 講演資料
ITmedia Security Week 2021 講演資料 Ruo Ando
 
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月Ruo Ando
 
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰Ruo Ando
 
Intel Trusted Computing Group 1st Workshop
Intel Trusted Computing Group 1st WorkshopIntel Trusted Computing Group 1st Workshop
Intel Trusted Computing Group 1st WorkshopRuo Ando
 
情報セキュリティと標準化I 第15回
情報セキュリティと標準化I 第15回情報セキュリティと標準化I 第15回
情報セキュリティと標準化I 第15回Ruo Ando
 

Mais de Ruo Ando (20)

KISTI-NII Joint Security Workshop 2023.pdf
KISTI-NII Joint Security Workshop 2023.pdfKISTI-NII Joint Security Workshop 2023.pdf
KISTI-NII Joint Security Workshop 2023.pdf
 
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤
Gartner 「セキュリティ&リスクマネジメントサミット 2019」- 安藤
 
解説#86 決定木 - ss.pdf
解説#86 決定木 - ss.pdf解説#86 決定木 - ss.pdf
解説#86 決定木 - ss.pdf
 
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座 ~アイドル戦略に見るDXを専門家が徹底解説~
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座  ~アイドル戦略に見るDXを専門家が徹底解説~SaaSアカデミー for バックオフィス アイドルと学ぶDX講座  ~アイドル戦略に見るDXを専門家が徹底解説~
SaaSアカデミー for バックオフィス アイドルと学ぶDX講座 ~アイドル戦略に見るDXを専門家が徹底解説~
 
解説#83 情報エントロピー
解説#83 情報エントロピー解説#83 情報エントロピー
解説#83 情報エントロピー
 
解説#82 記号論理学
解説#82 記号論理学解説#82 記号論理学
解説#82 記号論理学
 
解説#81 ロジスティック回帰
解説#81 ロジスティック回帰解説#81 ロジスティック回帰
解説#81 ロジスティック回帰
 
解説#74 連結リスト
解説#74 連結リスト解説#74 連結リスト
解説#74 連結リスト
 
解説#76 福岡正信
解説#76 福岡正信解説#76 福岡正信
解説#76 福岡正信
 
解説#77 非加算無限
解説#77 非加算無限解説#77 非加算無限
解説#77 非加算無限
 
解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレス解説#1 C言語ポインタとアドレス
解説#1 C言語ポインタとアドレス
 
解説#78 誤差逆伝播
解説#78 誤差逆伝播解説#78 誤差逆伝播
解説#78 誤差逆伝播
 
解説#73 ハフマン符号
解説#73 ハフマン符号解説#73 ハフマン符号
解説#73 ハフマン符号
 
【技術解説20】 ミニバッチ確率的勾配降下法
【技術解説20】 ミニバッチ確率的勾配降下法【技術解説20】 ミニバッチ確率的勾配降下法
【技術解説20】 ミニバッチ確率的勾配降下法
 
【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free【技術解説4】assertion failureとuse after-free
【技術解説4】assertion failureとuse after-free
 
ITmedia Security Week 2021 講演資料
ITmedia Security Week 2021 講演資料 ITmedia Security Week 2021 講演資料
ITmedia Security Week 2021 講演資料
 
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
AI(機械学習・深層学習)との協働スキルとOperational AIの事例紹介 @ ビジネス+ITセミナー 2020年11月
 
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
【AI実装4】TensorFlowのプログラムを読む2 非線形回帰
 
Intel Trusted Computing Group 1st Workshop
Intel Trusted Computing Group 1st WorkshopIntel Trusted Computing Group 1st Workshop
Intel Trusted Computing Group 1st Workshop
 
情報セキュリティと標準化I 第15回
情報セキュリティと標準化I 第15回情報セキュリティと標準化I 第15回
情報セキュリティと標準化I 第15回
 

ファジングの解説