《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 漏洞之王:Unicode編譯器漏洞威脅全球軟件代碼

漏洞之王:Unicode編譯器漏洞威脅全球軟件代碼

2021-11-02
來(lái)源:互聯(lián)網(wǎng)安全內(nèi)參
關(guān)鍵詞: 編譯器

  近日,,劍橋大學(xué)研究人員發(fā)現(xiàn)了一個(gè)可影響當(dāng)今大多數(shù)計(jì)算機(jī)軟件代碼編譯器和軟件開發(fā)環(huán)境的漏洞,。這個(gè)漏洞來(lái)自數(shù)字文本編碼標(biāo)準(zhǔn)Unicode的一個(gè)組件,Unicode目前在154中不同的編程語(yǔ)言腳本中定義了超過(guò)14.3萬(wàn)個(gè)字符(除了一些非腳本字符集,,例如表情符號(hào)),。

  簡(jiǎn)而言之,,幾乎所有的編譯器(將人類可讀的源代碼轉(zhuǎn)換為計(jì)算機(jī)可執(zhí)行的機(jī)器代碼的程序)都容易受到惡意攻擊。在這種攻擊中,,攻擊者可以在不被發(fā)現(xiàn)的情況下將有針對(duì)性的漏洞引入任何軟件。該漏洞的披露由多個(gè)組織協(xié)調(diào)完成,,其中一些組織現(xiàn)在正在發(fā)布漏洞緩解更新,。

  該漏洞被命名為“原木馬”(Trojan Source)。具體而言,,該弱點(diǎn)涉及Unicode的雙向或“Bidi”算法,,該算法處理包含具有不同顯示順序的混合腳本的顯示文本,例如阿拉伯語(yǔ)(從右到左閱讀)和英語(yǔ)(從左到右),。

  但是計(jì)算機(jī)系統(tǒng)需要有一種確定性的方法來(lái)解決文本中的方向沖突,。輸入“Bidi override”,可用于使從左到右的文本從右到左閱讀,,反之亦然,。

  “在某些情況下,Bidi算法設(shè)置的默認(rèn)排序可能不夠,”劍橋研究人員寫道,?!皩?duì)于這些情況,Bidi override強(qiáng)制控制字符可以切換字符組的顯示順序,?!?/p>

  Bidi override甚至可以不同于其邏輯編碼的順序顯示單個(gè)腳本字符。正如研究人員指出的那樣,,這一功能以前曾被用來(lái)偽裝通過(guò)電子郵件傳播的惡意軟件的文件擴(kuò)展名,。

  問題在于:大多數(shù)編程語(yǔ)言都允許開發(fā)者將這些Bidi override控制字符放在注釋和字符串中。這很糟糕,,因?yàn)榇蠖鄶?shù)編程語(yǔ)言都允許注釋,,而且注釋中的所有文本(包括控制字符)都被會(huì)編譯器和解釋器忽略。同樣糟糕的是,,大多數(shù)編程語(yǔ)言都允許使用包含任意字符(包括控制字符)的字符串,。

  這是第一個(gè)危及幾乎所有軟件的,“簡(jiǎn)潔優(yōu)雅的”超級(jí)漏洞,。

  劍橋大學(xué)計(jì)算機(jī)安全教授,、該研究的合著者羅斯·安德森說(shuō):“因此,您可以在對(duì)人類審閱者看來(lái)無(wú)害的源代碼中使用它們,,(暗地里)卻做一些令人討厭的事情,。” “對(duì)于像Linux和Webkit這樣的項(xiàng)目來(lái)說(shuō),,這絕對(duì)是個(gè)壞消息,,這些項(xiàng)目接受任何人的代碼貢獻(xiàn),人工審核后將它們合并到關(guān)鍵代碼中,。據(jù)我所知,,這個(gè)漏洞是第一個(gè)影響幾乎所有(軟件)的漏洞?!?/p>

  該研究論文將該漏洞稱為“Trojan Source”,,指出雖然注釋和字符串都有特定語(yǔ)法指示其開始和結(jié)束位置,但Bidi overrides不遵守這些界限,。論文指出:

  “因此,,如果將Bidi控制字符有意放置在注釋和字符串中,我們能以大多數(shù)編譯器可接受的方式將它們偷偷混入源代碼中,。我們的主要見解是,,我們可以重新排列源代碼字符,讓它們看上去是合乎句法的源代碼,?!?/p>

  “將所有這些結(jié)合在一起,,我們能夠?qū)υ创a實(shí)施新型供應(yīng)鏈攻擊。通過(guò)將Unicode Bidi控制字符注入注釋和字符串中,,攻擊者可以在大多數(shù)現(xiàn)代計(jì)算機(jī)語(yǔ)言中生成句法有效的源代碼,,其中字符的顯示順序呈現(xiàn)與實(shí)際邏輯不同的邏輯。實(shí)際上,,我們已經(jīng)偷梁換柱將程序A轉(zhuǎn)換為程序B,。”

  安德森表示,,這樣的攻擊對(duì)于人類代碼審查人員來(lái)說(shuō)可能很難檢測(cè)到,,因?yàn)殇秩镜脑创a看起來(lái)完全可以接受。

  “如果邏輯上的變化足夠微妙,,以至于在后續(xù)測(cè)試中未被發(fā)現(xiàn),,那么攻擊者可能會(huì)在不被發(fā)現(xiàn)的情況下引入有針對(duì)性的漏洞?!彼f(shuō),。

  同樣令人擔(dān)憂的是,Bidi控制字符通過(guò)大多數(shù)現(xiàn)代瀏覽器,、編輯器和操作系統(tǒng)上的復(fù)制和粘貼功能駐留,。

  “任何將代碼從不受信任的來(lái)源復(fù)制到受保護(hù)的代碼庫(kù)中的開發(fā)人員都可能無(wú)意中引入了一個(gè)不可見的漏洞?!卑驳律赋觯骸斑@種代碼復(fù)制是現(xiàn)實(shí)世界安全漏洞的重要來(lái)源,。”

  約翰霍普金斯信息安全研究所副教授馬修格林表示,,劍橋的研究清楚地表明,,大多數(shù)編譯器都可以被Unicode欺騙,以不同于讀者預(yù)期的方式處理代碼,。

  “在閱讀這篇論文之前,,Unicode可以以某種方式被利用的想法不會(huì)讓我感到驚訝,”格林指出:“令我驚訝的是,,有多少編譯器會(huì)在沒有任何防御的情況下愉快地解析Unicode,,以及他們的從右到左編碼技術(shù)在將代碼潛入代碼庫(kù)方面的效果如何。這是一個(gè)非常聰明的技巧,,人們以前壓根沒有想到這種可能性?!?/p>

  格林說(shuō),,好消息是研究人員進(jìn)行了廣泛的漏洞掃描,但無(wú)法找到任何人正在利用此漏洞的證據(jù),。但是:

  “壞消息是它沒有防御措施,,現(xiàn)在人們知道了,,不法分子可能會(huì)開始利用它,”格林說(shuō):“希望編譯器和代碼編輯器開發(fā)人員能夠快速修補(bǔ)這個(gè)問題,!但由于有些人不定期更新開發(fā)工具,,至少在一段時(shí)間內(nèi)會(huì)有一些風(fēng)險(xiǎn)?!?/p>

  安德森指出,,到目前為止,大約一半負(fù)責(zé)維護(hù)受影響的計(jì)算機(jī)編程語(yǔ)言的組織已經(jīng)承諾提供補(bǔ)丁,,但其他人正在拖延,。

  “我們將在接下來(lái)的幾天內(nèi)監(jiān)控他們的部署,”安德森說(shuō),?!拔覀冞€期待Github、Gitlab和Atlassian采取行動(dòng),,因此他們的工具應(yīng)該能夠檢測(cè)對(duì)仍然缺乏雙向字符過(guò)濾的語(yǔ)言的代碼的攻擊,。”

  至于需要對(duì)Trojan Source采取什么措施,,研究人員敦促依賴關(guān)鍵軟件的政府和公司確定其供應(yīng)商的安全態(tài)勢(shì),,向他們施加壓力以部署足夠的防御,并確保工具鏈中任何一個(gè)環(huán)節(jié)都被覆蓋,。

  論文指出:

  “Trojan Source漏洞幾乎影響所有計(jì)算機(jī)語(yǔ)言,,這使其成為在整個(gè)技術(shù)生態(tài)中跨平臺(tái)跨供應(yīng)商比較響應(yīng)能力的難得機(jī)會(huì)?!痹撜撐目偨Y(jié)道,。“由于使用這些技術(shù)可以輕松發(fā)起強(qiáng)大的供應(yīng)鏈攻擊,,因此,,所有參與軟件供應(yīng)鏈的組織實(shí)施防御至關(guān)重要?!?/p>

  加州大學(xué)伯克利分校計(jì)算機(jī)科學(xué)系講師尼古拉斯韋弗則也指出:

  “對(duì)該漏洞的協(xié)調(diào)披露過(guò)程將會(huì)是觀察我們?nèi)绾谓鉀Q此類問題的絕佳范本,,”他說(shuō)?!斑@個(gè)漏洞是真實(shí)存在的,,但也凸顯了現(xiàn)代計(jì)算機(jī)代碼依賴性中的更大漏洞?!?/p>

  截至發(fā)稿,,Rust已針對(duì)此安全漏洞發(fā)布了安全公告,漏洞編號(hào)為CVE-2021-42574和CVE-2021-42694,。




電子技術(shù)圖片.png

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。