源代碼木馬_風聞
code2Real-有人就有江湖,有code就有bug2021-11-02 17:27
計算機發展的早期,是荒蠻時代,人們能把石頭加工能石斧、石刀等利器就不錯了,不會考慮什麼安全問題。
進入青銅時代後,人們才會考慮到安全問題,為劍設計護手/劍格,配上劍鞘。
軟件也是一樣。以前人們重視軟件開發速率,現在由於安全問題越來越重要,以至於人們不得不放慢腳步。
Ken Thompson是美國計算機科學家的先驅。Thompson 的大半生都在貝爾實驗室工作,設計和實現了unix操作系統的原型。發明了B語言,即C語言的前身,plan9操作系統的早前開發者之一。2006開始在google工作,合作開發了go語言。
Ken Thompson於1983年在ACM上發表的圖靈獎演講承認,在早期Unix版本中存在後門,這可能是有史以來最兇悍的安全黑客。
在此方案中,C編譯器包含的代碼可以識別編譯登錄命令的代碼,並插入一些代碼來識別Thompson選擇的密碼,從而無論是否為他創建的帳户,他都可以進入系統。
通常,可以通過從編譯器的源代碼中刪除後門並重新編譯該編譯器來刪除後門。但是要重新編譯該編譯器,您必須使用該編譯器。
因此Thompson還安排了編譯器在編譯其自身版本時將能夠識別的功能,並將木馬代碼插入到重新編譯的編譯器中,以將代碼插入到重新編譯的登錄名中,以允許Thompson登錄,當然還有用於識別自身的代碼,並在下次再次執行整個操作!
完成一次之後,他便能夠一直重新編譯攜帶木馬的編譯器。黑客無形地永存,使後門留在原地,活躍着,但源頭卻絲毫沒有蹤影。
幾十年前中美黑客大戰,中國紅客本來以為有一戰之力,後來發現自己使用的計算機編碼( GBK,Unicode等)都是美國人設計的,美國人在設計這些編碼時,其實已經考慮到後門、木馬問題,方便未來按圖索驥。所以中國紅客最終發現自己就象穿着“新衣”的皇帝,其實是一絲不掛。
但是故事並沒有結束,最近,劍橋大學研究人員發現了一個影響大多數計算機代碼編譯器和許多軟件開發環境的漏洞。
漏洞源於Unicode 的一個組件。Unicode 目前在154 種不同的語言腳本中定義了超過143,000 個字符(除了許多非腳本字符集,例如表情符號)。
具體而言,該弱點涉及Unicode的bi-directional (Bidi)算法 ,該在處理包含具有不同顯示順序的混合腳本的顯示文本,例如阿拉伯語(從右到左閲讀)和英語(從左到右)。但是計算機系統需要有一種確定性的方法來解決文本中的方向衝突。
輸入“Bidi override”,可用於使從左到右的文本從右到左閲讀,反之亦然。
在某些情況下,Bidi 算法設置的默認排序可能不夠,對於這些情況,Bidi 覆蓋控制字符可以切換字符組的顯示順序。Bidi 覆蓋甚至可以以不同於其邏輯編碼的順序顯示單個腳本字符。
這個特性以前曾被用來偽裝通過電子郵件傳播的惡意軟件的文件擴展名 。問題在於大多數編程語言都允許將這些 Bidi 覆蓋放在註釋和字符串中。 大多數編程語言都允許註釋中的所有文本(包括 控制字符 )都被編譯器和解釋器忽略。
該研究論文將該漏洞稱為Trojan Source(源代碼木馬) ,指出雖然註釋和字符串都具有指示其開始和結束的特定於語法的語義, 但Bidi覆蓋不遵守這些界限 。
源代碼木馬漏洞幾乎影響所有計算機語言,雖然不能直接利用,但是利用協作平台和庫組件的供應鏈攻擊。
Rust 語言的rustc編譯器已發佈針對此安全漏洞 安全公告,其被跟蹤為 CVE-2021-42574 和 CVE-2021-42694。