[發明專利]一種Java源代碼缺陷檢測方法及裝置在審
| 申請號: | 201410277241.0 | 申請日: | 2014-06-19 |
| 公開(公告)號: | CN104021084A | 公開(公告)日: | 2014-09-03 |
| 發明(設計)人: | 韓麗芳;崔寶江;侯婷婷;劉楠;高昆侖 | 申請(專利權)人: | 國家電網公司;中國電力科學研究院;北京華夏信安科技有限公司;江蘇省電力公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100031 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 java 源代碼 缺陷 檢測 方法 裝置 | ||
技術領域
本發明涉及源代碼靜態分析技術領域,尤其涉及一種Java源代碼缺陷檢測方法及裝置。
背景技術
源代碼的靜態安全檢測是指在不運行代碼的前提下,分析程序的語法、語義、控制流等信息,驗證代碼是否滿足安全性。目前,?靜態分析主要有類型推斷、數據流分析和約束分析3種方法:
1)類型推斷方法:類型推斷是一個處理過程,?其目的是保證每個操作都是針對一組數目正確,?類型合適的對象進行,?以保證操作的有效性。類型推斷可以檢查類型錯誤,?選擇合適的操作,根據情況確定必要的類型轉換。
2)數據流分析方法:數據流分析是一項編譯時使用的技術,?它能從程序代碼中收集程序的語義信息并通過代數的方法在編譯時確定變量的定義和使用,數據流分析被用于解決編譯優化、程序驗證、調試、測試、并行、向量化和串行編程環境等問題。數據流分析是通過對變量構造定義一引用對來實現的。
3)約束分析方法將程序分析過程分為約束產生和約束求解兩個階段,?前者利用約束產生規則建立變量類型或分析狀態之間的約束系統,?后者對這些約束系統進行求解。約束系統可以分為等式約束、?集合約束和混合。
上述現有技術中的三種方法都是通過解釋程序的抽象語義,?建立程序屬性的數學模型,?再通過求解這個數學模型,?確定程序的屬性。相比較而言,?約束分析具有最強的檢測能力和最慢的檢測速度,?適合進行軟件的安全檢測;數據流分析具有較強和較快的檢測速度,?適合檢查需要考慮控制流信息而且變量屬性之間的操作十分簡單的靜態分析問題;類型推斷則具有最弱的檢測能力和最快的檢測速度,?適合檢查屬性域有限而且與控制流無關的安全屬性。但上述三種方法均無法全面準確的檢測出Java源代碼的安全缺陷,檢測性能無法得到提高。
發明內容
本發明的目的是提供一種Java源代碼缺陷檢測方法及裝置,能夠全面而準確地檢測Java源代碼的安全缺陷,同時減少程序運算量,提高檢測性能。
一種Java源代碼缺陷檢測方法,所述方法包括:
對Java源程序字節碼進行靜態分析,生成函數調用圖;
根據所述函數調用圖生成保存有所述Java源程序基本信息的關系數據庫;
根據預先建立的漏洞模式,以關系數據庫查詢的方式對所述Java源程序進行指針別名分析和污點分析;
根據污點分析的結果,產生缺陷報告。
所述以關系數據庫查詢的方式對所述Java源程序進行指針別名分析,具體包括:
獲得每個函數調用圖以及函數依賴分析生成的函數調用序列;
以main函數為入口,根據函數調用持續迭代計算每個過程的指針信息;
根據所述函數調用序列分別計算每個語句對所述指針信息的影響;
其中,在此框架中過程內分析與過程間分析是并行的,當在過程內分析,遇到函數調用時,則進行過程間的分析;當在過程間分析,如果將調用者名字空間內的信息映射到被調用者名字空間中,則可進入過程間分析。
所述以關系數據庫查詢的方式對所述Java源程序進行污點分析,具體包括:
通過查詢所述關系數據庫,并與漏洞模式比對,找到將用戶數據引入到所述Java源程序中的函數,并將其返回結果標記為污點數據;
記錄所述污點數據在所述Java源程序中的傳播;
通過查詢所述關系數據庫,并與漏洞模式比對,找到使所述污點數據執行的函數,并記錄污點傳播的過程。
一種Java源代碼缺陷檢測裝置,所述裝置包括:
程序識別模塊,用于對Java源程序字節碼進行靜態分析,生成函數調用圖,根據所述函數調用圖生成保存有所述Java源程序基本信息的關系數據庫;?
解釋模塊,用于對Java源程序安全漏洞描述進行解釋;
靜態數據流分析模塊,用于根據預先建立的漏洞模式,以關系數據庫查詢的方式對所述Java源程序進行指針別名分析;
安全漏洞分析模塊,以關系數據庫查詢的方式對所述Java源程序進行污點分析,根據污點分析的結果,產生缺陷報告。
所述解釋模塊進一步包括:
別名解釋單元,用于使用形式化的描述語言對別名分析規則進行描述;
漏洞模式解釋單元,用于使用形式化的語言完整描述SQL注入等漏洞。
所述安全漏洞分析模塊進一步包括:
污點數據引入單元,用于通過查詢所述關系數據庫,并與漏洞模式比對,找到將用戶數據引入到所述Java源程序中的函數,并將其返回結果標記為污點數據;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于國家電網公司;中國電力科學研究院;北京華夏信安科技有限公司;江蘇省電力公司,未經國家電網公司;中國電力科學研究院;北京華夏信安科技有限公司;江蘇省電力公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410277241.0/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:制備鈦白粉氣粉的系統
- 下一篇:一種觸控面板結構





