用 DNA 寫出真正的電腦「病毒」?研究人員成功在 DNA 中寫入可執行碼
雖然這是軟體界所創造過最接近真正病毒的東西,但它其實算不上是一種電腦病毒。它是由複製指令組成的 DNA 片段,其中資訊將可控制讀取它的電腦。它必須植入宿主系統才能自我複製繁殖,而這只要一層蛋白質外殼,不過用檔案 metadata 和標頭也辦得到。
但是一開始他們如何寫出一段能嵌入 DNA 的可執行程式碼呢?
首先,研究人員要決定要攻擊哪裏。他們選擇 C 是有理由的,C 經常出現重大漏洞導致系統遭到緩衝溢位攻擊。
之後他們就開始編碼,以核鹼基(nucleobases,組成基因的材料)來編寫二進位,例如:A=00, C=01, G=10, T=11。
電腦遵守的是依據電流脈衝的開、關形成的二元串流,即 0 與 1,因此可執行檔程式碼也必須經過同樣的二態。讀取 DNA 序列將會把惡意程式碼送進讀取的電腦中,並藉此發動緩衝溢位攻擊,以便使系統門戶洞開取得管理員權限。
「從 ASCII 的 A、T、G 和 C 轉成位元串,在取得最大讀取長度的固定大小的緩衝中即可完成,」研究人員 Karl Koscher 表示:「攻擊程式有 176 個鹼基長,壓縮程式將每個鹼基壓縮成 2bits,封裝起來變成一個 44 byte 的攻擊程式。」
大部份這些 bytes 被用於編寫 ASCII 殼層指令,4 byte 被用來把轉換函式回復成 C 標準函式庫中的 system() 函式,後者會執行殼層指令。另外 4 byte 則用以告知 system() 記憶體內指令何在。
也就是說,將這株 DNA 餵給組譯器,它就成了 176 核鹼基的程式,前後真的只要 3 行程式就辦到了。
即使警方及商業間諜出手干預的可能性還很低,但緩衝溢位攻擊威力強大,這表示開發人員一定早就在注意這類攻擊手法。去年舉世震驚的 Heartbleed 就是緩衝溢位攻擊的一種,現在有些 boilerplate wrapper 會檢查是否有這類漏洞,如果發現到此類錯誤就會立即停止。
此外,由於它是一種 DNA 攻擊,因此機制上必然有問題。它的株體可能斷裂,而且因為 DNA 可雙向讀取,所以程式碼也可能被反向錄寫。但研究人員表示未來高明的攻擊者可以把程式碼寫成迴文 (palidrome),就不會害到自己了。
但作為一個新興威脅,這種 DNA 攻擊還是值得大家小心。「我們知道如果壞人控制了電腦處理的資料,它就可控制那台電腦。」指導該研究的 Tadayoshi Kohno 說。Kohno 專門研究來自生物相關的資訊攻擊,例如入侵像計步器這種嵌入式系統。這種研究不只要關注網路連結、USB 隨身碟和使用者等,也需了解電腦序列的 DNA 資訊,而這完全是另一個世界。
Source: ExtremeTech