警惕!易隱藏的“木馬源”代碼漏洞正在向企業(yè)供應(yīng)鏈發(fā)起攻擊
兩名來自劍橋大學(xué)的研究人員Nicholas Boucher與Ross Anderson,在本周揭露了一個藏匿在統(tǒng)一碼(Unicode)中的安全漏洞,此一編號為CVE-2021-42574的漏洞,將影響所有支援Unicode的程式語言,目前已確定受到波及的涵蓋了C、C++、C#、JavaScript、Java、Rust、Go與Python等,推測可能也有其它受害的語言。該漏洞將允許駭客于開源碼中、注入人類程式碼審查員看不見的安全漏洞,因而被研究人員稱為木馬源(Trojan Source)攻擊。
木馬源漏洞和攻擊模式
Anderson和他的同事Nicholas Boucher(博士生)揭示了兩種攻擊模式,統(tǒng)稱為特洛伊源攻擊。
漏洞涉及到兩個CVE,這兩個CVE都是根據(jù)Unicode規(guī)范發(fā)布的。研究人員稱之為對Unicode的“潛在破壞性”攻擊雙向算法(BiDi),從14.0版開始跟蹤為CVE-2021-42574。BiDi處理文本的顯示順序,例如,使用拉丁字母從左到右,或者從右到左使用阿拉伯語或希伯來語字符。
另一個相關(guān)的攻擊依賴于使用視覺上相似的字符,稱為同形符,跟蹤為CVE-2021-42694號。
為了給漏洞修復(fù)騰出時間,安全研究人員特地拖了99天才正式披露相關(guān)漏洞信息。與此同時,研究人員已經(jīng)與19個組織進行了協(xié)調(diào),其中許多組織現(xiàn)在正在發(fā)布更新,以解決代碼編譯器、解釋器、代碼編輯器和存儲庫中的安全弱點。
更多的技術(shù)細節(jié)可以在他們的論文中找到。
解決措施
研究人員已證實,這種攻擊已波及 C、C++、C#、JavaScript、Java、Rust、Go、以及 Python 等編程語言,并且有望擴大覆蓋其它現(xiàn)代語言。
他們還提出了一些防御措施,這些措施應(yīng)該在編譯器、解釋器和支持Unicode的構(gòu)建管道中實現(xiàn);語言規(guī)范;以及代碼(文本)編輯器和存儲庫前端。
他們向各種組織和公司披露了他們的發(fā)現(xiàn)(在禁令下),這些組織和公司可以建立這些防御。
“我們認為,這個問題的長期解決方案將部署在編譯器中。我們注意到,幾乎所有的編譯器都已經(jīng)防范了一種相關(guān)的攻擊,這種攻擊涉及使用零寬度字符創(chuàng)建對抗性函數(shù)名,而有三種編譯器會對另一種生成錯誤,這就利用了函數(shù)名中的同形符號,”他們分享道。
“我們在公開期間聯(lián)系的編譯器維護者中,大約有一半正在開發(fā)補丁,或者已經(jīng)承諾要這么做。當(dāng)其他人在拖后腿時,在這段時間內(nèi)部署其他控制是明智的,因為這是快速和廉價的,也是非常必要的。三家維護代碼庫的公司也部署了防御措施。我們建議依賴關(guān)鍵軟件的政府和公司應(yīng)該確定其供應(yīng)商的立場,對他們施加壓力,要求他們實施充分的防御,并確保任何漏洞都被他們工具鏈上的其他控制覆蓋。”
目前,已經(jīng)實施修復(fù)并在其供應(yīng)鏈中進行檢測的組織包括Rust團隊、GitHub、RedHat和Atlassian(多個產(chǎn)品受到影響)。