苍井优一级毛片免费观看,成年网站在线观看,日本一二三不卡视频,日日天天人人夜夜九九

24小時(shí)論文定制熱線(xiàn)

熱門(mén)畢設:土木工程工程造價(jià)橋梁工程計算機javaasp機械機械手夾具單片機工廠(chǎng)供電采礦工程
您當前的位置:論文定制 > 畢業(yè)設計論文 >
快速導航
畢業(yè)論文定制
關(guān)于我們
我們是一家專(zhuān)業(yè)提供高質(zhì)量代做畢業(yè)設計的網(wǎng)站。2002年成立至今為眾多客戶(hù)提供大量畢業(yè)設計、論文定制等服務(wù),贏(yíng)得眾多客戶(hù)好評,因為專(zhuān)注,所以專(zhuān)業(yè)。寫(xiě)作老師大部分由全國211/958等高校的博士及碩士生設計,執筆,目前已為5000余位客戶(hù)解決了論文寫(xiě)作的難題。 秉承以用戶(hù)為中心,為用戶(hù)創(chuàng )造價(jià)值的理念,我站擁有無(wú)縫對接的售后服務(wù)體系,代做畢業(yè)設計完成后有專(zhuān)業(yè)的老師進(jìn)行一對一修改與完善,對有答辯需求的同學(xué)進(jìn)行一對一的輔導,為你順利畢業(yè)保駕護航
代做畢業(yè)設計
常見(jiàn)問(wèn)題

基于機器學(xué)習的Java靜態(tài)漏洞掃描系統的設計與實(shí)現

添加時(shí)間:2021/07/09 來(lái)源:未知 作者:樂(lè )楓
本系統旨在將學(xué)術(shù)研究成果應用于工業(yè)界實(shí)際項目中,面向 Web 開(kāi)發(fā)常用的 Java 語(yǔ)言,利用污點(diǎn)分析、程序切片和 BLSTM 為開(kāi)發(fā)或安全工程師提供更準確的代碼掃描服務(wù),進(jìn)而減輕用戶(hù)工作量,保證軟件開(kāi)發(fā)進(jìn)度和質(zhì)量。
以下為本篇論文正文:

摘 要

  隨著(zhù)軟件系統應用領(lǐng)域不斷擴大,對于軟件和信息系統的攻擊日益增多,人們對軟件安全的要求不斷提升。為此,在軟件開(kāi)發(fā)和測試過(guò)程中,工程師使用靜態(tài)代碼分析系統對軟件代碼進(jìn)行安全性?huà)呙瑁⒃u估分析報告,只有通過(guò)安全性評估的軟件才可以部署至線(xiàn)上運行。然而,傳統代碼分析是保守的,為不遺漏安全風(fēng)險,系統往往會(huì )拋出大量誤報,這些誤報增加了安全工程師工作量,進(jìn)而對軟件開(kāi)發(fā)進(jìn)度產(chǎn)生影響。隨著(zhù)機器學(xué)習領(lǐng)域的發(fā)展,學(xué)術(shù)界已將機器學(xué)習算法運用于代碼分析以發(fā)現漏洞或降低誤報,然而這些工作只適用于小規模程序,對于在大規模應用還存在著(zhù)種種問(wèn)題。

  本系統旨在將學(xué)術(shù)研究成果應用于工業(yè)界實(shí)際項目中,面向 Web 開(kāi)發(fā)常用的 Java 語(yǔ)言,利用污點(diǎn)分析、程序切片和 BLSTM 為開(kāi)發(fā)或安全工程師提供更準確的代碼掃描服務(wù),進(jìn)而減輕用戶(hù)工作量,保證軟件開(kāi)發(fā)進(jìn)度和質(zhì)量。在污點(diǎn)分析方面,本系統利用 Find Security Bugs 的大量規則,保證低漏報的同時(shí),對該工具的輸出進(jìn)行改進(jìn),使之反饋更詳細的污點(diǎn)傳播路徑,增強報告可解釋性;接著(zhù),本系統利用程序切片技術(shù),對每一個(gè)漏洞實(shí)例進(jìn)行代碼切片,為了保證切片效率和穩定性,本文針對實(shí)際 Jar 包對切片器進(jìn)行優(yōu)化并提出分段切片思想,對于一個(gè)漏洞報告,將其對應的污點(diǎn)傳播路徑分解為小的污染流片段集合,再對每一個(gè)片段進(jìn)行后向程序切片;最后,系統通過(guò) BLSTM 模型,對預處理后的漏洞切片集合做預測,根據切片的預測結果推導漏洞實(shí)例本身是否為誤報。

  本系統目前已代替傳統污點(diǎn)傳播分析引擎在線(xiàn)上部署,同時(shí)實(shí)驗結果表明,本系統可以在可接受的掃描時(shí)間下,取得更加準確的掃描結果。在效率上,本系統優(yōu)化傳統切片,每個(gè)項目的整體掃描時(shí)間不超過(guò) 1 小時(shí),在準確性上,本系統誤報預測精確率達 90.53 %,即相對于單純的污點(diǎn)傳播,本系統在遺漏少量真實(shí)漏洞的前提下,排除 25.44 % 誤報,大大減輕安全運營(yíng)人員的代碼審計工作量,從而在整體上加快軟件開(kāi)發(fā)過(guò)程。

  關(guān)鍵詞:靜態(tài)代碼分析,污點(diǎn)分析,程序切片,BLSTM

Abstract

  As the application area of software systems continues to expand, attacks on software and information systems are increasing. So nowadays people pay more and moreattention to software security. During software development and testing, engineersoften scan software codes with static code analysis systems. Only software that haspassed the security testing can be deployed online. While traditional static code analysis is often conservative. In order not to miss any security risks, they often give alarge number of false positives. These false positives not only increase the workloadof security engineers, but also delay the progress of software development. With thedevelopment of machine learning, researchers have applied machine learning on codeanalysis to discover vulnerabilities or reduce false positives. However, their works areonly applicable to small?scale programs.

  This system aims to apply academic research to the real world. For one of themost common languages in Web development, Java, this system utilizes taint analysis, program slicing, and BLSTM to provide more accurate code analysis services fordevelopment or security engineers. In terms of taint analysis, the system uses a largenumber of rules in Find Security Bugs to ensure low false negatives. In addition, itcan give taint propagation paths to make the report more readable. Then, the systemslices each vulnerability instance. In order to ensure slicing efficiency and stability,this system optimizes the slicer for the actual Jar package and proposes an idea called??segmented slicing. For a taint vulnerability, its taint paths are pided into small setof taint flow fragments, then the system uses backward program slicing to slice eachtaint flow. Finally, the system uses the BLSTM model to predict vulnerability's slicing set which has been pre?processed, and infer whether the vulnerability instance is falsepositive based on the slice prediction and taint flow logic.

  This system has replaced the traditional taint analysis engine online. The experimental results show that the system can obtain more accurate scanning results within anacceptable scanning time. In terms of efficiency, the system optimizes traditional slicing to ensure that the scan time of each project does not exceed 1 hour. For accuracy,the system's precision rate reaches 90.53%. In other words, compared to Find SecurityBugs, the system has eliminated 25.44% false positives, which greatly reduced the codeaudit work.

  Keywords: SCA, Taint Analysis, Program Slicing,BLSTM

Java靜態(tài)漏洞掃描系統

目錄

  第一章 引言

  1.1 項目背景和意義

  隨著(zhù)網(wǎng)絡(luò )技術(shù)和應用飛速發(fā)展,信息系統安全正面臨著(zhù)前所未有的挑戰。網(wǎng)絡(luò )化和互聯(lián)互通性已經(jīng)成為當前軟件和信息系統發(fā)展的大勢所趨,互聯(lián)網(wǎng)導致系統攻擊面增大,使系統面臨的安全威脅空前增加。另一方面,隨著(zhù)軟件和信息系統的業(yè)務(wù)不斷豐富,復雜性也不斷提高,這不僅使漏洞利用方式不斷增加,而且使漏洞檢測難度不斷提高,盡管開(kāi)發(fā)者已經(jīng)投入了大量精力進(jìn)行安全編程,但是軟件漏洞仍然存在,并將繼續成為一個(gè)重大問(wèn)題 [1].根據國際通用漏洞發(fā)布組織 MITRE 統計,在 1999 年,僅有 1600 個(gè)通用漏洞(CVE,Common Vulnerabilitiesand Exposures)被發(fā)現;到了 2014 年,新發(fā)現的 CVE 數量已接近 10000 個(gè) [2];而至今(2020 年 1 月 26 日),該數字已經(jīng)上升到了 129695 個(gè) 1.同時(shí),根據國家互聯(lián)網(wǎng)應急中心(CNCERT/CC,National Computer Network Emergency ResponseTechnical Team/Coordination Center of China)的報告 2顯示,僅 2019 年上半年,國家信息安全漏洞共享平臺(CNVD)就收錄了通用型安全漏洞 5859 個(gè),其中Web 漏洞占比 24.9%,位居第二。

  從以往發(fā)生的安全事件來(lái)看,針對 Web 漏洞的攻擊可導致的后果極為嚴重,一個(gè)網(wǎng)站系統只要有一處脆弱點(diǎn),攻擊者將會(huì )使用一切手段對該網(wǎng)站發(fā)起攻擊,篡改網(wǎng)頁(yè)內容,竊取服務(wù)器數據甚至在服務(wù)器中執行惡意代碼,造成更嚴重的后果。

  源代碼安全是保證軟件安全的基礎。對于源代碼進(jìn)行安全掃描,可以在源頭處杜絕安全問(wèn)題,根據 2019 年中國軟件評測中心的《2019 大中型政企機構網(wǎng)絡(luò )安全建設發(fā)展趨勢研究報告》顯示,進(jìn)行源碼掃描能有效減少 10%?50% 安全漏洞,降低軟件安全建設和運維成本。因此,源碼安全日益受到中大型政企機構的重視,在此方面投入也不斷提高,其中,構建一款具有高準確率的靜態(tài)代碼分析(SCA,static code analysis)系統顯得尤為重要 [3].

  由于軟件數量和規模擴大,人們總希望能夠通過(guò)自動(dòng)化技術(shù)發(fā)現代碼中的漏洞,從開(kāi)源工具到商業(yè)工具,從工程實(shí)踐到學(xué)術(shù)領(lǐng)域,目前已有許多關(guān)于代碼靜態(tài)掃描系統的應用和研究 [1, 3-15].然而目前靜態(tài)代碼分析系統仍存在或多或少的問(wèn)題,在工業(yè)界,SCA 使用基于模式匹配、數據流分析等技術(shù),往往希望不漏掉真實(shí)漏洞--不產(chǎn)生漏報,但是它們產(chǎn)生了大量誤報 [3, 16, 17].過(guò)高的誤報使人工審核任務(wù)加重,讓安全工程師將大量精力浪費在無(wú)害代碼上 [5].在實(shí)際生產(chǎn)中,安全工程師為了權衡誤報與漏報,必須不斷地設計更加精巧的掃描規則,再一次加重了安全工程師負擔 [1, 18],并對安全工程師個(gè)人經(jīng)驗有很高的要求。學(xué)術(shù)界對提高 SCA 的準確性進(jìn)行了更深入的研究,引入了諸如符號執行,機器學(xué)習等技術(shù),但是受限于計算能力,它們往往只能應對小規模代碼項目,如何讓學(xué)術(shù)界成果應用到工業(yè)界,使其適應大規模程序,是安全工程師亟待考慮的問(wèn)題。

  本文旨在設計一款基于污點(diǎn)傳播和機器學(xué)習的 Java 靜態(tài)代碼掃描系統,通過(guò)污點(diǎn)傳播、程序切片和雙向長(cháng)短記憶網(wǎng)絡(luò )(BLSTM, Bidirectional Long ShortTerm Memory)技術(shù),提供準確的安全掃描服務(wù)。具體來(lái)說(shuō),用戶(hù)輸入一個(gè)已編譯好的 Jar 包后,該系統以污點(diǎn)分析為基礎,先產(chǎn)生一個(gè)初步的漏洞結果。由于污點(diǎn)分析存在過(guò)污染、無(wú)法識別清潔函數問(wèn)題,該結果存在大量誤報,接著(zhù)系統根據初步結果進(jìn)行分解,將其劃分為多個(gè)子污染流,對每個(gè)污染流進(jìn)行后向程序切片,并用 BLSTM 算法模型預測切片是否能夠向下傳播污點(diǎn),從而推導每個(gè)漏洞實(shí)例是否可利用,并將疑似誤報的漏洞威脅等級降低,以此讓安全工程師或軟件開(kāi)發(fā)人員將更多注意力放在更可能為漏洞的結果上。同時(shí),用戶(hù)可以對漏洞進(jìn)行標注,通過(guò)模型周期性的迭代學(xué)習,預測準確率將不斷提高。系統對于污點(diǎn)分析得到的傳播路徑進(jìn)行拆解,通過(guò)限制調用圖和去依賴(lài)切片技術(shù),解決了學(xué)術(shù)工具只能應對小規模程序的問(wèn)題,填補了學(xué)術(shù)界和工業(yè)界的鴻溝,而基于學(xué)術(shù)界前沿工作,本系統相對于傳統掃描工具結果更準確。

  1.2 研究現狀

  本系統旨在利用傳統方法配合機器學(xué)習對 Java 軟件源代碼進(jìn)行靜態(tài)安全掃描,因此本節將詳細介紹工業(yè)界傳統靜態(tài)代碼分析系統應用現狀和學(xué)術(shù)界基于機器學(xué)習的靜態(tài)安全掃描研究現狀。

  1.2.1 傳統靜態(tài)代碼分析

  系統應用現狀在項目上線(xiàn)前對項目代碼進(jìn)行靜態(tài)掃描已經(jīng)成為軟件開(kāi)發(fā)中的最佳實(shí)踐,在實(shí)際操作中,各個(gè)企業(yè)會(huì )根據實(shí)際情況使用第三方或自研靜態(tài)掃描產(chǎn)品。本小節就目前常用掃描產(chǎn)品和靜態(tài)掃描技術(shù)進(jìn)行介紹。

  目前靜態(tài)安全掃描產(chǎn)品使用的技術(shù)主要有詞法分析技術(shù)、數據流分析技術(shù)和形式化分析技術(shù)。詞法分析技術(shù)主要是對代碼中敏感函數進(jìn)行匹配,從而發(fā)現安全性漏洞,這一類(lèi)分析技術(shù)產(chǎn)生時(shí)間較早,實(shí)現也較為簡(jiǎn)單,但是由于其不考慮程序上下文,存在大量誤報,在實(shí)際情況中使用較少。

  數據流分析技術(shù)模擬程序中敏感數據流動(dòng)從而發(fā)現安全漏洞,其衍生出的污點(diǎn)分析方法是目前實(shí)際使用的主要檢測方法,這一類(lèi)分析方法適合于數組越界,注入類(lèi)漏洞,因為這些漏洞特征表現為特定變量在某一程序點(diǎn)上狀態(tài)滿(mǎn)足或不滿(mǎn)足某一規則,通過(guò)對數據的跟蹤恰好可以識別這些特征。由于其能覆蓋的漏洞種類(lèi)較多,本系統選擇以該技術(shù)為預測的基礎,然而隨著(zhù)目前程序規模不斷擴大,新型程序設計思想和語(yǔ)法不斷出現,加之漏洞成因愈發(fā)復雜,即使是這類(lèi)分析技術(shù)目前也存在大量誤報,例如污點(diǎn)分析無(wú)法很好的處理容器變量、控制流、清潔函數等,企業(yè)中的安全運營(yíng)人員必須通過(guò)手工設計精巧的污點(diǎn)傳播規則,限制開(kāi)發(fā)者所用的清潔函數,或是以手工添加函數摘要的方式添加清潔函數等方式降低誤報,然而這些方式并不能完全解決污點(diǎn)分析的弊端,仍有誤報不斷產(chǎn)生,安全工程師需要花大量時(shí)間處理誤報。

  形式化分析技術(shù)往往用于一些可以用數學(xué)邏輯表達的安全漏洞,如 C/C++語(yǔ)言中指針變量二次釋放,緩沖區溢出等問(wèn)題,這一類(lèi)技術(shù)將漏洞存在性問(wèn)題變?yōu)閿祵W(xué)邏輯上的約束求解和邏輯推導問(wèn)題,由于目前程序規模較大,該技術(shù)面臨著(zhù)求解規模空間大,無(wú)法推導等問(wèn)題,此外該技術(shù)針對的漏洞類(lèi)型較少,將問(wèn)題轉變?yōu)閿祵W(xué)模型需要大量人力成本。

  目前商業(yè) SCA 主要有 Fortify SCA 3、LGTM 4,Infer 5等。Fortify 為老牌安全掃描工具,其主要結合詞法分析,數據流分析、配置分析等掃描技術(shù),但就像前文所說(shuō),其默認規則存在大量誤報;LGTM 為較為新型的安全掃描器,是Google、微軟所使用的安全掃描器之一,其創(chuàng )新點(diǎn)在于其通過(guò)定義 QL 語(yǔ)法編寫(xiě)掃描器規則,將掃描邏輯和規則邏輯分離,使安全工程師能夠較快地編寫(xiě)規則;Infer 為 Facebook 所使用的安全掃描器之一,也是少數使用形式化分析技術(shù)實(shí)現的掃描器,其使用分離邏輯和雙向假說(shuō)推理的思想,解決了傳統形式化分析求解規模過(guò)大的問(wèn)題,但其檢測能力目前只限于資源泄露,空指針漏洞,不能用于其他類(lèi)型(如常見(jiàn)的 OWASP TOP 10)的漏洞檢測。

  1.2.2 基于機器學(xué)習的靜態(tài)安全掃描研究現狀

  為解決傳統掃描器高誤報、需要花大量人力定義規則等問(wèn)題,隨著(zhù)機器學(xué)習領(lǐng)域的不斷發(fā)展,學(xué)術(shù)界也一直在探索機器學(xué)習在靜態(tài)安全掃描上的應用。

  研究初期,研究者們提出了一些半智能化的掃描方案 [3, 19, 20],這些方案主要由人工定義代碼特征(如:語(yǔ)句長(cháng)度,關(guān)鍵 API 調用位置等),并使用傳統的機器學(xué)習算法進(jìn)行分類(lèi)。這一類(lèi)工作的人工標記思路與本系統類(lèi)似,然而由于其仍需要手工設計特征、泛化能力較弱等原因,并沒(méi)有得到大面積推廣。

  隨著(zhù)研究工作不斷深入,部分研究者提出通過(guò)相似度識別漏洞 [4, 21],它的主要思想是如果一個(gè)待測代碼片段 A 與已有代碼片段 B 在某漏洞特征上具有高相似度,并且已知代碼 B 為漏洞代碼,那么代碼 A 就很可能也為漏洞代碼。在特征工程上,研究者們分別將代碼特征抽象為詞向量 [21]、樹(shù)和圖 [22],以此比較相似性。李珍等學(xué)者提出 VulPecker [4] 從六個(gè)維度定義多個(gè)代碼特征并且設計多種相似度算法,他們認為不同類(lèi)型漏洞適用于不同特征和相似算法,并且一個(gè)優(yōu)秀的相似度算法可以將含漏洞和安全代碼進(jìn)行區分,因此設計相似度算法選擇器,通過(guò)已有漏洞代碼庫(NVD)和補丁信息訓練相似度算法選擇器,得到 < 漏洞類(lèi)型, 算法 > 對應關(guān)系,當有新的被測代碼輸入時(shí),通過(guò)各類(lèi)漏洞的相似度算法識別代碼是否有這些漏洞。這類(lèi)工作的優(yōu)勢在于不需要大量標記數據集即可進(jìn)行掃描,但是大多數工作仍需要手工設計特征,并且代碼識別精度較低,因此并沒(méi)有得到大規模使用。

  還有部分研究者使用深度學(xué)習直接提取代碼特征,將識別漏洞代碼問(wèn)題轉化為分類(lèi)問(wèn)題 [1, 9, 14].李珍等學(xué)者提出的 VulDeePecker [1] 是這一方向的代表工作之一,該工具首先抽取與安全 API 相關(guān)的程序代碼(文中稱(chēng)其為 gadgets,它們類(lèi)似于對調用安全 API 位置的后向切片),再將其代碼轉化為向量,結合標記后使用 BLSTM 學(xué)習,當輸入待測代碼后,將其做相同的向量化操作,再由BLSTM 預測其是否為漏洞,經(jīng)過(guò)試驗,該工具在數據集上具有較高準確率,并且在 3 款實(shí)際軟件中發(fā)現了 4 個(gè)未知漏洞,但是該工具只能預測 C/C++ 程序的漏洞,并且在切片時(shí)沒(méi)有考慮控制流信息;Koc 等人提出使用機器學(xué)習降低污點(diǎn)傳播誤報率的方法 [14],他們在文中總結了污點(diǎn)傳播的誤報模式,并且提出使用對方法體進(jìn)行程序切片和 LSTM 預測降低誤報率的想法,經(jīng)過(guò)試驗,他們認為該方法能夠有效降低誤報;在 2019 年,Koc 等人對先前工作展開(kāi)進(jìn)一步實(shí)證研究 [9],對比手工設計特征、詞袋結合隨機森林、程序切片結合 BLSTM 和程序切片結合圖神經(jīng)網(wǎng)絡(luò )(GNN)的預測效果,實(shí)驗證明,BLSTM 組預測效果普遍優(yōu)于其他組,并且,在切片后對切片進(jìn)行泛化處理可以大大提高預測效果。Koc等人工作是本系統的主要參考,對于函數體,本系統也是用類(lèi)似的切片技術(shù)和預測技術(shù),然而,他們工作中提到程序切片只適用于小規模程序的問(wèn)題,因此他們工具只能對于漏洞的最后一個(gè)函數體(污點(diǎn)傳播匯聚點(diǎn))進(jìn)行切片,由于污點(diǎn)是否能夠傳播并不等價(jià)于污點(diǎn)是否能夠在匯聚點(diǎn)傳播,因此無(wú)法用于實(shí)際使用,本系統創(chuàng )新性的提了分解污點(diǎn)傳播過(guò)程和限制調用圖切片方法,解除這一限制,即本系統可以對污染傳播全流程進(jìn)行切片和預測,保證預測結果準確性。

  1.3 本文主要研究工作

  為解決傳統掃描工具檢測誤報率高的問(wèn)題,本系統實(shí)現一款基于污點(diǎn)分析、程序切片和 BLSTM 的靜態(tài)代碼掃描系統。該系統面向 Java 語(yǔ)言,以開(kāi)發(fā)者編譯后得到的 Jar 包為輸入,提供準確的漏洞掃描報告,從而減輕安全工程師工作量,加快軟件開(kāi)發(fā)效率。本文主要研究工作如下。

  本文首先分析目前常用程序安全分析技術(shù)的原理和優(yōu)缺點(diǎn),選擇靜態(tài)污點(diǎn)分析作為系統的基礎分析方法,然后根據學(xué)術(shù)界前沿研究成果,選擇基于 Joana的后向程序切片和 BLSTM 作為誤報預測方法,最后分析用戶(hù)需求設計系統架構,將系統分為污點(diǎn)分析模塊,程序切片模塊,數據預處理模塊和誤報預測模塊,以 C/S 架構向用戶(hù)提供服務(wù)。

  在污點(diǎn)分析模塊,本系統以 Find Security Bugs 工具6的污點(diǎn)分析為基礎,改進(jìn)其分析流程,對用戶(hù)提交的 Jar 包集合進(jìn)行污點(diǎn)分析,輸出污點(diǎn)分析報告,與原始 Find Security Bugs 不同,本系統在報告中不僅報告代碼中潛在漏洞項、代碼位置之外,還額外向用戶(hù)展示可能被利用的污點(diǎn)傳播路徑,路徑由污點(diǎn)傳播樹(shù)表示,一方面讓用戶(hù)更清晰地了解漏洞發(fā)生原理,快速判斷誤報,另一方面為程序切片提供依據。

  在程序切片模塊,系統基于 Joana 實(shí)現了一套適用于實(shí)際應用程序的切片器,完成無(wú)依賴(lài)切片、限制調用圖規模切片和異構 Jar 包的切片。具體來(lái)說(shuō),對于上一模塊報告中的污點(diǎn)傳播樹(shù),系統對其相關(guān)函數拆分,得到污染流,對污染流進(jìn)行限制規模切片,進(jìn)一步縮小切片規模,為系統穩定運行和準確預測提供保障。

  定義 1.1 (污點(diǎn)傳播樹(shù))。 污點(diǎn)傳播樹(shù)是反映污點(diǎn)傳播的樹(shù)形數據結構,樹(shù)中根節點(diǎn)為調用入口函數的調用者函數,樹(shù)中其他節點(diǎn)為函數調用信息或返回語(yǔ)句信息,由于同一層節點(diǎn)存在順序,由孩子兄弟表示法表示。

  定義 1.2 (污點(diǎn)傳播流)。 污點(diǎn)傳播流用于指導切片的一種數據結構,實(shí)際為函數摘要至關(guān)鍵點(diǎn)行號的二元組。

  在預處理模塊,系統參考 Koc 等學(xué)者工作 [9] 和實(shí)際應用的切片內容,提出一套適用于實(shí)際應用代碼的泛化和向量化方案,保證預測模型快速收斂和用戶(hù)對準確性的要求。

  在誤報預測模塊,系統基于 Pytorch 實(shí)現經(jīng)典的 BLSTM 神經(jīng)網(wǎng)絡(luò )三層架構,通過(guò)該模型預測污染流是否能夠傳播污點(diǎn),若一棵傳播樹(shù)中存在一處傳播流無(wú)法傳播污點(diǎn),那么該傳播樹(shù)表示的傳播路徑被標記為不可利用,當一個(gè)漏洞實(shí)例的所有傳播樹(shù)不可利用時(shí),系統推導得到該漏洞實(shí)例為誤報,經(jīng)過(guò)試驗,該模型可以準確預測誤報。同時(shí)系統基于 Django、Celery 和 MySQL 等技術(shù)實(shí)現后臺服務(wù),用戶(hù)可以根據需要定制模型各項參數并定時(shí)觸發(fā)模型訓練流程。

  綜上,本系統將學(xué)術(shù)界前沿技術(shù)成功運用到實(shí)際生產(chǎn)中,首次提出對污點(diǎn)分析結果拆分,將漏洞預測任務(wù)轉化為污點(diǎn)傳播樹(shù)中子污染流是否安全的預測任務(wù);改進(jìn)后向切片器,通過(guò)限制調用圖的方式保證切片過(guò)程在絕大多數污染流上能夠順利進(jìn)行,從而保證系統在各類(lèi)規模程序上都能提供準確的漏洞掃描報告。

  1.4 本文組織結構

  本文共分為五個(gè)章節,組織結構如下:

  第一章,引言部分,介紹本系統背景和意義,分析當前關(guān)于靜態(tài)安全掃描的研究現狀以及介紹本文主要研究工作。

  第二章,介紹相關(guān)技術(shù),介紹目前較常見(jiàn)的漏洞挖掘技術(shù),對比相關(guān)技術(shù)優(yōu)缺點(diǎn),說(shuō)明本系統的技術(shù)方案,并對系統中使用的核心技術(shù)如污點(diǎn)分析,程序切片和 BLSTM 算法進(jìn)行介紹。

  第三章,Java 靜態(tài)安全掃描系統的需求分析和設計,首先介紹系統整體概述,分析系統功能性和非功能性的需求,接著(zhù)說(shuō)明系統總體設計,再分模塊從類(lèi)圖和流程兩方面分別說(shuō)明模塊設計。

  第四章,Java 靜態(tài)安全掃描系統實(shí)現和測試,對于各個(gè)模塊的實(shí)現細節結合漏洞實(shí)例代碼進(jìn)行詳細說(shuō)明,接著(zhù)介紹系統的功能測試、健壯性和性能測試,對系統預測效果進(jìn)行評估,最后展現系統運行效果。

  第五章,總結和展望,對本系統和論文的工作進(jìn)行總結,并提出本系統的不足和未來(lái)工作方向。

  第二章 相關(guān)技術(shù)綜述

  2.1 漏洞挖掘技術(shù)

  2.1.1 基于代碼分析的漏洞挖掘技術(shù)

  2.1.1.1 詞法分析技術(shù)

  2.1.1.2 數據流和控制流分析技術(shù)

  2.1.1.3 形式化方法分析技術(shù)

  2.1.1.4 符號執行技術(shù)

  2.1.2 基于模糊測試的漏洞挖掘技術(shù)

  2.2 污點(diǎn)分析

  2.2.1 污點(diǎn)分析原理

  2.2.1.1 污點(diǎn)分析三要素

  2.2.1.2 污點(diǎn)分析過(guò)程

  2.2.2 污點(diǎn)分析的優(yōu)勢和不足

  2.2.3 Java 污點(diǎn)分析工具選型

  2.3 程序切片技術(shù)

  2.3.1 程序切片定義

  2.3.2 程序切片技術(shù)

  2.3.3 后向程序切片的優(yōu)勢與不足

  2.4 BLSTM 算法

  2.4.1 LSTM 原理介紹

  2.4.2 雙向讀取--BLSTM

  2.4.3 BLSTM 的優(yōu)勢

  2.5 Django 框架

  2.5.1 Django 框架簡(jiǎn)介

  2.5.2 Django 框架優(yōu)勢

  2.6 本章小結

  第三章 Java 靜態(tài)安全掃描系統需求分析與設計

  3.1 系統整體概述

  3.2 系統需求分析

  3.2.1 功能性需求

  3.2.2 非功能性需求

  3.2.3 系統用例描述

  3.3 系統總體設計

  3.4 污點(diǎn)分析模塊設計

  3.4.1 流程設計

  3.4.2 污點(diǎn)傳播圖類(lèi)圖設計

  3.4.3 污點(diǎn)傳播樹(shù)和漏洞報告類(lèi)圖設計

  3.4.4 污點(diǎn)分析器類(lèi)圖設計

  3.5 程序切片模塊設計

  3.5.1 流程設計

  3.5.2 類(lèi)圖設計

  3.6 數據預處理模塊設計

  3.6.1 流程設計

  3.6.2 類(lèi)圖設計

  3.7 誤報預測模塊設計

  3.7.1 架構設計

  3.7.2 類(lèi)圖設計

  3.7.3 流程設計

  3.8 數據庫設計

  3.9 本章小結

  第四章 Java 靜態(tài)安全掃描系統實(shí)現和測試

  4.1 一個(gè) XSS 漏洞實(shí)例

  4.2 污點(diǎn)分析模塊的實(shí)現

  4.2.1 記錄污點(diǎn)傳播信息實(shí)現

  4.2.2 構造污點(diǎn)傳播圖實(shí)現

  4.2.3 構造污點(diǎn)傳播樹(shù)并生成注解的實(shí)現

  4.3 程序切片模塊的實(shí)現

  4.3.1 切片控制模塊實(shí)現

  4.3.1.1 切片控制代碼

  4.3.1.2 過(guò)濾漏洞實(shí)例

  4.3.1.3 分解污點(diǎn)傳播樹(shù)

  4.3.2 后向切片的實(shí)現

  4.3.2.1 基于 Joana 的后向切片

  4.3.2.2 SDG 的生成配置類(lèi)

  4.4 數據處理模塊的實(shí)現

  4.4.1 泛化處理

  4.4.2 建立單詞表與向量化

  4.5 誤報預測模塊的實(shí)現

  4.5.1 誤報預測控制

  4.5.2 誤報預測時(shí)序圖

  4.5.3 漏洞標記時(shí)序圖

  4.5.4 批訓練過(guò)程

  4.6 系統測試與運行展示

  4.6.1 測試目標

  4.6.2 功能測試

  4.6.3 健壯性和性能測試

  4.6.4 系統效果評估

  4.6.4.1 參數設置

  4.6.4.2 評估方法和度量

  4.6.4.3 評估數據集

  4.6.4.4 實(shí)驗結果

  4.6.5 系統運行展示

  4.7 本章小結

第五章 總結與展望

  5.1 總結

  為了解決應用安全問(wèn)題,本文設計了一套基于污點(diǎn)分析、程序切片和 BLSTM的靜態(tài)安全掃描系統,旨在從源頭處遏制程序漏洞。相較于傳統的污點(diǎn)分析類(lèi)代碼掃描系統,本系統對污點(diǎn)傳播樹(shù)進(jìn)一步分析,通過(guò)程序切片和先前標記進(jìn)行學(xué)習,能夠有效地排除誤報,保證掃描結果準確性,大大降低了系統使用時(shí)的人力成本。本文主要工作如下:

  1. 本文對開(kāi)源污點(diǎn)傳播工具 Find Security Bugs 進(jìn)行改造,使之能在報告中展示污點(diǎn)傳播樹(shù),友好地向用戶(hù)展示可能的漏洞利用過(guò)程。

  2. 系統對污點(diǎn)傳播樹(shù)進(jìn)行拆分,將污點(diǎn)傳播流和子傳播流作為切片單位進(jìn)行程序切片,系統優(yōu)化了 Joana 切片過(guò)程,使之能夠在缺失依賴(lài)、異構 Jar 包的情況下切片,并通過(guò)限制調用圖限制程序切片范圍,結合污點(diǎn)傳播樹(shù)的拆分,解決了目前切片資源消耗大導致掃描任務(wù)無(wú)法及時(shí)結束的問(wèn)題。

  3. 系統根據實(shí)際情況對切片后的 SSA 進(jìn)行泛化處理,進(jìn)一步保證預測模型的泛化能力。

  4. 系統通過(guò)對漏洞的各個(gè)污點(diǎn)傳播樹(shù)的傳播流及其子污染流進(jìn)行預測,從而預測漏洞是否為誤報。系統采用 BLSTM 模型,該模型在學(xué)術(shù)界已被多項工作證明在漏洞預測領(lǐng)域有較為顯著(zhù)的效果。用戶(hù)在系統界面中能夠得知漏洞預測結果,若為誤報,系統能夠清晰給出判斷依據,即污點(diǎn)在哪一段傳播流中無(wú)法繼續傳播,一定程度上彌補了深度學(xué)習可解釋性差的問(wèn)題。

  安全工程師能夠輕松地對漏洞、傳播樹(shù)和傳播流進(jìn)行標記,并發(fā)起新的學(xué)習任務(wù),不斷提高預測模型的準確率。

  系統被設計為有良好的可拓展性,對于污點(diǎn)分析結果翻譯、切片器和預測器,系統都對其高度抽象為接口,方便后期根據實(shí)際需要對系統中各個(gè)模塊所用技術(shù)進(jìn)行更換。

  經(jīng)過(guò)測試和實(shí)驗,結果表明本系統具有較高的健壯性,在 Maven 倉庫中前100 流行度的項目中系統掃描成功率為 100 %,此外,本系統具有較高準確性,在 OWASP 數據集中,本系統預測模塊能夠準確預測安全污點(diǎn)傳播流,相較于Find Security Bugs,本系統在 OWASP 數據集上提高了約 20 % 的準確率,減少了 25.44 % 的誤報。

  5.2 展望

  本系統是將深度學(xué)習應用于漏洞掃描領(lǐng)域的一次成功探索,實(shí)現了傳統檢測技術(shù)與深度學(xué)習相結合,對 Java 代碼進(jìn)行更準確的安全掃描任務(wù),然而在未來(lái),系統在以下方面還有較大的改進(jìn)空間:

  1. 系統目前只針對 Java 語(yǔ)言,在未來(lái)可以將其方法推廣到其他語(yǔ)言的項目。

  2. 系統只能適用于能用污點(diǎn)分析方法分析的漏洞類(lèi)型,在未來(lái)可以將切片和預測方法推廣到其他基礎分析的誤報排除中。

  3. 系統并不能發(fā)現更多漏報,在未來(lái)可以使用類(lèi)似的切片技術(shù)和預測方法,結合其他經(jīng)典漏洞挖掘技術(shù),在消除漏報方面做進(jìn)一步提升。

  4. 系統在特征表示時(shí),目前實(shí)際上是將切片轉化為單詞序列,再將單詞序列進(jìn)行向量化處理,在未來(lái)可以參考程序圖特征表示的前沿工作,將切片表示成信息更豐富的特征,進(jìn)一步提高預測準確性。

  5. 目前由于數據量有限,對于所有污點(diǎn)漏洞均使用一個(gè)模型進(jìn)行預測,待數據量進(jìn)一步擴大時(shí),可以將針對每一種漏洞單獨訓練模型。

  參考文獻

  [1] Z. Li, D. Zou, S. Xu, X. Ou, H. Jin, S. Wang, Z. Deng, Y. Zhong, VulDeePecker:A Deep Learning?Based System for Vulnerability Detection, in: Proceedings ofthe 2018 Network and Distributed System Security Symposium, Internet Society,Reston, VA, 2018.

  [2] 劉劍, 蘇璞睿, 楊珉, 和亮, 張源, 朱雪陽(yáng), 林惠民, 軟件與網(wǎng)絡(luò )安全研究綜述,軟件學(xué)報 29 (1) (2018) 42-68.

  [3] O. Tripp, S. Guarnieri, M. Pistoia, A. Aravkin, ALETHEIA:Improving the Usability of Static Security Analysis, in: Proceedings of the 2014 ACM SIGSACConference on Computer and Communications Security, ACM Press, New York,New York, USA, 2014, pp. 762-774.

  [4] Z. Li, D. Zou, S. Xu, H. Jin, H. Qi, J. Hu, VulPecker: An automated vulnerabilitydetection system based on code similarity analysis, in: Proceedings of the 32ndAnnual Conference on Computer Security Applications, 2016, pp. 201-213.

  [5] X. Du, B. Chen, Y. Li, J. Guo, Y. Zhou, Y. Liu, Y. Jiang, LEOPARD: Identifying Vulnerable Code for Vulnerability Assessment Through Program Metrics, in:Proceedings of the 2019 IEEE/ACM 41st International Conference on SoftwareEngineering, IEEE, 2019, pp. 60-71.

  [6] C. Cadar, V. Ganesh, P. M. Pawlowski, D. L. Dill, D. R. Engler, EXE: Automatically Generating Inputs of Death, ACM Transactions on Information and SystemSecurity 12 (2) (2008) 1-38.

  [7] D. Hovemeyer, W. Pugh, Finding bugs is easy, Companion to the 19th annual ACM SIGPLAN conference on Object?oriented programming systems, languages, and applications 39 (12) (2004) 92-106.

  [8] O. Tripp, M. Pistoia, S. J. Fink, M. Sridharan, O. Weisman, TAJ: effective taintanalysis of web applications, Proceedings of the 2009 ACM SIGPLAN conferenceon Programming language design and implementation 44 (6) (2009) 87-97.

  [9] U. Koc, S. Wei, J. S. Foster, M. Carpuat, A. A. Porter, An Empirical Assessmentof Machine Learning Approaches for Triaging Reports of a Java Static AnalysisTool, Proceedings of the 12th IEEE Conference on Software Testing, Validationand Verification (2019) 288-299.

  [10] K. Sen, D. Marinov, G. Agha, CUTE: a concolic unit testing engine for C, Proceedings of the 10th European software engineering conference held jointly with13th ACM SIGSOFT international symposium on Foundations of software engineering 30 (5) (2005) 263.

  [11] Y. Xie, A. Aiken, Saturn: A scalable framework for error detection using Booleansatisfiability, ACM Transactions on Programming Languages and Systems 29 (3)(2007) 16.

  [12] C. Cadar, D. Dunbar, D. Engler, Klee: Unassisted and automatic generation ofhigh?coverage tests for complex systems programs, in: Proceedings of the 8thUSENIX Symposium on Operating Systems Design and Implementation, OSDI2008, Vol. 8, 2019, pp. 209-224.

  [13] C. Flanagan, K. R. M. Leino, M. Lillibridge, G. Nelson, J. B. Saxe, R. Stata, Extended static checking for Java, in: Proceedings of the 2002 ACM SIGPLAN Conference on Programming Language Design and Implementation, Vol. 48, ACMPress, New York, New York, USA, 2002, pp. 234-245.

  [14] U. Koc, P. Saadatpanah, J. S. Foster, A. A. Porter, Learning a classifier for falsepositive error reports emitted by static code analysis tools, Proceedings of the 1stACM SIGPLAN International Workshop on Machine Learning and ProgrammingLanguages, co?located with PLDI 2017 (2017) 35-42.

  [15] N. Jovanovic, C. Kruegel, E. Kirda, Pixy: a static analysis tool for detecting Webapplication vulnerabilities, in: Proceedings of the 2006 IEEE Symposium on Security and Privacy, IEEE, 2006, pp. 258-263.

  [16] Y. Kim, J. Lee, H. Han, K.?M. Choe, Filtering false alarms of buffer overflowanalysis using SMT solvers, Information and Software Technology 52 (2) (2010)210-219.

  [17] B. Johnson, Y. Song, E. Murphy?Hill, R. Bowdidge, Why don't software developers use static analysis tools to find bugs?, in: Proceedings of the 35th InternationalConference on Software Engineering, IEEE, 2013, pp. 672-681.

  [18] F. Yamaguchi, A. Maier, H. Gascon, K. Rieck, Automatic Inference of SearchPatterns for Taint?Style Vulnerabilities, in: Proceedings of the 2015 IEEE Symposium on Security and Privacy, IEEE, 2015, pp. 797-812.

  [19] T. Kremenek, D. Engler, Z?Ranking: Using Statistical Analysis to Counter the Impact of Static Analysis Approximations, in: Proceedings of the 10th InternationalConference on Static Analysis, San Diego, CA, USA, 2003, pp. 295-315.

  [20] U. Yuksel, H. Sozer, Automated Classification of Static Code Analysis Alerts:A Case Study, in: Proceedings of the 2013 IEEE International Conference onSoftware Maintenance, IEEE, 2013, pp. 532-535.

  [21] S. Kim, S. Woo, H. Lee, H. Oh, VUDDY: A Scalable Approach for VulnerableCode Clone Discovery, in: Proceedings of the 2017 IEEE Symposium on Securityand Privacy, IEEE, 2017, pp. 595-614.

  [22] N. H. Pham, T. T. Nguyen, H. A. Nguyen, T. N. Nguyen, Detection of recurringsoftware vulnerabilities, in: Proceedings of the 2010 IEEE/ACM internationalconference on Automated software engineering, ACM Press, New York, NewYork, USA, 2010, pp. 447-456.

  [23] 梅宏, 王千祥, 張路, 王戟, 軟件分析技術(shù)進(jìn)展, 計算機學(xué)報 32 (9) (2009) 1697-1710.

  [24] G. A. Kildall, A unified approach to global program optimization, in: Proceedingsof the 1st annual ACM SIGACT?SIGPLAN symposium on Principles of programming languages, ACM Press, New York, New York, USA, 1973, pp. 194-206.

  [25] B. Shastry, F. Yamaguchi, K. Rieck, J.?P. Seifert, Towards Vulnerability DiscoveryUsing Staged Program Analysis, in: Detection of Intrusions and Malware, andVulnerability Assessment, Springer, Cham, 2016, pp. 78-97.

  [26] J. M. Schumann, Automated Theorem Proving in Software Engineering, SpringerBerlin Heidelberg, Berlin, Heidelberg, 2001.

  [27] C. Calcagno, D. Distefano, P. O'Hearn, H. Yang, Compositional shape analysisby means of bi?abduction, in: Proceedings of the 36th annual ACM SIGPLANSIGACT symposium on Principles of programming languages, Vol. 58, ACMPress, Savannah, GA, USA, 2009, pp. 289-300.

  [28] C. Cadar, K. Sen, Symbolic Execution for Software Testing: Three Decades Later,Communications of the ACM 56 (2) (2013) 82-90.

  [29] P. Godefroid, N. Klarlund, K. Sen, DART: directed automated random testing, in:Proceedings of the 2005 ACM SIGPLAN conference on Programming languagedesign and implementation, Vol. 40, ACM Press, New York, New York, USA,2005, pp. 213-223.

  [30] H. Liang, X. Pei, X. Jia, W. Shen, J. Zhang, Fuzzing: State of the Art, IEEETransactions on Reliability 67 (3) (2018) 1199-1218.

  [31] V. J. M. Manes, H. S. Han, C. Han, sang kil Cha, M. Egele, E. J. Schwartz, M. Woo,The Art, Science, and Engineering of Fuzzing: A Survey, IEEE Transactions onSoftware Engineering (2019) 1-1.

  [32] 鄒權臣, 張濤, 吳潤浦, 馬金鑫, 李美聰, 陳晨, 侯長(cháng)玉, 從自動(dòng)化到智能化: 軟件漏洞挖掘技術(shù)進(jìn)展, 清華大學(xué)學(xué)報 (自然科學(xué)版) 58 (12) (2018) 1079-1094.

  [33] N. Stephens, J. Grosen, C. Salls, A. Dutcher, R. Wang, J. Corbetta, Y. Shoshitaishvili, C. Kruegel, G. Vigna, Driller: Augmenting Fuzzing Through SelectiveSymbolic Execution, in: Proceedings of the 2016 Network and Distributed System Security Symposium, Internet Society, Reston, VA, 2016.

  [34] S. Rawat, V. Jain, A. Kumar, L. Cojocar, C. Giuffrida, H. Bos, VUzzer:Application?aware Evolutionary Fuzzing, in: Proceedings of the 2017 Networkand Distributed System Security Symposium, Internet Society, Reston, VA, 2017.

  [35] H. Han, D. Oh, S. K. Cha, CodeAlchemist: Semantics?Aware Code Generation toFind Vulnerabilities in JavaScript Engines, in: Proceedings of the 2019 Networkand Distributed System Security Symposium, No. February, Internet Society, Reston, VA, 2019.

  [36] 王蕾, 李豐, 李煉, 馮曉兵, 污點(diǎn)分析技術(shù)的原理和實(shí)踐應用, 軟件學(xué)報 28 (4)(2017) 860-882.

  [37] M. Weiser, Program Slicing, IEEE Transactions on Software Engineering SE?10 (4) (1984) 352-357.

  [38] B. Xu, J. Qian, X. Zhang, Z. Wu, L. Chen, A brief survey of program slicing,ACM SIGSOFT Software Engineering Notes 30 (2) (2005) 1-36.

  [39] K. J. Ottenstein, L. M. Ottenstein, The program dependence graph in a software development environment, Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments 19 (5) (1984) 177-184.

  [40] S. Horwitz, T. Reps, D. Binkley, Interprocedural slicing using dependence graphs,ACM Transactions on Programming Languages and Systems (TOPLAS) 12 (1)(1990) 26-60.

  [41] J. Su, Z. Tan, D. Xiong, R. Ji, X. Shi, Y. Liu, Lattice?Based Recurrent NeuralNetwork Encoders for Neural Machine Translation, in: Proceedings of the 31stAAAI Conference on Artificial Intelligence, AAAI'17, AAAI Press, 2017, pp.3302-3308.

  [42] B. Hanin, Which Neural Net Architectures Give Rise to Exploding and VanishingGradients?, in: Proceedings of the 32nd International Conference on Neural Information Processing Systems, NIPS'18, Curran Associates Inc., Red Hook, NY,USA, 2018, pp. 580-589.

  [43] S. Hochreiter, J. Schmidhuber, Long Short?Term Memory, Neural Computation9 (8) (1997) 1735-1780.

  [44] A. Hindle, E. T. Barr, Z. Su, M. Gabel, P. Devanbu, On the naturalness of software,in: Proceedings of the 34th International Conference on Software Engineering,IEEE, 2012, pp. 837-847.

  [45] E. C. R. Shin, D. Song, R. Moazzezi, Recognizing Functions in Binaries withNeural Networks, in: Proceedings of the 24th USENIX Conference on SecuritySymposium, SEC'15, USENIX Association, USA, 2015, pp. 611-626.

  [46] M. White, C. Vendome, M. Linares?Vasquez, D. Poshyvanyk, Toward DeepLearning Software Repositories, in: Proceedings of the 12th Working Conferenceon Mining Software Repositories, IEEE, 2015, pp. 334-345.

  [47] P. Kruchten, The 4+1 View Model of architecture, IEEE Software 12 (6) (1995)42-50.

  [48] Y. You, Z. Zhang, C.?J. Hsieh, J. Demmel, K. Keutzer, ImageNet Training in Minutes, in: Proceedings of the 47th International Conference on Parallel Processing,ACM Press, New York, New York, USA, 2018, pp. 1-10.

  [49] E. Hoffer, I. Hubara, D. Soudry, Train Longer, Generalize Better: Closing theGeneralization Gap in Large Batch Training of Neural Networks, in: Proceedingsof the 31st International Conference on Neural Information Processing Systems,Curran Associates Inc., Red Hook, NY, USA, 2017, pp. 1729-1739.

  [50] Y. You, J. Hseu, C. Ying, J. Demmel, K. Keutzer, C.?J. Hsieh, Large?batch trainingfor LSTM and beyond, in: Proceedings of the 2019 International Conference forHigh Performance Computing, Networking, Storage and Analysis, ACM, NewYork, NY, USA, 2019, pp. 1-16.

致 謝

  首先感謝陳振宇老師,感謝您兩年以來(lái)對我的諄諄指導,不僅在學(xué)術(shù)上給我創(chuàng )造了很多機會(huì ),更重要的是教會(huì )我如何做人,讓我如今能以一個(gè)研究生的身份走入社會(huì )。即使是在疫情嚴重時(shí)期,您也不斷地犧牲個(gè)人時(shí)間通過(guò)線(xiàn)上會(huì )議和微信了解我們的畢設進(jìn)展,提出寶貴意見(jiàn),保證了本文的專(zhuān)業(yè)性和技術(shù)深度。

  感謝房春榮老師,在本項目的設計、實(shí)驗安排等方面提出的寶貴建議和意見(jiàn)。同時(shí)感謝實(shí)驗室黃勇老師在技術(shù)上的幫助和指導,是您的嚴格要求保證了本系統的健壯性。

  感謝張雙江、李灝宇等師兄為本文的行文安排和格式上提供的幫助。感謝同為安全組的蔣燕和史洋洋同學(xué),讓我在科研的道路上不再孤單,感謝你們在平時(shí)研究和畢業(yè)設計過(guò)程中對我的幫助,在進(jìn)展不順利的時(shí)候給我安慰并與我一起出謀劃策。

  感謝 Koc 教授,是你們團隊在學(xué)術(shù)上的工作為本文提供了理論支持,感謝WALA 開(kāi)發(fā)者 Manu,Joana 開(kāi)發(fā)者 Simon,感謝你們的建議和意見(jiàn)讓本文無(wú)依賴(lài)切片成為現實(shí)。

  感謝暑期實(shí)習時(shí)與我一起工作的同事們,是你們讓我了解到了真實(shí)安全運營(yíng)時(shí)面臨的問(wèn)題,啟發(fā)了本文的工作。

  感謝父母,謝謝你們在我完成畢設期間對我的理解和支持,給我了一個(gè)舒適的工作環(huán)境,保證了畢設的順利完成。

(如您需要查看本篇畢業(yè)設計全文,請您聯(lián)系客服索取)

相關(guān)內容
相關(guān)標簽:Java畢業(yè)設計
好優(yōu)論文定制中心主要為您提供代做畢業(yè)設計及各專(zhuān)業(yè)畢業(yè)論文寫(xiě)作輔導服務(wù)。 網(wǎng)站地圖
所有論文、資料均源于網(wǎng)上的共享資源以及一些期刊雜志,所有論文僅免費供網(wǎng)友間相互學(xué)習交流之用,請特別注意勿做其他非法用途。
如有侵犯您的版權或其他有損您利益的行為,請聯(lián)系指出,論文定制中心會(huì )立即進(jìn)行改正或刪除有關(guān)內容!