隨著資訊產業的興起,資訊安全的議題也逐漸被人們重視,除了透過人工的方式如逆向、code review 找出程式漏洞之外,自動化的方法如模糊測試 (Fuzzing) 也越來越多人研究。模糊測試的概念在很早期就已經被提出,原理也能輕易猜到:想辦法產生一組輸入能讓程式在讀取後 crash,並且從一開始的黑箱測試,輸入皆隨機產生,到後來灰箱測試,透過分析該次輸入在程式執行的狀態來增進後續輸入的品質。本次我想藉由鐵人賽與各位介紹模糊測試,前期著重於概念與原理,中期帶到實作與分析,後期會分享近期模糊測試的研究方向,統整相關論文貢獻以及要改善的現況。
俗稱的 feedback-driven fuzzer 是指 fuzzer 並非漫無目的的隨機輸入與 mutation,而是透過執行結果的好壞來引導下次產生或挑選...
Binary-only program 在沒有 source code 的情況下,binary-only fuzzing 是取得 coverage 的方法大概可...
今天會介紹使用 fuzzer 如何使用 Intel Pin 與 QEMU 在動態期間做插樁,藉此取得程式執行的 coverage。 Dynamic binary...
昨天介紹了 AFL 的 QEMU mode 以及 Intel Pin,讓使用者可以在沒有原始碼的情況下蒐集 coverage,今天要介紹的是 Dynamorio...
前面幾天介紹的幾種對於 binary-only program 做 fuzzing 方法都能夠做大方向的分類,而今天要介紹的方法都不太能分到前面兩種,因此特別拿...
這兩天主要會介紹污點分析 (taint analysis) 跟符號執行 (symbolic execution),前者可以知道資料的走向並作分析,後者可以算出如...
程式當中充斥許多 if-else condition,這些條件判斷使得程式在不同的情況下有不同的處理方式,而每個 condition 都是將各個變數的比較做組合...
Link time optimization (LTO) 的功能如同他的名字 (self-explanatory),就是在將各個 object file 鏈結起...
校驗碼 (checksum) 被用來檢測資料的完整性,魔術數字 (magic number) 被用來偵測特定格式的資料,當這兩種類型的檢查出現在程式當中,會讓總...
Seed selection 指的是 fuzzer 從 input queue 當中挑選 input 的行為,而 fuzzer 會先挑哪個 input 是由 i...