瀏覽器Fuzz技術
漏洞挖掘
白盒挖掘
程式碼審計
自動化程式碼分析
黑盒挖掘
Fuzzing
兩種Fuzzing技術
靜態Fuzzing
動態Fuzzing
Fuzzing框架
Fuzzing工具
- CrossFuzz
- ndujaFuzz
- NodeFuzz
- X-Fuzzer
- jsFunFuzz
重點是測試用例的重建、Crash樣本的捕獲
怎麼動手寫Fuzzing工具
策略
資料VS關係
資料型別朝向VS邏輯朝向
程式碼路徑覆蓋率->瀏覽器狀態覆蓋率
- DOM Tree狀態
- 渲染森林狀態
- 佈局狀態
- 事件控制程式碼狀態
- 多頁面狀態
規範標準
最終的指導
邏輯元素->各個字典(見下)->規範標準和指導
- 基礎字典
- property字典
- 函式字典
- Style字典
目標
UAF漏洞
構造->Fuzz->Free->Use
釋放的節點->無引用
Traverse Node 橫穿節點??
1.儲存引用(id[idex])
2.DOM實現(document.all[index])
節點引用
1.caching
2.clearing tree node
3.遞迴清除子樹
Get Property
1.動態獲取
- ProperTies
- FuncTions
- Events
2.快取Caching
3.for...in
4.typeof
Fuzz Property
1.smart values->specification
2.random values->no dictionary
Fuzz Function
Functional programming + eval()
DOM Tree構造
- Base DOM Tree
- random nodes
- 隨機樹生成演算法
- for loop
- document.createElement
- node.appendChild

- Smarter structure
- Form
- Table
- Map
- List
- Audio
- Video
Svg
- Network
- XMLHttpRequest
WebSocket
Prelude
Fuzzing
- DOM Node
- ProperTes
- Functions
Styles
Return value -> Fuzzing list
- Fuzzing Values
- Normal
- Dirty
- Random
Return
- Force Layout
Node.offsetParent
- Clear DOM SubTree
- innerHTML
- outerHTML
- innerText
outerText
- Clear whole DOM Tree
- write
- writeln
- open
documentElement.innerHTML
- DOM Tree Modify
- appendChild
- insertBefore
- insertAdjacentElement
- insertAdjacentHTML
- insertAdjacentText
- removeChild
- replaceChild
cloneNode
Special node manipulate
- Group manipulate
execCommand
- Multiple pages
- Mutual manipulate
Mutual clear
- setTimeout
Disrupt the Tme sequence
- Garbage Collect
Force IE Memory Protector to reclaim
####Finale
- GC
- Reuse all elements
- Properties
- Functions
- Styles
- Reuse group
- Reuse special nodes
- Reuse funcTon return values
Ditionary
透過準確性和完整性來判斷字典的好壞。
字典->規範
- 規範
- Scripts(or grep + sed)
- Manual
擴充套件性
- 新東西
- 地理位置
- 客戶端資料庫
- Canvas
- Blobs
- 語音合成
規範+智慧的值=字典
評估一種Fuzz方法的好壞要看它的結果。
- 漏洞
- UAF
- Double Free
OOB
- Bug
- 空指標引用
棧上溢
Event Handle
Summary
Fuzzing = Programming + Specification reading + Vulnerabilities’ characteristic collecting + Ideas