安大略湖畔的安全之光——ACM CCS 2018 小記(2)
前情回顧
我們在2017年CCS特別報道中,專門提到:“本次CCS程式委員會主席絕密報告: 怎麼樣讓你的論文被國際頂級學術會議CCS 2018錄用 !答案很簡單”,一年過去了,結果如何,答案馬上揭曉!
開幕式

多倫多當地時間上午9點,本屆CCS大會的General Chair——David Lie在Beanfield ballroom致辭歡迎所有參會人員,宣佈這次安全盛會正式開始。在去年參會期間,筆者聽聞一個八卦,據說參加CCS的人都非常好(hao4)吃,而去年達拉斯的餐食對於一群安全界的饕餮之徒而言,尚不能引發大家的好評,於是今年:

我們見到了鉅額的食物投資,以及……今年沒有贈送的書包,沒有贈送的禮物,沒有紙質的程式冊,甚至胸牌的帶子都需要與會者自己去領取和穿線。。。好吧看來CCS確實是一個食客的聚會,其它都並不是很重要: )
言歸正傳,在General Chair致辭完畢之後,本次大會的兩主席之一,德國CISPA Helmholtz Center主任,Michael Backes教授對CCS 2018的前期準備工作進行了總結,首先是對審稿過程的回顧:

本次CCS最初投稿804篇,還引發了一個小事故——巨大的投稿量引發了HotCRP系統的故障!因此會議特地延長了一天的deadline,而這一天時間就導致投稿數量暴增了83篇!經過對基本情況的篩查(例如違反匿名性原則直接剔除),最後779篇論文進入了評審流程,並由一個自動化論文分配系統將論文分配給合適的審稿人。在第一輪審稿結束後,審稿人明確且堅定拒絕了其中230篇文章,會議繼續為剩下的文章增加審稿人並進入討論環節,其中373篇論文的作者對審稿意見進行了迴應,論文評審進入到最後的篩選。最終,在2802份審稿意見和4878個審稿委員評論的幫助下,134篇論文最終被錄用!
接下來,Backes教授評估了2017年CCS開幕式上著名的“如何讓你的論文被CCS 2018錄用”猜想(對這個猜想不熟悉的同學,請訪問本專欄去年的報道):




在今年的投稿中,統計資料表明擁有10個合作者的論文更容易被錄取,而主要完成作者所在地為伊朗和波蘭的論文也有更高的錄取率,這表明去年的猜想中,關於作者數量和作者所在地的魔法已經失效,那麼熱門研究方向是否也和去年的預測不一致呢?看起來好像去年的猜想依然沒能正確預言今年的趨勢:


本次大會的資料(玄學)分析表明,去年的預測並不準確,對於下一年而言,Backes教授給出的建議是:

看起來這個玄學又要等到2019年去驗證了。事實上,我們回顧一下去年的另一條建議:

作為親身實踐者,我們向全體專欄讀者強烈推薦這一條建議!之所以敢於推薦,是因為蜚語安全研究小組繼2015年CCS論文錄用之後,在2018年CCS上再次獲得論文錄用!而我們正是遵循了這一建議而不是搬到捷克去並尋找13個合作作者^_^
Binary Code Analysis Session
本次CCS,我們關於二進位制程式程式碼中金鑰安全分析的論文K-Hunt: Pinpointing Insecure Cryptographic Keys from Execution Traces經過層層篩選,最終成為134篇錄用論文之一,這也是蜚語安全研究組過去幾年發表的論文中,第一例由我們同海外研究人員(來自美國和西班牙)開展密切合作而完成。我們的論文報告被歸檔到會議專門討論二進位制程式碼分析的session中,在本session第二位登場,作為一篇結合了二進位制程式碼分析和密碼軟體安全分析的論文,其實我們更喜歡被安排在Crypto Attack那個session(後面會詳細介紹那個session的三篇非常有意思的論文)。我們的工作主要針對二進位制程式碼中程式可能不安全使用crypto keys的情況開展了自動化安全分析,其核心思想在於,與其過分追求使用複雜的分析方法試圖更精確識別出密碼演算法是什麼,不如退而關注密碼演算法的本質(算術運算、高隨機性資料等),在不需要精確界定密碼演算法的情況下,用一種simple but powerful的方法去定位金鑰,並使用動態分析追蹤對整個金鑰生命週期進行安全分析,最終找到insecure crypto keys。

為了鼓勵大家去更好地瞭解金鑰安全分析,我們不僅對論文進行了分享,更設計了一個小小的和論文發現的安全問題相關的題目來挑戰在場的安全人員:

令人感到驚喜的是,很快我們的郵箱便收到了一份正確答案,來自法國安全研究人員Jean-Baptiste Bédrune

不僅如此,我們還發現Jean-Baptiste Bédrune曾經在去年發表了一篇部落格文章,介紹了他們針對OpenVPN的安全審計

而這篇文章激發了我們去年針對Android平臺上使用OpenVPN存在嚴重安全缺陷的app的系統化研究:

兩個研究團隊通過這一種奇妙的方式聯絡起來,對於我們的研究工作而言也是非常幸福的,我們同Jean-Baptiste Bédrune先生進行了親切的交流,並向他贈送了交通大學120週年校慶紀念首日封作為贏得挑戰的禮品,整個交流始終在熱切友好的氣氛中進行:)
本session的第一篇論文由來自武漢大學的程斌林作報告,介紹了他們關於二進位制程式碼程式脫殼反保護的研究工作,儘管加殼和脫殼研究工作一直是工業界關心的問題,但是這方面工作很少有新的工具產生。這篇論文設計了一個新的脫殼工具BinUnpack,其架構如下圖所示

BinUnpack將脫殼工作的核心放在Kernel層面進行,能夠很好的規避惡意程式碼檢測,更為重要的是,BinUnpack相比傳統的脫殼工具,效能提升了上百倍!!
本Session的第三篇論文由來自卡內基梅隆大學的Edward J. Schwartz報告,他介紹了一個基於Prolog程式語言,以reasoning為核心的分析工具OOAnalyzer, 能夠更準確地靜態分析從C++程式碼編譯得到的二進位制程式碼,恢復出更多的類和方法資訊。作者使用的Prolog程式語言是上個世紀第五代計算機專案中的重要元素,由於1981年日本經濟產業省撥款八億五千萬美元支援,據說當年只要會Prolog程式設計就能去日本申請到基金支援。然而好景不長,人工智慧很快進入到第二次低谷,Prolog也被打入冷宮,難怪session chair會打趣說,現在會場上可能並沒有很多人會用Prolog~
本Session的最後一篇論文報告來自新罕布什爾大學的徐東鵬,介紹了他們針對二進位制程式碼虛擬化混淆的自動化反混淆系統VMHunt。如果說二進位制程式碼分析是帶刺的玫瑰,那麼二進位制程式碼的反虛擬化混淆研究應該是這朵玫瑰上最美的花瓣之一,因為基於虛擬化的程式碼保護一直是軟體程式碼保護和反保護對抗中最為激烈的領域,大量安全攻防都在程式碼的虛擬化保護上投入相當的精力。因此,VMHunt這樣的分析工具必然會引起安全分析人員的重點關注,它針對被虛擬化混淆保護程式碼的一個重要特徵——context switch,將程式碼分割為不同的virtualized kernels,然後進行後續的細粒度符號執行分析,得到相關的表示式,幫助分析人員理解混淆程式碼,相關細節可以關注論文

去年的報道中我們曾經把二進位制程式碼分析稱為“安全研究領域中帶刺的玫瑰”,研究難度極大。而今年我們驚喜地發現,這個session中四篇論文,除了一篇來自傳統的安全(和CTF)強校CMU的研究人員,其餘三篇都是由分佈在國內外的中國安全研究人員完成:和去年相比,中國安全研究人員在二進位制程式碼分析方面取得了長足進步。其實,這一結果完全不足為奇,過去的幾年時間國內安全研究逐漸形成體系,年輕的學子能夠很早就接觸到高難度的二進位制分析工作,而已經具備豐富經驗的研究人員也在國內各個高校開展了培訓活動,經過大量的安全實踐,我們預計未來中國研究人員會繼續不斷在這個方向輸出高質量的結果。
Crypto Attacks Session
第一天的會議中,我們重點推薦的另一個session是上午的密碼學攻擊相關session,其中有三篇非常有趣的文章,接下來我們簡單介紹一下它們的研究內容:
第一篇論文來自我個人非常喜愛的Nadia Heninger教授研究組(Nadia Heninger教授做出了大量實際而有趣的密碼學攻擊研究,包括早期經典的Lest we remember冷啟動攻擊),闡述了該組最新研究成果——如何檢測一類偽隨機數發生器ANSI X9.31 Random Number Generator (RNG) 在現實中存在的不正確實現版本產生的安全問題,以及如何對其進行攻擊。論文字身自帶配套網站( ofollow,noindex"> https:// duhkattack.com/ )。

第二篇論文Prime and Prejudice: Primality Testing Under Adversarial Conditions(看題目就能猜到作者來自Jane Austen的家鄉英國,當然presenter也是一口濃重的英式口音)提出了針對密碼學中非常重要的一個基本技術——素性判定的安全研究。眾所周知,給定一個很大的整數(例如1024-bit),現有的演算法無法在短時間內判定這個數是否是素數,然而大素數又是一個密碼學演算法和協議中經常要使用的元素,為了適應密碼學應用的要求,概率性素性判定演算法(例如經典的Miller-Rabin)演算法應運而生。簡單地講,一個概率性素性判定演算法能夠確定性地告訴呼叫者,被判定的數一定是一個合數,或者可能是一個素數。如果對於特定的數N,通過多次呼叫素性判定演算法(每次使用不同的測試因子),在進行一定多次判定後演算法一直認為N可能為素數,我們就可以認為N是素數的概率極高並將其當成素數使用。然而,論文指出,現代密碼學演算法庫中對素性判定演算法的實現存在很多確定性程式設計,導致攻擊者可以事先研究這類確定性程式設計實現,並針對性地構造出一個非素數M去欺騙演算法,令每次素性判定總是可以通過,最後導致合數M被用在密碼學應用中(例如DH金鑰交換),導致極為嚴重的安全後果(下圖給出了針對大量流行的密碼學演算法庫的分析結果)

第三篇文章Release the Kraken: New KRACKs in the 802.11 Standard是針對去年CCS最佳論文之一的Key Reinstallation Attacks: Forcing Nonce Reuse in WPA2的後續,兩篇論文的第一作者為同一個人。去年的論文雖然在參會時引起了空前的關注,但是本專欄去年專門撰文指出其實Krack攻擊並沒有那麼強的攻擊後果:
RomanGol Liarod:Don't Panic! KRACK 沒你想象的那麼糟作者彷彿看到了我們的質疑,也通過本年度的論文作出了迴應,通過很多巧妙的構造,去進一步擴充套件了Krack攻擊的能力,同時也展示了在一些程式碼中新發現的、實現導致的key reinstallation vulnerabilities,作者也沒有忘記更新一下去年的網站:
https://www. krackattacks.com/follow up.html其它研究論文
第一天的會議中同樣還有大量有趣的安全研究報告,由於精力有限和並行限制,不可能一一旁聽,推薦大家去訪問會議線上論文集下載論文!
Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security