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