他們造了一個自動挖掘工具,能找到比核武器更可怕的漏洞
幾十年前,兩顆原子彈爆炸,人們在可怕的蘑菇雲中,被核武器的威力所震懾。
在看不見敵人的神秘網路世界裡,有一種武器堪比核武器。
幾個月前,「永恆之藍」從美國國家安全局的軍方軍火庫泄露,威力巨大的武器落到了一群毛賊手中,被利用做了一次低俗的敲詐勒索。但那一次,也許是全世界人民再一次深刻體會到這種武器的可怕。
它就是漏洞武器。
網路世界的暗黑力量瞅准了漏洞,安全守衛者也看到了漏洞的價值。不過,在安全研究人員看來,搶先一步發現漏洞,填上它,就是一種勝利。
不過,從開始滲透測試網站到發現漏洞,然後提交給廠商,整個過程會耗費安全研究人員大量的時間精力,甚至不得不連續幾個日夜守在電腦面前反覆測試。何況,漏洞挖掘技術有高低,天賦、時間、經驗……都是一道道關卡。
最近,有人告訴雷鋒網編輯,他們研發除了一款 Windows 漏洞自動化挖掘系統 Digtool,可捕獲程序執行過程中觸發的漏洞。
咦?Windows 系統的漏洞挖掘,由於微軟沒有提供源碼,人工挖掘需要逆向分析。這個漏洞工具到底是怎麼實現的?聽說 Google project zero 也開發了類似工具,相比之下,效果幾何?
該工具的開發人之一 、360 冰刃實驗室負責人潘劍鋒接受了雷鋒網的採訪。
「淘金者」Digtool 「以靜制動」在冰刃實驗室提供的資料中,提到 Digtool 的工作流程就像挖沙淘金一樣:首先,Digtool 可以記錄內存訪問等行為日誌,這就實現了第一步挖沙的過程;進而,Digtool 的分析模塊會進行分析,一旦符合主要的六種漏洞行為特徵規則,便實現了一次「淘金」,也就意味著找到一個漏洞。
事實上, Digtool 並不是機器人,下達一聲命令,它就勤勤懇懇地開始自動「淘金」。
至少,你得先開機。
曾有一計謀稱為「以靜制動」,也就是我們通常所說的:我就靜靜看你裝逼,然後一切真相瞭然於胸。
只有在系統在任務執行的動態過程中,Digtool 才會像靈敏的獵犬,嗅出一切可疑的破綻。
此前介紹的 Digtool 的工作流程其實分為兩個步驟。
第一部分是指路徑探測模塊。因為程序運行會有大量的路徑產生,有些路徑是正常的,只有某些路徑才會出錯。如果你探測不了這個路徑,根本發現不了這個漏洞,因為其他路徑跑出來的結果是正常的。
Digtool 在這個過程中產生的最大作用是,盡量引導執行更多的路徑。
讀萬卷書,行萬里路,找「一萬條」路,才能獲得人生真諦。Digtool 不斷嘗試從 A 點到 B 點的可能路徑,就像那個把巨石一直推向山頂,巨石掉落,又往山頂推的人。只是,不走尋常路。
因為漏洞本身就是罕見的,很可能在一萬條路里,才能找出一條通向成功,哦不,是漏洞的路。
從這個意義上來說,Digtool 深刻地領悟了人生(漏洞)哲學。
第二,錯誤捕獲,跑到這條特殊的路徑上算是成功了一半,捕獲到錯誤是成功的另一半。
潘劍鋒指出,軟體漏洞是程序的與安全性相關的錯誤或缺陷,有漏洞的程序在動態運行時會產生各種異常行為,比如有UAF的程序執行時產生訪問已釋放內存的行為;再如有內核的信息泄露漏洞的內核程序段,會產生把應用層不應該知道的地址寫到應用層地址空間的行為,Digtool 可以捕獲這些異常行為從而發現背後的漏洞。
至此,Digtool 才算在一個漏洞的挖掘上功德圓滿。
白帽子暫時不會失業
Digtool 目前擅長挖掘六類漏洞,而且針對的是 Windows系統。
第一類, OOB越界訪問漏洞。
第二類,UAF釋放後使用漏洞。
第三類,TOCTTOU即time-of-check-to-time-of-use漏洞,這裡指來自用戶的不可信參數在被系統(如內核)檢查和使用之間,可被用戶篡改的漏洞。它本也屬於競爭條件型,但可由 Double Fetch檢測方法高效發現,故單列出。
以一個程序為例,來了一個用戶層的內存 A,系統訪問了裡面一個指針讀出來,它確實是一個合法的指針,後來要使用這個指針時,卻直接從用戶內存取這個指針,前面取出來檢查,後面又取出來使用,在這個過程中,別的用戶可以修改指針,漏洞就產生了。
「以前,Windows 也出現過很多類似的漏洞,Project zero 的研究員就報了幾十個這類漏洞給微軟。」潘劍鋒說。
第四類,參數未檢查。
第五類,信息泄露。隨著各OS平台漏洞緩解機制的加強,漏洞的成功利用越來越依賴於關鍵信息的泄露。比如對內核信息泄露,在最新的 Win10 上以前可供利用的各種信息泄露幾乎都封殺了,個別漏網之魚可以預計也會很快補掉。因此,原本看上去不重要這一類型的漏洞,正在變得越來越重要。
第六類,競爭條件型漏洞,這裡指多線程訪問共享內存,而最後的結果取決於線程運行的精確時序導致的錯誤。
不過,針對這六大類型的漏洞,Digtool 也會報「假警」。
潘劍鋒解釋道:「如 OOB 或 UAF 只要報出來就是漏洞,誤報率是 0。對 TOCTTOU 和參數未檢查是有不少誤報的,因此,這種就需要人工來篩選,根據漏洞不同類型有不同的誤報率。」
Digtool離全能的「人形漏洞挖掘機器」還有相當的距離,挖掘漏洞的白帽子完全不用擔心「失業」問題。
比如,Digtool 暫時還無法處理邏輯類型的漏洞。程序邏輯是程序員自己的思考與設計,如果沒有額外的信息,程序並不知道你的邏輯到底是 A 還是B,有可能在你看來 B 是錯的,但程序並不知道,有可能認為你就是想寫成 B。
雷鋒網了解到,也不能說 Digtool 完全不能發現這類邏輯型的漏洞,程序難以直接了解程序員的思維邏輯(除非把思維邏輯直接寫入錯誤檢測工具,這樣是完全不通用的),但是依然可以通過意外邏輯發生時的副作用發現它,比如,錯誤的邏輯導致程序訪問非法內存,工具可以捕獲訪問非法內存的錯誤,通過人工反推出真正邏輯錯誤的地點。
這意味著,Digtool 在一定程度上暫時干不掉挖掘邏輯漏洞的大神,但能成為大神挖洞的親密小助手。
【我指的親密助手不是圖上這種,不要誤會】
準確地說,在一定條件下,Digtool 有希望讓沒培訓或簡單培訓的人在短時間內比經過嚴格培訓的人還能挖到更多特定類型的漏洞,潘劍鋒相信,這也是自動化挖掘的意義。
「跑一局遊戲,十幾個漏洞就挖到了」?雷鋒網了解到,目前,與 Digtool 類似的工具還有 Project Zero 製造出來的 bochspwn。
bochspwn 可以檢測兩種類型的漏洞,一種是信息泄露,一種是 TOCTTOU,但 bochspwn 跑得非常慢,是解釋型的模擬器。
與 bochspwn 相比, Digtool 可僅在需要關注的線程或系統調用開啟檢測,在不檢測的情況幾乎不影響系統的運行,當然檢測的時候也會比真實系統慢不少,但還是比 bochspwn 快很多。
「跑一局遊戲,十幾個漏洞就挖到了」——在 360 提供的背景資料中,是這樣寫的。
但是,潘劍鋒表示,這是第一次運行遊戲所經過的執行路徑上,捕獲的內核信息泄露漏洞,第二次運行自然不會有這麼好的效果,因為絕大多數路徑已經跑過了,只有探索到新路徑才可能捕獲新的漏洞;另外不同類型的漏洞存在的概率也差別很大。
接下來,Digtool 將朝著優化漏洞挖掘率,擴大漏洞挖掘類型等進行提升,不排除將增加挖掘其他系統的功能。
註:冰刃實驗室的該研究成果《Digtool:A Virtualization-Based Framework for Detecting Kernel Vulnerabilities》被 USENIX Security 收錄。
※不產樁、不賣樁、不建樁,雲快充希望為充電樁行業提供更好用的「淘金」工具
※乾貨滿滿,阿里天池CIKM2017 Rank4比賽經驗分享
※螞蟻金服開放無人值守技術 下一步將「佔領」你的辦公室
※智行者CTO:自動駕駛操作系統AVOS的設計思路及應用
※更迭 5 代,進入19歲,微軟要讓小冰賺錢養家了
TAG:雷鋒網 |
※如果你現在失業了,能找到一份更好的工作嗎?
※虎朋友:你這一生能不能富得流油,就看你能不能找到他們三個了!
※多嘗試不同的穿搭風格也是對自己的突破!也許能找到更美的自己呢
※想要找到好工作,這幾款工具必不可少
※痛風到底能不能食用豆製品,這下終於能找到一直想要的答案了
※古代三大神墓:想挖的找不到,找到的不敢挖,還有一個挖不動
※健身能讓自己變得更好,找到適合自己的方式才是最好的
※這鍋讓人慾罷不能的蟹,換了地方也要找到它!
※不愧是鬼谷子的徒弟,為了出一口氣,竟要求車裂自己找到兇手
※你得找到自己,才能找到真正的愛人
※你不會看到它們為了能找到自己的家有多努力,好好對待你身邊的小寵物們吧
※女諧星們都嫁了,只剩一個還單著,有趣的靈魂何時才能找到伴
※弄懂身體的能量管理機制,你才真正找到了養生的邏輯,很有啟發
※盜墓賊為找到這件器物,挖了墳墓,後果很不好
※用了無數款氣墊,終於找到能遮瑕又不卡粉的了!
※網友小分享:實在放不了手的就是提升自己的時候了,思考自己為什麼當時買了現在不心動又丟不掉,一遍一遍自問會找到問題所在
※水瓶愛上了就不輕易放棄,因為他們很難找到一個他們很愛的人
※再難搞的臉型,也能找到合適自己的髮型
※能力再強也怕遇上豬隊友,拖累固態硬碟性能的兇手找到了!
※這些水果里,總有幾個是熟透的,你能找到嗎