压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

NSC2013 中國網絡安全大會分會場一 梅瑞

主持人:最后一個報告有請學界的人士,北大軟件安全研究小組組長梅瑞老師來給大家做一個關于漏洞挖掘新技術探索的報告,大家歡迎。

梅瑞:今天我與各位專家和同行一塊探討一下關于漏洞挖掘方面的一些經驗的分享。

團隊使用的漏洞挖掘技術,1995年Peter? Neumann就提出除人為破壞之外計算機安全問題的9大原因,這些不安全因素也導致安全漏洞的存在具有必然性和普通性這兩種特性。

隨著互聯網的發展,安全環境日益復雜,軟件安全漏洞已經成為攻防雙方博弈的核心問題之一。包括工控設備的安全,大數據的安全,還包括之前幾位專家知道APT,我認為落到實處都要靠漏洞。

美國的一位學者以前曾說過,美國想成立漏洞銀行,我挖到一個漏洞提交給銀行,有人需要使用可以通過貨幣或者等值的漏洞交換進行使用。與其說成漏洞銀行的概念,我更傾向于把漏洞作為一種期貨這樣一種概念。

如果刨除其他因素,單從商業價值來說,我認為漏洞完全可以作為一種期貨掛牌上市交易,它也遵循一些價格波動的規律,隨著安全事件或者一些軟件廠商是否打補丁,都會帶來漏洞價值的波動,等等。

下面我與諸位分享我的第一種漏洞挖掘技術,參考安全補丁的漏洞挖掘技術,補丁是軟件廠商為了修補自己軟件安全的隱患,對代碼做一定的修改,但是通常我們都有這么一個共識,包括我們做開發和做安全,安全補丁只是對漏洞代碼的修改,它的修改量,以及代碼運行的流程,做一定的變動,并不會有太大的變化。這種漏洞修補的方式存在如下兩種隱患,第一點軟件的廠商在修補漏洞的時候缺乏全局的考慮,通常只注重對漏洞點的修補。第二個就是往往只考慮漏洞的上下文環境的,而沒有考慮整個或者第三方代碼在引進軟件的全局變量或者邏輯條件的時候帶來的隱患。

因此,軟件的安全補丁也就面臨一些安全隱患。我們需要對補丁進行分析,找出補丁所修補的代碼位置,以及實際出現問題的代碼位置,簡稱為漏洞點和補丁點。通過一些路徑的查找,條件執行、符號執行,逐步約束我們執行路徑,最終判斷代碼內部是否因為引入了補丁而產生新的安全漏洞。時間關系,不多說。做漏洞的同行都了解,補丁比對一種基于文本的,一一種基于匯編指令,一種基于結構化的。

參考安全補丁的漏洞安全技術有幾個應用,一個是以微軟MS 10-015為例,Windows2000,通過分析,我們發現MS 10-015在補丁點的位置加上一個標志位,VdmSafe為1的時候就可以繞過這個風險,一段代碼后會將VdmSafe賦為1這樣一段代碼。于是我們就有這么一個思路,在VdmSafe賦為1的時候,最終我們可以偽造一個上下文的環境,最終可以觸發這個函數,從而觸發漏洞。

另一個例子,MS11-010,這個漏洞也是我團隊發現并提交給微軟的,是在分析安全補丁的基礎上運用本方法發現的一個安全漏洞。MS11-010這個漏洞,漏洞點和補丁點既不在同一個代碼塊中,也不在同一個函數中,這種安全漏洞的修補方式是最有可能產生新的安全隱患的。

我們提出的第二種方法針對系統內核漏洞,隨著Windows7和Windows8的發布,多種對抗內存攻擊的安全防護機制使得傳統的基于內存的攻擊越來越困難,在這種情況下,內核漏洞往往可以作為突破點。我們這里關注的內核的模塊主要分三類,第一類是Windows內核模塊,如win32k.sys,第二類是第三方驅動等。

我們運行一個應用程序它會調用大量的Windows? API,這些API帶著我們Ring3所傳過去的參數,最終將參數傳到Ring0級。比如我們要打印一個文檔,我們在Ring3執行打印的命令,最終執行內核的調用的打印機的驅動進行打印等等。我們任意改變這個序列的時候往往會有意想不到的結果,比如改變函數進行多次調用或者調用順序改變,甚至加一些特定的條件或者參數。

內核函數無序調用一個例子,也是我們小組發現的MSS10-011,關閉ApiPort時,系統會向Csrss發送一個消息,如果繞過這段代碼就有可能繼續作打過補丁的情況下繼續觸發漏洞。

這個圖給出通過亂序組合觸發漏洞,左邊是微軟為我們設定好的執行序列,當我們把最后一步關閉AprPort標識為零,先執行API的時候,就可以導致我們進程脫出進程列表。

以上兩種漏洞挖掘方法都是關于系統軟件,包括應用軟件的。第三種方法是針對咱們網絡軟件的。諸位專家對非開源的網絡軟件想進行漏洞挖掘,我們協議的Fuzzing測試,往往會帶來諸多的問題,首先測試空間比較大,測試效率也很低,第二個一些數據包過早的被拋棄了,第三個甚至還會斷開數據通信,使得數據通信建立后期的業務數據處理的時候產生了一些漏洞,這種可能性都被我們不良的測試用例阻礙在我們測試之外了。

因此,我們有一個共識,就是要對測試用例進行裁減。網絡應用程序的潛在漏洞往往存在于對發送/接收網絡數據包進行處理的過程,進行Fuzzing測試時,如果不考慮這個特性就盲目的構造測試用例往往得不到什么好的效果。網絡軟件在進行數據處理的時候,他的網絡狀態不大可能發送的第一個包,往往是通信雙方進行多次請求和響應之后的狀態。在這種思路下,我們需要模擬網絡通信的流程,來構造合適的網絡數據包作為測試用例。如何模擬通信流程,就需要對軟件進行立項分析。

下面這個例子也作為我們基于立項分析的應用,這是一款股票軟件登錄的時序圖,一直到最后一步會獲取用戶的信息,當我們對該客戶端軟件進行立項分析的時候,在獲取信息的過程中,客戶端就會解析這個數據包,獲取用戶名下股票的數目,并為股票分配一塊扣減,讀取股票詳細的信息。

如果我們能嗅探網絡通信的過程,并且對數據包進行偽造,我們就可以將股票的數目修改為比如兩個字節以上的數字,最終可以導致我們客戶端程序產生問題,最終導致程序拒絕服務,這對于金融交易類的軟件來說往往損失是巨大的。

結語,對于漏洞挖掘行當來說,我想還是要遵循百貓黑貓論,英雄不問出處,能夠挖到漏洞的都是好方法,道與魔的較量,攻與防的比拼,為由不斷探索才是王道,這是一門技術,更是一門藝術。

北京大學的軟件安全研究小組是隸屬于北京大學網絡與軟件安全保障教育部重點實驗室,北京大學軟件與微電子學院和北京大學軟件研究所信息安全實驗室,成員均為北大研究生,我們研究方向主要包括立項工程、軟件安全漏洞挖掘、漏洞分析、軟件安全評估。

論文發表的情況,主要是漏洞方面的一些編程技術。

漏洞發現情況,發現Windows操作系統漏洞5個,公開了兩個,我們小組也有幸收到微軟的致謝,未公開的有三個。

應用軟件漏洞發現30余個,已公開的包括一些安全產品的客戶端若干個,以及未公開的包括電話的客戶端軟件1個,以及其他應用程序。

其他成果包括目前正在研發的文檔漏洞檢測平臺相比傳統的特征數比對或者行為探測的漏洞,實現了更低的誤報率和漏報率。其他工具是我們做科研課題的過程中積累的一些相關的數據。謝謝各位。

上一篇:NSC2013 中國網絡安全大會2013開幕 張群英

下一篇:楊春燕:2015年電子商務交易額或達18萬億