用于數(shù)據(jù)污點追蹤的裝置和方法
【技術(shù)領(lǐng)域】
[0001] 本公開一般設(shè)及計算機系統(tǒng),具體地,設(shè)及在運種系統(tǒng)中進行數(shù)據(jù)污點(data taint)追蹤。
【背景技術(shù)】
[0002] 本部分是為了向讀者介紹現(xiàn)有技術(shù)的多個方面,運些方面可能與下文描述和/或 要求的本公開的多種方面相關(guān)。運樣的討論有助于向讀者提供背景信息W便幫助更好地理 解本公開的多個方面。因此,應(yīng)清楚,可W在運個意義上來理解運些表述,而不應(yīng)將其理解 為對現(xiàn)有技術(shù)的承認(rèn)。
[0003] 已知的是出于不同原因數(shù)字?jǐn)?shù)據(jù)是敏感的;數(shù)字?jǐn)?shù)據(jù)可W例如是應(yīng)保密的個人數(shù) 據(jù)或公司秘密。基本示例如下所示。Alice寫了文本文件A。她通過化〇地〇^將其發(fā)送給 Bob,并規(guī)定A必須不能向其他人公開。隨后,Alice懷疑文件A已被公開。她希望知道 文件A是從她的機器或從Bob的機器、從化0地0X或從亞馬遜的EC2機器(當(dāng)前化opBox 實現(xiàn)方案所使用的)泄露的。
[0004] 存在多種解決方案來防止泄漏運種數(shù)據(jù)。運些解決方案大體可W被分為兩組:數(shù) 據(jù)泄漏預(yù)防和數(shù)據(jù)泄漏檢測。
[0005] 數(shù)據(jù)泄漏預(yù)防目的是阻止未授權(quán)的數(shù)據(jù)輸出。示例系統(tǒng)(在安全增強型 Linux(SELinux)中實現(xiàn)的基于角色的訪問控制)禁止多用戶行為(manyuseractions), 因此無法將其應(yīng)用于所有類型的用戶,諸如,家庭網(wǎng)絡(luò)中的用戶。此外,不管數(shù)據(jù)泄漏預(yù)防 如何,攻擊者往往能發(fā)現(xiàn)避開數(shù)據(jù)的方式。
[0006] 數(shù)據(jù)泄漏檢測假設(shè)數(shù)據(jù)將會發(fā)生泄漏。那么構(gòu)思在于檢測并報告什么時候發(fā)生數(shù) 據(jù)泄漏。數(shù)據(jù)泄漏檢測包括從數(shù)據(jù)標(biāo)記到污點追蹤的大量技術(shù)集,下文將描述運些技術(shù)的 一部分。
[0007] 數(shù)據(jù)標(biāo)記基于通過向數(shù)據(jù)添加特性或?qū)?shù)據(jù)加水印來修改要追蹤的數(shù)據(jù)。應(yīng)認(rèn)識 至IJ,運種修改可W是可見的或不可見的。運種修改在魯棒性的水印中可能難W被攻擊者移 除,或在脆弱的水印或無簽名的文檔屬性中可能易于被攻擊者移除。典型示例是Alice想 要向Bob和Carole發(fā)送個人圖片。Alice向Bob發(fā)送略微修改版本的圖片,向Carole發(fā)送 不同修改版本的圖片。隨后,當(dāng)Alice發(fā)現(xiàn)泄漏版本的圖片時,她可W檢查泄漏版本是Bob 版本或是Carole版本。
[0008] 運種技術(shù)存在許多限制,導(dǎo)致盡管從很久之前就知道運種技術(shù)但是它們?nèi)员挥糜?相對較少的情況下。第一限制在于必須提前知道所追蹤的數(shù)據(jù)和接收方,運是由于否則無 法針對每個目的接收方修改數(shù)據(jù)。第二限制在于修改必須不能改變數(shù)據(jù)的語義,在二進制 原生數(shù)據(jù)(例如,壓縮或加密數(shù)據(jù))的情況下運并非總是可行的。
[0009] 由于污點追蹤(還稱作污點檢查)是在程序的代碼執(zhí)行期間檢測任何數(shù)據(jù)泄漏 看,污點追蹤是一種動態(tài)技術(shù)。污點追蹤將污點與由程序操控的數(shù)據(jù)(例如,輸入數(shù)據(jù))相 關(guān)聯(lián)。然后,將污點傳播給在某種程度上取決于被污染數(shù)據(jù)的任何數(shù)據(jù),即,如果根據(jù)被污 染數(shù)據(jù)生成了數(shù)據(jù),則w相同方式污染該數(shù)據(jù)。因此,當(dāng)污染了一部分的輸出數(shù)據(jù)時,運意 味著運種輸出數(shù)據(jù)在某種程度上取決于具有相同污點的輸入數(shù)據(jù)。
[0010] 必須對運行分析程序的系統(tǒng)進行儀表化W便進行污點追蹤:它包含將污點與 對象相關(guān)聯(lián)的"污點映射"。諸如lib壯t (V. P. Kemerlis,G. Portokalidis,K. Jee和 A. D. Keromytis,"libdft :Practical DynamicData Flow Tracking for Commodity Systems" in VEE'12,2012)和可W構(gòu)造在PIN上的P;rivacyScope(也稱作hin^raser) (D. (Yu)Zhu,J. Jung, D. Song, T. Kohno和D. Wetherall,"TaintE;rase;r:P;rotecting Sensitive Data Leaks Using Application-Level Taint Tracking"ACM Oper.Syst. Rev.,2011.)的所謂的精細(xì)污點追蹤系統(tǒng)允許字節(jié)等級的污染,運意味著污點映射將污點 與存儲器的每個字節(jié)相關(guān)聯(lián)。其它污點追蹤系統(tǒng)(諸如,PHP和Ruby編程語言中包括的污 點追蹤系統(tǒng))對諸如變量的較高等級對象進行工作。諸如化intDroid和Blare的粗粒污 點追蹤系統(tǒng)對較大對象(存儲器頁面、方法、消息、文件等)進行操作。
[0011] 污點映射存在兩個嚴(yán)格限制。首先,污點映射應(yīng)是安全的,否則攻擊者會微調(diào)該污 點并防止進行數(shù)據(jù)泄漏檢測。其次,污點映射應(yīng)該在語義上是完好的(sound),運意味著污 點(通常為比特序列)在執(zhí)行過程中總是具有相同語義。
[0012] 在受控系統(tǒng)(受監(jiān)控的執(zhí)行、儀表化內(nèi)核和最近地,安全網(wǎng)絡(luò))中,現(xiàn)有技術(shù)的污 點追蹤方案滿足運兩個限制。然而,在由非儀表化系統(tǒng)操控數(shù)據(jù)的不受控系統(tǒng)中不存在運 樣的解決方案。
[0013] 另一技術(shù)是信息流追蹤,信息流追蹤是靜態(tài)技術(shù)集合,包括流推理、靜態(tài)分析和符 號執(zhí)行,W便進行程序分析,"靜態(tài)"意味著在執(zhí)行之前針對數(shù)據(jù)泄漏分析程序。信息流追 蹤的目標(biāo)在于在發(fā)生泄漏之前檢測在程序中發(fā)生泄漏的可能性。如果沒有檢測到泄漏可能 性,則程序可W運行,而無需預(yù)防措施。否則,用戶可W禁止程序,或程序可W在??诒Wo模 式下運行。當(dāng)單獨使用時,信息流追蹤用于數(shù)據(jù)泄漏預(yù)防,但在結(jié)合污點追蹤使用時,如下 所述,信息流追蹤可W改善數(shù)據(jù)泄漏檢測。
[0014] 另一解決方案實現(xiàn)為Blare,Blare結(jié)合規(guī)定了允許哪些污點流向哪些文件/容器 (其中后者可W是網(wǎng)絡(luò)接口)的安全政策集,來使用污點追蹤。Blare是粗粒的并W內(nèi)核級 進行操作。在2012年,將Blare部分?jǐn)U展到安全網(wǎng)絡(luò),因此,允許使用商業(yè)互聯(lián)網(wǎng)協(xié)議安全 選項(CIPS0)在主機之間傳輸污點。
[0015] 在示例情況中,現(xiàn)有技術(shù)的水平不能幫助Alice。例如,水印支持Alice確定她 發(fā)送給Bob的拷貝已經(jīng)被泄漏,但是她無法確定泄漏源。此外,數(shù)據(jù)追蹤技術(shù)僅允許在由 Alice控制的系統(tǒng)內(nèi)進行數(shù)據(jù)追蹤,但是當(dāng)數(shù)據(jù)離開她所控制的系統(tǒng)時,不生成其它信息。 即使Bob同意在他的系統(tǒng)中輸入污點追蹤構(gòu)架,現(xiàn)有技術(shù)的水平不允許在Alice和Bob構(gòu) 架之間進行協(xié)作。Alice最多可W希望的是關(guān)于文件A是從她系統(tǒng)中的機器泄漏的信息。
[0016] 因此,可W認(rèn)識到,需要一種可W改善當(dāng)前污點追蹤系統(tǒng)的解決方案。本公開提供 了運種解決方案。
【發(fā)明內(nèi)容】
[0017] 在第一方面,本公開針對的是一種用于參與由至少另一污點追蹤裝置進行的污點 追蹤的裝置。所述裝置包括處理器,配置為:生成針對數(shù)據(jù)項目的內(nèi)部污點;執(zhí)行對數(shù)據(jù)項 目的污點追蹤,對數(shù)據(jù)項目的污點追蹤包括:向至少一個另一數(shù)據(jù)項目傳播內(nèi)部污點;向 另一設(shè)備發(fā)送數(shù)據(jù)項目;W及針對向所述另一設(shè)備發(fā)送的每個數(shù)據(jù)項目,將所述數(shù)據(jù)項目 的名稱和污點發(fā)送至污點追蹤實體。
[0018] 在第一實施例中,處理器還被配置為:針對向所述另一設(shè)備發(fā)送的每個數(shù)據(jù)項目, 將所述裝置的標(biāo)識符和所述另一設(shè)備的標(biāo)識符發(fā)送至所述追蹤實體。
[0019] 在第二實施例中,所述處理器還配置為:從所述另一設(shè)備接收數(shù)據(jù)項目,并針對從 所述另一設(shè)備接收的每個數(shù)據(jù)項目,將所述數(shù)據(jù)項目的名稱和污點發(fā)送至所述污點追蹤實 體。有利的是,所述處理器還被配置為針對從所述另一設(shè)備接收的每個數(shù)據(jù)項目,將所述裝 置的標(biāo)識符和所述另一設(shè)備的標(biāo)識符發(fā)送至所述污點追蹤實體。
[0020] 在第S實施例中,數(shù)據(jù)項目的名稱是所述數(shù)據(jù)項目的初始內(nèi)部污點。
[0021] 在第四實施例中,所述污點是使用指紋函數(shù)獲得的。有利的是指紋函數(shù)是散列函 數(shù),具體地,SHA-3。
[0022] 在第二方面,本公開針對的是一種用于污點追蹤的方法,包括在裝置的處理器處: 生成針對數(shù)據(jù)項目的名稱和污點;將所述數(shù)據(jù)項目發(fā)送至另一設(shè)備;W及針對所述數(shù)據(jù)項 目,將所述數(shù)據(jù)項目的名稱和污點發(fā)送至污點追蹤實體。
[0023] 在第一實施例中,所述方法還包括針對所述數(shù)據(jù)項目,將所述裝置的標(biāo)識符和所 述另一設(shè)