可能改變世界軟件安全格局的一次收購--------從微軟通過收購Github間接收購軟件安全創企Semmle談起

在商業社會中,沒有永遠,只有商業利益。當然商業利益與國家利益發生衝突時,要服從國家戰略利益。

                                     

2018年微軟以75億美金收購了世界第一開源網站Github時,我們驚歎這世界變化太快,思考微軟收購Github會給開源帶來什麼影響時,而這幾天,微軟又宣佈收購軟件安全創企Semmle時,我不僅要陷入思考,而是開始擔心,微軟間隔一年時間收購開源第一網站和安全行業創業企業是下一盤什麼棋,目的是什麼?會對軟件行業產生什麼影響,會對世界產生什麼影響呢?

對於Github,軟件行業都瞭解,其實一個開源網站,託管了將近8500萬個開源項目,超過2800萬開發人員,是最大的開源社區。而對Semmle可能不是太瞭解,我先簡單介紹一下這家企業。

Semmle是一家做安全軟件的企業,是一家孵化於牛津大學的安全公司,成立於2006年。先後獲得三輪融資,今年獲得B輪2100萬美元融資。領投方爲Accel Parters,包括微軟、谷歌、NASA和Nasdaq Trust、Work-Bench等(可見,在美國對於高科技創新企業的支持)。這麼多世界著名企業投資於一個創業企業,這個企業的價值在哪裏呢?

Semmle公司是以一種創新的方式尋找代碼中的漏洞,而國內還處於鮮有企業對代碼中漏洞關注。其技術核心在於把代碼數據化,把分析代碼中的漏洞轉變爲對數據庫的請求,實際上是通過已知漏洞模式,在數據庫中查找相似漏洞的方式。其兩款產品中Engineering Analytics主要是進行工程分析,而Code Exploration是做深層代碼審查工具。通過現有資料分析,第一款工具Engineering Analytics主要是通過對代碼組成成分進行等分析,給出軟件組件相關數據,從而評估軟件項目質量。

其展示界面如下:

其給出了軟件項目中組件的名稱、版本(可能暫時未實現)、大小、貢獻者、行數、問題數。

第二款工具Code Exploration則是通過一種聲明式的面向對象查詢語言QL,在數據庫中尋找代碼缺陷、安全漏洞、檢查API是否正確、庫(也就是代碼)在哪裏被使用、以及代碼靜態度量指標等。同時他們針對開源項目提供了一個平臺lgtm.com,可以與Github關聯,對github上的項目進行檢測,給出安全漏洞報告。QL查詢語言支持COBOL、C/C++、C#、Java、Javascript和python。項目只支持Github或者Bitbucket上的項目。只支持master分支且公開的項目才能測試。可以判斷,Semmle已經在其數據庫中抓取了Github和Bitbucket上的主流開源項目,進行分析後,存儲在數據庫中,其組件信息和問題(包括缺陷和漏洞)已經進行了分析,且組件中的問題與漏洞已經在數據庫中進行了對應。在用戶查詢時,通過在數據庫中查詢控制流圖,如果匹配上則把對應的問題顯示給客戶。

根據作者從事相關行業的經驗,分析兩款工具的原理大概如下:

 

下面我們以其網站(https://lgtm.com/rules/2159000700/)給出的一類錯誤的檢測過程來驗證一下原理。

    從上面描述可以看到,這是一個對C/C++函數每一條路徑都是否有返回值的檢測規則。在使用QL查詢時,可以控制使用這條規則。exclude和include關鍵字來控制是否檢測。

其給出的例子如下:也就是當某個分支中有返回值,如果函數返回前沒有返回值,則產生錯誤(當然這種錯誤目前大多數編譯器也提示缺少返回值)。

  該規則參考:主要來自於MISRA 2008標準。

 

其對應的QL查詢語句:

每一類問題可以通過上面編寫規則查詢語句進行查詢。根據作者的理解,這是把相當於把檢測問題的方式公開透明瞭,開發人員可以使用現有QL檢查規則去檢測,也可以定製自己查詢語句,也就是可以挖漏洞。

Semmle公司這兩款工具,也就是藉助於大數據檢索技術、構建代碼抽象語法樹、指向分析、區間分析、符號執行等技術,提供了缺陷和漏洞檢測的方法和不斷。

作爲安全從業人員,我們很容易瞭解Semmle工具技術原理,但是隨着中美貿易戰、科技戰的愈演愈烈,我們更擔心的是該技術的運用給軟件行業尤其是中國所帶來的潛在風險。試想,微軟掌握了桌面操作系統和辦公軟件、開發編譯工具等,微軟收購了Github,再用Semmle對Github中的開源軟件進行基於白盒、系統化的安全漏洞分析,則其掌握了大多數軟件中的0day漏洞,而0day漏洞是重要的戰略資源,這意味着什麼?

回到國內,大多數企業對源代碼安全不是太重視,而源代碼安全漏洞檢測工具長期被國外壟斷,而國內大數據安全廠商則是依靠滲透測試工具發現系統脆弱點,滲透工具則基本上是包裝開源滲透工具。從事源代碼安全的廠商非常少,能夠從底層採用主流技術研發工具的廠商屈指可數,一個是北大庫博(cobot.net.cn),從2012年開始在軟件源代碼安全方面進行研究,目前有CoBOT源代碼缺陷檢測工具和軟件成分和同源漏洞分析工具兩款,採用自主可控的專利技術,能夠主動發現軟件中的缺陷和漏洞,能夠提供SDK開發接口,類似於Semmle QL查詢功能,應用該接口已經發現了多個0day漏洞。

在國內,我們在互聯網行業發展的如火如荼,現在國家還在推廣工業互聯網建設,通過互聯網技術融入到工業企業,想彎道超車。當然國內也有像華爲這樣的企業,能夠在多年之前洞察到今天的局面,進行操作系統、芯片等支撐互聯網的底層軟硬件的研發。政府和資本應該支持具有底層創新技術的公司和團隊,保證我們的IT基礎設施建設的安全。國內軍隊、國防企事業更是如此,依賴國外總會被卡脖子,斷供,且存在巨大風險,伊朗、委內瑞拉等涉及到重要工業設施的計算機遭受攻擊就是前車之鑑,可能隨着各國軍事實力的增強以及核武器研發,大國之間的爆發軍事戰爭的可能性在減少,而躲在暗處的互聯網上的戰爭卻每天都在進行,互聯網攻防演練需要不斷加強。誰掌握了軟件源代碼靜態分析技術,包括二進制代碼分析技術,就可以進行漏洞挖掘,在沒有硝煙的戰爭中搶佔先機、把握主動。

      (完)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章