今年4月,來自德國的研究者披露了一個名為“StarBleed”的漏洞,它存在于賽靈思的Virtex、Kintex、Artix、Spartan等全部7系列FPGA中。通過這個漏洞,攻擊者可以同時攻破FPGA配置文件的加密(confidentiality)和鑒權(authenticity),并由此可以隨意修改FPGA中實現(xiàn)的邏輯功能。更嚴重的是,這個漏洞并不能通過軟件補丁的方式修復,一旦某個芯片被攻破,就只能通過更換芯片的方式修復。
漏洞的發(fā)現(xiàn)者已于2019年9月將這個漏洞知會了賽靈思,并在第二天就獲得了賽靈思的承認。根據(jù)賽靈思之前發(fā)布的財報,7系列FPGA貢獻了公司35%的營收。這些FPGA被廣泛用于通信設備、醫(yī)療、軍工宇航等多個領域,而這些領域很多都需要系統(tǒng)有著很高的穩(wěn)定性與安全性。因此,這次爆出的重大漏洞,無疑會對賽靈思及其客戶帶來較大的負面影響。
近年來,有關CPU的漏洞時有發(fā)現(xiàn)。例如在2018年初,幾乎全部主流的CPU廠商都被發(fā)現(xiàn)在其CPU產(chǎn)品中存在熔斷(Meltdown)和幽靈(Spectre)漏洞。相比之下,F(xiàn)PGA的漏洞問題并不那么“常見”。在這篇文章中,老石將深入解析造成這個漏洞的技術原因,并總結一些可行的應對方法與預防措施。
關于詳細介紹這個漏洞的論文全文,已上傳至知識星球“老石談芯進階版”,請于文末掃碼進入星球查看。
FPGA的主要加密方式
隨著FPGA在數(shù)據(jù)中心、通信基礎設施、AI加速、醫(yī)療設備、邊緣計算等多個領域的廣泛使用,針對FPGA安全性的研究在近年來逐漸成為學術界和工業(yè)界關注的熱點之一。
與CPU、ASIC等芯片相比,F(xiàn)PGA芯片本身并不會完成任何邏輯功能,它只包含大量的可編程邏輯陣列,以及若干固化的IP核。FPGA系統(tǒng)功能的實現(xiàn),基本完全取決于開發(fā)者的邏輯設計。由于不同的設計者可以開發(fā)不同的系統(tǒng)邏輯,這就使得相同的FPGA芯片可以廣泛用于眾多不同的行業(yè)領域。通常來說,一個FPGA設計都是由很多IP組合而成,而這些IP才是FPGA設計中最有價值的部分。
為了將設計加載到FPGA中運行,唯一的方式就是通過一個所謂的“比特流(bitstream)”文件完成,業(yè)界也通常稱之為系統(tǒng)映像。系統(tǒng)映像由FPGA設計軟件自動生成,它包含了FPGA設計的全部信息,因此是FPGA加密環(huán)節(jié)的重中之重。
通常來說,對比特流或系統(tǒng)映像文件的保護方式有兩個層面,第一是加密,第二是鑒權。加密指的是使用特定算法對比特流文件進行處理,將其轉換成密文,使得其中的內(nèi)容對外不可見。在賽靈思的7系列FPGA中,使用了CBC-AES-256算法進行比特流加密。
鑒權指的是對加密后的比特流文件進行身份驗證,防止對其進行篡改和刪減,這類似于我們?nèi)粘I钪械纳矸蒡炞C。如果比特流文件被修改,勢必會導致錯誤的鑒權結果。如果將這個比特流下載到FPGA中,會因為身份校驗失敗而拒絕執(zhí)行,從而避免被攻擊的可能。在賽靈思的7系列FPGA中,使用了基于SHA-256的HMAC(散列消息認證碼,Hash-basedMessageAuthenticationCode)方法進行鑒權。
可以想象,如果比特流的加密過程被破解,那么攻擊者就可以讀出比特流文件中的所有信息,從而進行反向工程、IP破解、信息收集等工作。如果鑒權過程被破解,那么攻擊者就可以對比特流文件進行任意修改,比如修改系統(tǒng)功能、木馬注入等。所以說,這兩種保護方式缺一不可。
只可惜,這次的StarBleed漏洞恰恰利用了這兩種保護方式各自的短板,從而徹底破解比特流的加密和鑒權,并達到了完全控制比特流和FPGA芯片的目的,可以說這個漏洞的破壞性和潛在危害性極強。
StarBleed漏洞的具體攻擊方法
整個攻擊過程分為兩大部分,第一是對加密的比特流文件進行破解,第二是獲取鑒權密鑰。
為了破解加密的比特流文件,攻擊者利用了賽靈思FPGA里的一個特殊的配置寄存器WBSTAR,這個寄存器原本保存了FPGAMultiBoot功能的起始地址,當啟動FPGA時,就通過讀取這個寄存器從片外非易失性存儲器找到映像文件。因此,當FPGA復位時,這個寄存器的內(nèi)容是不會被抹掉的。
對加密比特流的破解過程分為5個步驟。
第一步,攻擊者對一個合法的比特流文件進行了簡單篡改。具體來說,他需要修改比特流的一個32位字,將其改成對WBSTAR寄存器的寫操作。寫入的內(nèi)容,就是比特流本身。
雖然比特流是加密的,但這個篡改過程并沒有想象中那么困難。由于Vivado生成的比特流文件的格式和很多內(nèi)容是固定的,攻擊者可以對比不同的比特流文件,從而確定對WBSTAR寄存器操作命令的位置,然后對其進行修改即可。由于篇幅所限,這部分的具體的細節(jié)不再贅述,歡迎在知識星球或微博與老石進一步交流。
比特流數(shù)據(jù)結構,灰色部分是加密的內(nèi)容
第二步,將篡改后的比特流加載到FPGA里。此時,F(xiàn)PGA會對比特流進行解密,并將一個32位字寫入WBSTAR寄存器。值得注意的是,這里寫入的是已經(jīng)解密的比特流內(nèi)容!
第三步,加載完畢后,由于比特流發(fā)生了修改,因此校驗失敗,并自動觸發(fā)系統(tǒng)復位。
第四步,使用另外一個未加密的比特流文件,讀取WBSTAR寄存器的內(nèi)容。由于WBSTAR寄存器的特殊性,它的內(nèi)容不會隨著復位而清除。因此,此時攻擊者再使用另外一個未加密的比特流文件讀取這個寄存器的內(nèi)容,就可以得到解密后的FPGA比特流的32位內(nèi)容了。這個未加密的比特流文件已開源,請在文末掃碼進入知識星球查看。
第五步,手工復位,然后重復上述步驟,直到整個比特流都解密完成。
可以看到,攻擊者利用了上面提到的鑒權過程晚于加解密過程這個缺陷,通過“螞蟻搬家”的方式完成了對比特流的完全解密。最可憐的是,此時的FPGA本身也淪為了幫助解密的工具。這也解釋了為什么只能通過更換FPGA芯片才能修補這個漏洞。
下面的表格總結了不同的7系列FPGA的比特流大小,以及解密所需要的時間。讀出一個32位字大概需要7.9毫秒,那么破解一個KintexFPGA的比特流就大概需要3小時42分鐘。
接下來,就可以對鑒權過程進行破解了。這個過程相對簡單,事實上,身份校驗所需的HMAC密鑰就存儲在比特流文件中,并且未經(jīng)其他額外的加密。這正是所謂的“謎底就在謎面上”。所以只需要讀取完整的比特流,就可以免費附贈HMAC密鑰一枚。有了它,就可以任意修改比特流文件的內(nèi)容,并重新計算身份校驗。此外,攻擊者甚至可以修改HMAC密鑰本身。
綜上所述,StarBleed漏洞正是利用了賽靈思7系列FPGA的兩大設計缺陷:
1.身份校驗發(fā)生在解密過程之后
2.身份校驗的密鑰直接存儲在加密后的比特流文件里,且無額外加密
通過StarBleed漏洞,攻擊者破解了全系列的賽靈思7系FPGA,包括SAKURA-X板卡上的Kintex-7,Basys3板卡上的Artix-7等等。同時,攻擊者還利用同樣的原理攻擊了6系FPGA,例如ML605板卡上的Virtex-6FPGA,也能實現(xiàn)不完全破解。
防御方法
由于StarBleed漏洞直接利用了賽靈思7系列FPGA芯片的設計缺陷,且攻擊過程直接在加載映像文件時展開,因此不能使用軟件補丁或固件升級的方法規(guī)避這個漏洞。目前唯一的修復方法只有更換芯片,賽靈思官方已經(jīng)向研究者承認了這一點。
事實上,攻擊者使用這種方法無法破解UltraScale或更新的FPGA系列。這說明上面所說的設計缺陷已經(jīng)在新型FPGA架構中得到了修復。例如,首先對比特流文件進行鑒權,通過后再進行加載。
雖然除了換芯片外沒有完全防御的方法,我們?nèi)匀豢梢圆捎靡恍┰O計手段增加破解的成本和復雜度。一個常見的方法是在設計中增加額外的冗余邏輯,這些額外的部分并不影響邏輯功能,但會極大的提升設計的復雜度,從而增加破解的時間成本。比如,在狀態(tài)機中增加很多無用狀態(tài)等等。
此外,還可以在板卡設計時封鎖FPGA的配置端口,比如研究者使用的JTAG和SelectMAP端口等。事實上,在量產(chǎn)的FPGA設計中,應該也很少有暴露的JTAG端口。
同時,研究者還思考了如何盡早發(fā)現(xiàn)這類設計缺陷和漏洞,而形式化方法就是一個很好的解決手段。設計者可以根據(jù)芯片的設計規(guī)約,建立形式化模型,并通過滿足性驗證(satisfiability)等方式對這個模型進行分析和證明。老石在之前的文章《形式化芯片驗證:救世主還是烏托邦》中,曾對形式化方法做過詳細介紹,有興趣的讀者可以看看。
結語
FPGA的安全性研究并非一個全新的課題。然而,傳統(tǒng)的FPGA攻擊方法都需要使用額外的物理設備或操作,實用性遠不如此次爆出的StarBleed漏洞。
一旦FPGA被攻破,攻擊者可以任意讀取FPGA比特流的數(shù)據(jù)、IP內(nèi)容等,并實現(xiàn)反向工程;也可以任意改變FPGA實現(xiàn)的邏輯功能,這使得FPGA所在的系統(tǒng)可能淪為攻擊者的高性能“肉雞”。由于FPGA能以40Gbps甚至更高的速度線速發(fā)送數(shù)據(jù)包,這使得大規(guī)模DDOS攻擊變得“簡單”。此外,攻擊者也可以通過邏輯實現(xiàn)的方式,大幅提升芯片溫度并對系統(tǒng)硬件進行不可逆的物理破壞,等等。
可以說,這次的StarBleed漏洞給業(yè)界敲響了警鐘,也將會提升人們對FPGA安全性的重視,并以此指導未來的FPGA安全性設計。亡羊補牢,猶未晚也。
評論
查看更多