視頻解碼器是黑客的重點攻擊目標。它們持續解析來自互聯網的不可信數據流,而歷史漏洞記錄觸目驚心——libvpx、dav1d、ffmpeg等主流解碼器的CVE漏洞中,緩沖區溢出、釋放后使用、整數溢出等內存安全問題占據絕對主導。這些漏洞的根源,指向同一個技術選型:C語言。
一個開發團隊完成了rav2d項目,將dav1d(AV2視頻解碼器)完整移植為Rust版本。這是繼rav1d(AV1解碼器Rust移植版,由Prossimo/ISRG資助)之后的又一跟進案例。項目規模可觀:47個源文件,超過4.7萬行Rust代碼,786個單元測試全部通過,C語言解碼邏輯實現100%覆蓋。
![]()
技術層面,移植范圍涵蓋完整解碼管線:OBU解析、MSAC熵解碼、塊解碼(幀內/幀間/復合模式)、去塊濾波、CDEF、環路修復(NS/PC維納濾波、GDF)、膠片顆粒合成、運動補償、逆變換、參考幀管理及線程任務調度。唯一未重寫的是匯編DSP核心——這些經過手工優化的性能關鍵代碼通過FFI接口直接復用,避免重復造輪子。
![]()
選擇Rust的核心動機明確:消除C語言固有的內存安全風險。視頻解碼器的攻擊面特性與Rust的所有權模型形成天然契合——解析不可信輸入時,編譯期內存安全保證比運行時檢查更可靠。開發團隊采用漸進式移植策略:先建立FFI綁定復用現有匯編優化,再逐步替換C核心邏輯,每一步都伴隨一致性測試驗證。
項目采用BSD雙條款許可證開源,代碼托管于GitHub。這一案例的價值在于驗證了一條可復制的路徑:對性能敏感的基礎設施軟件,不必在"安全"與"速度"之間二選一。Rust的FFI能力允許團隊保留既有投資(匯編優化),同時系統性消除高危漏洞類別。
![]()
對于關注底層軟件安全的開發者,rav1d-rav2d的連續實踐提供了一個觀察樣本:當關鍵基礎設施的語言遷移從理論討論進入工程實施階段,具體的移植方法論、測試策略和性能取舍,比語言之爭本身更具參考意義。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.