2010-09-27 28 views
17

我有興趣瞭解用於發現漏洞的技術。我知道緩衝區溢出的理論,格式化字符串漏洞,ecc,我也寫了一些。但我仍然不知道如何以有效的方式找到漏洞。在軟件中查找漏洞

我不想找一個魔杖,我只是在尋找最常見的技術,我認爲看起來整個來源是一個承認你有權訪問源的項目的史詩般的工作。嘗試手動模糊輸入也不太舒服。所以我想知道一些有用的工具。

E.g.

我不知道開發團隊如何快速找到越獄iPhone的漏洞。 他們沒有源代碼,他們不能執行程序,並且由於有少量的默認程序,所以我不期望有大量的安全漏洞。那麼如何快速找到這種漏洞 ?

預先感謝您。

回答

3

在較低層上,手動檢查內存可能非常明顯。你當然可以用像Visual Studio這樣的工具來查看內存,我會想象有人甚至寫了一個工具,根據它執行的指令和它放入內存的數據結構粗略地重建應用程序。

在網絡上,我通過簡單地顛倒操作發生的順序(例如,在線交易)發現了很多與順序相關的漏洞。由於服務器是有狀態的,但客戶端是無狀態的,因此您可以通過模擬不同的順序來快速利用設計不佳的進程。

至於發現的速度:我認爲數量往往勝過光明......把一個軟件,甚至是一個好的軟件,交給一百萬個無聊/好奇/有動力的人手中,漏洞肯定會是發現。產品出門是一種巨大的衝擊。

0

除了緩衝區溢出和格式化字符串漏洞攻擊之外,您可能還想讀一下代碼注入。 (很多你會遇到的將是與網絡/數據庫相關的,但深入挖掘)AFAIK這是越獄iThingies的巨大力量。 Saurik的移動襯底允許(-ed?)加載第三方.dylibs,並調用其中包含的任何代碼。

2

有沒有有效的方法來做到這一點,因爲公司花費大量資金來生產和維護安全軟件。理想情況下,他們在保護軟件方面的工作不是從尋找最終產品中的漏洞開始的;當軟件出局時,已經根除了很多的病毒。

回到你的問題:這將取決於你有什麼(工作二進制文件,完整/部分源代碼等)。另一方面,它沒有發現任何漏洞,但包括那些數據(例如那些審計客戶或軟件所有者)。對?

這將幫助您瞭解您需要擔心的輸入和功能。一旦你定位了這些,你可能已經有了軟件質量的感覺:如果它不是很好,那麼可能模糊會發現你一些錯誤。否則,您需要開始瞭解這些函數以及在代碼中如何使用輸入以瞭解代碼是否可以被任何方式顛覆。

有些經驗可以幫助您衡量在每項任務中投入多少努力以及何時推進。例如,如果您看到一些不正確的做法正在使用,那就深入研究一下。如果你看到從頭開始加密,深入研究。等