虛擬編譯器可以讀取任何原始碼,並把它轉換為一種常見的程式語言形式,然後對漏洞進行徹底的掃描。虛擬編譯器可以處理非編譯代碼或任何項目的子集,並且通過補償語法錯誤和補齊遺失的連線部分來對其進行虛擬編譯。此外,它以已公布的用來確定計算機語言確切的背景和行為的標準為基礎。使用這種方法,編譯器就能夠使用原始碼本身來進行分析,並且繞過正式的編譯和連結程式,使編譯器與平台不產生關聯,避免所有的兼容性問題。
虛擬編譯器採用了Java虛擬機創新的概念,並且更進了一步。在Java中,對於操作環境來說,語言是不可知的,虛擬編譯器中對於語言的複雜性也是不可知的。它處理所有的語言和方言的方法是一樣的,都把它們變成常見的語言形式。二進制級別上實現的常見語言形式,現在已經被成功地轉化為原始碼級別語言形式。值得注意的是,來源不需要完全一樣,甚至不完整也可以。虛擬編譯器可以接受開發人員在編譯和連結方面出現錯誤,此外,標準編譯器所展現的旁路缺陷加強了代碼,這也提高了分析的準確性。雖然對不完整代碼進行掃描之初,不能發現後期可能出現的所有問題,但事實證明已經能夠發現很大一部分問題,並且被用於開發周期的初期,也使得效率被提高的優點顯現出來。
它是如何工作的?
虛擬編譯器可以處理任何原始碼,並將其轉換成統一的形式,然後進行漏洞掃描。
以下是虛擬編譯器的圖解:
虛擬編譯器按以下步驟工作:
1. 語言適配器—第一步基於市場上所有編譯器所使用的出版標準分析原始碼。
2. 語法補償—CheckMarx識別出語法錯誤並且將程式里附近未被解決的那部分隔離出來,同時促使進行全面處理。
3. 連結分解—Checkmarx識別出遺失的及尚未解決的連結,補充遺失的連結部分,促使對整個已解決流程進行檢測。
4. 代碼增強器—編譯是運行時刻所專有的過程,並且要在此時最佳化,因此要在問題解決過程中創建Checkmarx代碼增強器所避免的缺陷:
o 增加遺失的控制流元素
o 區別歧義性數據元素
o 避免由編譯器最佳化所造成的曲解
o 解決運行時刻虛擬函式的調用
5. 常見的語言形式-將語言虛擬成為一種包含到結構和數據流屬性的常見形式。
6. 詳盡的流掃瞄器(EFS)-最終,掃描的複雜性和精度與應用程式圖表的深度相關聯。Checkmarx正在申請專利的算法,通過詳盡的流掃瞄器來執行,從而在一個流程圖內掃描所有路徑的缺陷,避免其他代碼分析儀從中途簡化操作。因此,除了一般優點之外,EFS的做法還具有精準的優勢。Checkmarx代碼分析器是當今唯一的幾乎為零誤報的產品。雖然其他產品用起來有衝擊治療的表現,但由於其較高的配置和較低的誤報率,Checkmarx用戶的體驗將在較短時間內就能夠上手,並且使用開銷也較低。
來源掃描一經完成,所有代碼和流動特性都被存儲在一個資料庫中,可以通過開放的查詢語言來檢查漏洞。現成的查詢再加上為企業標準和業務邏輯的量身定做,確保會對整體進行全面的漏洞檢查。
虛擬編譯的影響
以編譯器為基礎的方法其主要風險是:第一,構建可能經常會失敗,關鍵的安全漏洞沒有報告;第二,靜態分析沒有在開發的初期被部署到桌面上。虛擬編譯器為在開發過程中影響安全性的所有利益相關者提供了妥善的解決辦法。
·審查人員:虛擬編譯意味著審計師能夠在任何時候對任何代碼庫進行檢查。審計師應當有能力迅速進入代碼級審查,隨後審查高級別的趨勢。由於不對以編譯器為基礎的辦法存在依賴,審計師就不會受到編譯器或平台兼容性問題的阻礙,他們所需要的就是來源。較快的審計指的是在較短的時間內審查較多的代碼。最後,審計師很少會訪問一個完整項目的所有代碼,對於虛擬編譯器來說,這就不再成為障礙。
· 安全負責人:靜態分析儀的存在使開發人員更關注其採用的技術和生產力問題。虛擬編譯器的出現意味著代碼分析將被更廣泛地使用,來使首席信息安全官更快速更準確地了解其“危險的工廠”,使他們能夠實施有效管制來遏制危險。
·開發人員:掃描未構建代碼的能力會把靜態分析進一步推回到開發生命周期,在這種能力有用的時候,虛擬編譯對開發人員和審計師的桌面可用性影響最大。代碼分析就是為了在開發過程中最便宜的階段削減錯誤的發生。此外,由於代碼增強和詳盡的流掃描程式,用戶可以獲得更為準確的結果。
結論:虛擬編譯器以顯著降低的總成本提供了一個堅實的投資回報率,虛擬編譯為企業組織提供了最佳途徑來實施安全開發,同時系統地消除了軟體的風險。虛擬編譯簡化了在軟體開發過程中的關鍵利益相關者的工作流程,提高其發現問題的效率,並減少對昂貴的專業服務的需求。虛擬編譯器,使開發人員和審計師能夠隨時隨地掃描代碼。對於首席信息安全官而言,這意味著在企業中保障應用程式的安全終於是實際可行的了。java的編譯器,或者說jdk,是用來將源碼編譯成class位元組碼的,是java的開發環境;虛擬機就是裝有jre的可以運行class位元組碼的東東,可以是手機、電腦、和其他,只要能安裝上java的運行環境jre,就能在其上面運行class,這就構成了一個jvm。java虛擬機,是java的運行環境。
另外,兩者是分開的,但是jdk上自帶有jre,因為要開發java的話就必須有jdk和jre;如果純粹只要能運行java程式的話,就只要安裝jre就好了!
相關詞條
-
虛擬函式
虛擬函式是C++語言引入的一個很重要的特性,它提供了“動態綁定”機制,正是這一機制使得繼承的語義變得相對明晰。對繼承體系的使用者而言,此繼承體系內部的多...
虛擬函式的特性 實例展示 虛擬函式的“動態綁定” 內聯函式 程式功能 -
編譯器構造
本書是一本面向計算機系本科生的編譯器教材。作者在三所美國大學擁有長達25年的編譯器教學經驗,在本書中對編譯器構造的基本知識與關鍵技術進行了全新的講解。本...
內容簡介 圖書目錄 -
多態與虛擬
C++。 library,而是為了要使用別人的 C++。
作者介紹 -
虛擬化與雲計算
本書系統闡述了當今信息產業界最受關注的兩項新技術——虛擬化與雲計算。雲計算的目標是將各種IT資源以服務的方式通過網際網路交付給用戶。計算資源、存儲資源、軟...
內容簡介 目錄 作者介紹 前言 作者序 -
protues虛擬實驗室
protues虛擬實驗室指實驗平台的建設是實驗教學系統及實驗教學內容改革的基本措施,通過分析目前電子類實驗室平台建設存在的缺陷及建立Proteus實驗室...
-
D語言
Java或者Smalltalk那樣被嚴格限制在虛擬機上。D 沒有虛擬機,編譯器...,為編程者提供了各種便利,採用了各種野心勃勃的編譯器最佳化技術。D 不是... 是數十年來實現多種語言編譯器的經驗的積累,是用那些語言構造大型工程...
D語言由來 D的主要目標 主要特徵 -
派生類
的函式,通常不是一個很好的設計,本章後面的“虛擬函式”中提供了一個可替換...很重要。在這個例子中,恰好是一種描述性字元串。這些函式可以作為虛擬函式來實現...僅僅是為了派生別的類而存在。當一個類中含有純虛擬函式或當他們繼承了某些純...
語法說明 單一繼承 多重繼承 基類 二義性 -
freebsd packages
FreeBSD logFreeBSD 捆綁了很多系統工具作為基本系統的一部分。然而,在實際工作中,可能仍需要安裝額外的第三方套用...
一個package的安裝 軟體包的管理 -
emu8086
的原始編輯器、組譯器、反組譯器、具除錯功能的軟體模擬工具(虛擬PC...。你可以在程式執行當中檢視暫存器、旗標以及記憶體。模擬器會在虛擬PC中...虛擬機器上執行組合程式,這可以讓除錯變得更加容易。這個軟體完全相容於...
軟體簡介 使用方法 彙編語言 CPU內部