文/孫茗珅
帶你走進(jìn)維也納版的CCS2016(二)
文/孫茗珅
編者按
2016年的CCS是有史以來最大規(guī)模,參會人數(shù)最多的一次。本期將繼續(xù)分享香港中文大學(xué)孫茗珅博士提供的參會總結(jié)和感想,本文主要介紹CCS論壇主論壇上圖靈獎獲得者M(jìn)artin Hellman發(fā)表的演講,幾篇與Android有關(guān)的論文,以及10月26日分論壇中的主題報告及keynote, web/mobile security分論壇等。
2016年 CCS 在霍夫堡宮殿 (Hofburg Palace) 舉辦。這次 CCS是歷史上參會人數(shù)最多的一次,一共有 1006 個參會者,來自 42個國家、426 個組織。會議組織者統(tǒng)計了參會者來自的國家,前三是美國、德國和英國,隨后有韓國、奧地利、法國等等。來自中國的參會人數(shù)排名第八。如果按照組織排名的話,第一是德國的 TU Darmstadt,后面還有 SBA Research, ETH Zurich, Google, Penn State 等。
本次論文接收情況如下:一共收到了來自 2000 個作者的 831篇投稿,相比2015年多了 185 篇。會議邀請了 138 位 PC,3 位chair 和 360 位 external reviewers??偣矊懥?2368 篇 reviews,每篇文章大概能收到 3 篇 review,應(yīng)該算是正常水平,這么多的投稿,估計審稿的壓力也很大??偣步邮芰?137 篇文章,接受率 16.5%。
2016年圖靈獎獲得者M(jìn)artin Hellman
Keynote 來自 Martin Hellman,2016年圖靈獎獲得者——Diffie-Hellman key exchange (D-H) 中的 Hellman。Keynote 的題目是 Cybersecurity, Nuclear Security, Alan Turing, and Illogical Logic。主要講述了他發(fā)明 key exchange 的經(jīng)歷,對于圖靈獎的一些感想,以及和他的夫人寫的一本關(guān)于愛情的書 (A New Map for Relationships: Creating True Love at Home & Peace on the Planet)。從Martin 的 keynote 演講中能感受到 Martin 對于科研的熱愛,為之不斷奮斗的熱情,非常鼓舞人心。Martin 不僅是一位非常優(yōu)秀的科學(xué)家,在 keynote 的后半部分他也講述了和他妻子的愛情、家庭、生活。他用 illogical logic 這個詞來形容愛情中的關(guān)系,講述了他在科研中的嚴(yán)謹(jǐn)邏輯也沒辦法明白愛情中的 “illogical”。就像他書中寫道的:
The essence of this book is: “You have to believe in the seemingly impossible gifts of unconditional love and a more peaceful planet, and then dedicate yourself to discovering how to achieve them.”
Is it practical to build a truly distributed payment system- Ross Anderson
Ross 主要介紹了他在發(fā)展中國家試驗(yàn)的一種 distributed payment 系統(tǒng),利用了簡單的密碼學(xué)知識,使用一個手機(jī)和短信驗(yàn)證碼,完成了交易。加密方式很簡單:
The crypto is simple enough: a challenge is copied from the payee’s phone to the payer’s, and an authorisation code is then copied back to the payee.
他的項(xiàng)目得到了 Gates Foundation 的資助,在一些貧窮國家嘗試使用,效果非常不錯。Ross 的研究真的改變了一個村子里的支付方式,這就是科研的影響力。
視頻連接:https://www.youtube.com/watch?v=IbfG_KSlTD4
這里主要介紹四篇 Android 相關(guān)的文章,包括 Android Unix domain sockets 的問題,call-back 函數(shù)的錯誤使用,恢復(fù)混淆后的 Android 代碼,還有第三方包的檢測。
◇The Misuse of Android Unix Domain Sockets and SecurityImplications
這篇文章主要介紹了 Android 的 Unix domain sockets,Unix domain socket 和傳統(tǒng)的 internet socket 。不同的是:通信是在操作系統(tǒng) kernel 中完成,而不是通過 network protocol;服務(wù)器監(jiān)聽 Unix domain socket namespace 而不是 IP 和 port number。Namespace 包括 FILESYSTEM 和 ABSTRACT 兩種,它們分別有對應(yīng)security enforcement級別,見表1。
正式因?yàn)?Unix domain socket 的特性,我們可以做如下兩種攻擊,見表2。
表1
表2
本篇文章針對這個問題設(shè)計了一個檢測因?yàn)?unix domain socket 引起漏洞的系統(tǒng) SInspector。SInspector 通過結(jié)合靜態(tài)檢測和動態(tài)分析兩種方式,檢測出漏洞。
Address Analyzer 找出 socket 地址,并且檢查是否有保護(hù),Authentication Detector 用來檢測是 peer authentication 是否保護(hù)client 的連接,如果用 UID 和 GID 來檢測就很難偽造,但是只用PID 就容易偽造。
文章還討論了應(yīng)該如何在 Android 安全的使用 Unix domain socket,適合普通的開發(fā)者詳細(xì)閱讀,濫用 domain socket 會引起嚴(yán)重的信息泄漏漏洞。
◇Call Me Back! Attacks on System Server and System Apps in Android through Synchronous Callback
這篇文章主要討論了 callback 函數(shù)在使用中的問題,如果callback 函數(shù)使用不當(dāng),則會讓系統(tǒng)服務(wù)鎖死或者崩潰。最后文章建議盡量異步處理事務(wù),多用 try catch 捕捉異常。
文章提出了靜態(tài)分析的方法,提出的工具 KMHunter 基于FlowDroid。作者通過 taint analysis 找出錯誤調(diào)用 callback 函數(shù)的地方,并找到了 6 個漏洞,見表3。
◇Statistical Deobfuscation o f A n d r o i d Applications
這篇文章要解決的問題非常簡單,就是如何恢復(fù)混淆后的代碼。Android 的代碼混淆最基本的就是文章所謂的 "layout obfuscation",簡單來說就是把包名、類名、方法名重命名成一個類似的名字,比如說 "a", "a.b" 這種名字,讓分析人員不容易搞明白代碼的功能。
作者使用的是 probabilistic model,拿 open-source 的沒有混淆的源代碼作為 ground truth,經(jīng)過 static analysis 找到 semantic representation 當(dāng)作 taining set。然后就可以用這些 semantic representation 去推測那些混淆過的類名,包名。
表3
◇Reliable Third-Party Library Detection in Android and its Security Applications
文章提出了一種檢測第三方庫的方法,很簡單,從 method到 class 再到 package 一層一層的做 hash,然后進(jìn)行匹配。不得不提的是,這個方法在我們 2013 年的 DroidAnalytics 的系統(tǒng)中已經(jīng)用過了,這次竟然在 CCS 看到同樣的方法,我們主要用于檢測重打包的惡意軟件,而這篇文章主要是檢測第三方庫。
Banquet 上還頒發(fā)了一些獎項(xiàng),Best Paper Award 是下面這三篇論文:
High-Throughput Semi-Honest Secure Three-Party Computation with an Honest Majority
A Systematic Analysis of the Juniper Dual EC Incident
A Surfeit of SSH Cipher Suites
這三篇論文都是和crypto key相關(guān)的,雖然crypto是個很古老的研究方向,但是對于傳統(tǒng)加密方式的應(yīng)用依然很有影響力,特別是濫用(或者錯用)傳統(tǒng)加密方法造成的安全隱患值得重視。
還有一些 Test-of-Time Award, Europe Council Best Student Paper Award, 以及 Dessertation Award 和 SIGSAC Awards,詳細(xì)列表可以在:https://www.sigsac.org/ccs/CCS2016/awards/ 看到。
◇Measurement and Analysis of Private Key Sharing in the HTTPS Ecosystem
如今,大部分熱門的網(wǎng)站都有在第三方的 CDN 上有部署。比如說 CloudFlare 就提供免費(fèi)的 CDN 服務(wù)。你把 DNS 解析服務(wù)放在 CloudFlare 上,一個 request 就有首先到達(dá)某個 CDN 服務(wù)器。CloudFlare 也提供了 HTTPS 鏈接服務(wù),如果使用了,那么所有的HTTPS 訪問就會使用 CloudFlare 的證書,而不是網(wǎng)站本身的證書。
因此,在 HTTPS 傳輸中,使用的 key 則來自于 CDN 服務(wù)。如果某個 CDN 服務(wù)出現(xiàn)漏洞,泄漏了 key,那么所有使用這個CDN 的網(wǎng)站可能都會收到影響。
圖1
作者首先通過 WHOIS 里的信息區(qū)分了每個網(wǎng)站的擁有者,然后利用收集的數(shù)據(jù)回答了以下幾個問題:
How many organizatins share keys?
How may keys do providers have?
How are SAN lists used?
隨后,文章又研究了 certificate management 的問題,我最感興趣的是關(guān)于 Heartbleed 漏洞之后的證書管理情況。
如圖1所示,左邊的是在 Heartbleed 漏洞公開之后證書沒背撤銷的比例,右面是沒有 reissue的證書的比例??梢缘贸鲆粋€結(jié)論是,outsourced的證書(也就是 CDN 提供的證書)在漏洞剛出時,反應(yīng)慢于自己管理的網(wǎng)站的證書。而一段時間之后(一周后),因?yàn)?outsourced 能夠管理大量網(wǎng)站的證書,所以能夠統(tǒng)一撤銷、重新發(fā)放證書。
圖2
◇Build It, Break It, Fix It: Contesting Secure Development
這個 talk 并不是講科研的,而是主要介紹了作者組織的一種安全編程的比賽,不同于傳統(tǒng)的 CTF, CGC,這個比賽主要面向剛剛接觸安全的學(xué)生。比賽包括三個階段:build, break, fix,模擬了真實(shí)世界當(dāng)中的安全編程的情況。所以這個比賽考察了一是如何寫出安全可靠的代碼,二是如何找到軟件的漏洞并且加以利用,最后如何修復(fù)有漏洞的代碼。作者在論文中分析了 2014 年的比賽的一些信息:圖2中最下面的部分很有意思。比賽在 build階段會考慮 testcases 和 performance 的分?jǐn)?shù),在 break 階段考慮 bugs和 vulnerability 的分?jǐn)?shù),在 fix 階段考慮 fix 后的結(jié)果。幾乎所有的隊伍在 break 階段都會有減分,但是有些隊伍在 fix 階段就修補(bǔ)了漏洞。
圖3
◇SandScout: Automatic Detection of Flaws in iOS Sandbox Profiles
這篇文章主要研究了 iOS 的 sandbox 機(jī)制,主要是由container profile 控制。iOS sandbox 是一種 mandatory access control policy,使用了 Trusted BSD MAC framework: http://www.trustedbsd. org/mac.html. 它可以為不同的 sandbox 設(shè)置不同的 “profile”。通過使用一種 SBPL (SandBox Profile Language) 的語言,可以在Profile 里面可以定義 system call 的使用權(quán)限。
圖3的這個例子就表示了 mobilesafaris 和 safarifetcherd 可以訪問 /Media/Safari 目錄下的所有文件,除了 secret.txt.需要注意的是蘋果并沒有公開最新的 SBPL 語法文檔,profile 也是編譯之后二進(jìn)制文件。
這篇文章要解決三個問題,反編譯 profile 文檔,model sandbox policy,自動化發(fā)現(xiàn)漏洞。正是因?yàn)?SBPL 的復(fù)雜,定義稍有不慎,就會出現(xiàn)邏輯上漏洞。沿著這個思路,作者把 graph-based SBPL 轉(zhuǎn)化成 Prolog 的邏輯定義。profile 變?yōu)镻rolog 后,就可以用一些 policy quiery來檢查 profile 是否存在漏洞。
通過這種方法,作者發(fā)現(xiàn)了七類漏洞,并且通知了 Apple,大部分漏洞都能修改 profile 解決。下圖這個例子是 iTunes 的隱私泄露漏洞,主要原因是 /private/var/ mobile/Medi- a/iTunes_Control/iTunes 目錄可以被任何第三方App訪問,而目錄下面包含一些隱私數(shù)據(jù)。
iOS 的安全問題歷來都是 "under the hood",這次的 profile 機(jī)制以前確實(shí)沒人研究過,但是想一想 SELinux/SEAndroid 不也是MAC 么?同樣的問題,在 iOS 上一樣存在,就是需要深入挖掘。
◇The “Web/Local” Boundary Is Fuzzy: A Security Study of Chrome’s Process-based Sandboxing
這篇文章討論了在現(xiàn)在的瀏覽器中 Web 和 local 的 boundary開始模糊,因此造成的安全問題。圖4左邊描述了傳統(tǒng)的process-based 瀏覽器模式,在這種框架下 Web/local boundary 非常清晰。最近出現(xiàn)的 cloud service (比如說 Dropbox) 引入了cloud App, client App,使得 web/local boundary 不是唯一的。
文中介紹了三種可能引起的問題:
accessing files on the local system
interacting with the local system
misusing system sensors
利用方法是假設(shè)通過 rederer 的 memory corruption exploit 修改SOP enforcement,使 a.com 可以加載 b.com 到 iframe里。那么就能通過 iframe 與 cloud service 通信,進(jìn)而修改 local file system。
作者舉了個例子,在 iframe里顯示 DropBox share file 的按鈕,就能繞過以前的 web/local boundary 直接通過 DropBox 獲得/修改文件。
因?yàn)閺?memory corruption exploit 到 bypass SOP 還有很多工作要做,作者還詳細(xì)介紹了如何繞過 Chrome 的 memory protection (ASLR, CFI)。
下面是 POC 的代碼,以及視頻。
POC: https://github.com/jiayaoqijia/Web-Local-Attacks
DEMO: https://youtu.be/fIHaiQ4btok
圖4
◇UniSan: Proactive Kernel Memory Initialization to Eliminate Data Leakages
UniSan 是一個檢測 Linux kernel 的 memory initialization 問題的。在這篇文章,作者為了找到這類的 initialization 引起的 data leakage,提出了用 program analysis 的方法檢查程序是否初始化內(nèi)存對象。具體是基于 LLVM 檢查 (沒有選擇 GCC 的原因是LLVM 提供了更多的 API)是否存在程序路徑,使得一個內(nèi)存對象離開內(nèi)核空間時候沒有被初始化。
◇iLock: Immediate and Automatic Locking of Mobile Devices against Data Theft
iLock 利用聲音檢測手機(jī)是否丟失,如果丟失了就鎖定手機(jī)保護(hù)手機(jī)內(nèi)的信息。具體的方法是使用了 FMCW 的方法,傳輸?shù)男盘栴l率回隨著時間變大,通過計算接收到的信號的時間差,就能判斷反射物體的距離。圖5是 FMCW 的示意圖。
圖5
◇On Code Execution Tracking via Power Side-Channel
這篇文章是用 MCU 的 power side-channel 來判斷 control-flow integrity。具體的方法是通過power trace 把CFG 構(gòu)建為一個hidden Markov model。作者對原始的 HMM 進(jìn)行了修改。使在CFG 里的一個block 表示 HMM 的一個 node。
Singnal extraction 是這篇文章的另一貢獻(xiàn),如何把 power signal 抽象為 observation symbol?如何修改 Viterbi algorithm 使它能夠判斷 execution sequence 是否是 HMM 的一部分(也就是判斷CFG 是否被修改了)。
圖6
圖7
◇Drammer: Deterministic Rowhammer Attacks on Mobile Platforms
作者利用 Rowhammer 攻擊巧妙的拿到 root 權(quán)限。因?yàn)槭莔emory 的特性引入的攻擊,系統(tǒng)也沒有什么辦法防御。簡單來說利用了 "DRAM hardware glitch casing disturbance errors",結(jié)果是會造成 DRAM 中的 bit 在某些情況下翻轉(zhuǎn)(0 -> 1 或 1 -> 0)。并且這種 bits flipping 在同樣情況下是可以重現(xiàn)的。作者利用這種“特性”,攻擊 page table entries,可以讓某個 memory page mApping 指向上一個 page,從而可以在 page table entry 寫入任意值。
隨后,寫入 kernel memory 的 page table entry 就可以訪問到kernel memory,找到 struct cred 修改 uid 和 gid 就能拿到 root 權(quán)限,如圖6所示。
因?yàn)橐粩鄴呙?DRAM 找到會發(fā)生反轉(zhuǎn)的 bit,作者 evaluate不同機(jī)器所需的時間,如圖7所示。
此外,在panel discussion 環(huán)節(jié)還討論了幾個非常有爭議的話題:安全學(xué)術(shù)研究的價值,攻擊和防御哪個更重要,四大安全會議收錄論文的現(xiàn)狀,應(yīng)用密碼學(xué)和傳統(tǒng)密碼學(xué)的沖突,未來安全研究的發(fā)展方向(例如:usable security)。
(責(zé)編:楊潔)
(作者單位為香港中文大學(xué))