近期 JFrog 的安全研究團隊揭露了一個名為 PixelSmash 的嚴重安全漏洞,其影響範圍極廣,因為它存在於全球最基礎的媒體處理框架 FFmpeg 之中。最令人不安的是,這個漏洞在程式碼庫中潛伏了長達 16 年,直到最近被 AI 驅動的安全研究工具發現。
這是一個典型的記憶體安全問題,被 CISA 編號為 CVE-2026-8461,其危險等級被評為高風險。
漏洞的核心原理:堆疊緩衝區溢位
PixelSmash 漏洞發生在 FFmpeg 的 MagicYUV 解碼器中。MagicYUV 是一種用於處理高解析度影像的編碼格式。該漏洞的本質是 Heap Out-of-Bounds Write,也就是堆疊越界寫入。
簡單來說,當解碼器在處理一個經過精心設計的惡意影片檔案時,由於對切片高度 slice height 的數值驗證不足,導致程式在寫入記憶體時超出了預先分配的緩衝區邊界。這種記憶體損毀行為會導致兩種結果:最輕微的是造成應用程式崩潰,即 Denial of Service (DoS) 拒絕服務攻擊;最嚴重的是攻擊者可以藉此控制程式執行流,達成 Remote Code Execution (RCE) 遠端程式碼執行,直接接管受害者的電腦或伺服器。
為什麼這個漏洞的影響範圍如此之大
FFmpeg 幾乎是現代網路世界中處理影片的標準基礎設施,它的 libavcodec 函式庫被整合在無數的軟體中。這意味著攻擊者不需要取得你的權限或密碼,只要能讓系統處理一個惡意媒體檔案,就能觸發攻擊。
受影響的場景涵蓋了從個人端到雲端的所有層級。在個人電腦上,只要使用者用播放器開啟惡意檔案,甚至僅僅是用檔案管理員瀏覽包含該檔案的資料夾,觸發自動生成縮圖 (Thumbnail) 的機制,就可能中招。
在伺服器端,風險更高。許多媒體伺服器如 Jellyfin 或 Nextcloud 具有自動掃描函式庫或生成預覽圖的功能。研究人員證明,僅需上傳一個 50 KB 的小型 AVI 檔案,就能在這些伺服器上執行遠端程式碼。此外,像 Slack、Discord 等聊天平台或 AWS MediaConvert 等雲端轉碼服務,只要後端使用 FFmpeg 處理上傳的影片,都處於潛在風險之中。
如何檢測與修復
對於開發者或系統管理員,首先需要確認系統中的 FFmpeg 是否啟用了 MagicYUV 解碼器。可以使用指令 ffmpeg -decoders 並搜尋 magicyuv 字樣。如果輸出結果中包含 VFS..D magicyuv,則表示該版本存在風險。
修復方案分為三種層級。最徹底的方法是將 FFmpeg 升級至 9.0 或更新版本。若無法立即升級,可以在編譯 FFmpeg 時使用 --disable-decoder=magicyuv 參數,直接將該有問題的解碼器移除。
對於需要快速修補的環境,可以針對 libavcodec/magicyuv.c 進行程式碼修正。修補的核心在於增加對 slice_height 的嚴格驗證,確保其數值符合邏輯且不會導致記憶體越界。由於正規的 MagicYUV 編碼器產出的數值皆為對齊,因此這種修正不會影響正常檔案的播放。
技術反思:C 語言遺產與記憶體安全
PixelSmash 的出現再次敲響警鐘,提醒我們現代軟體供應鏈的脆弱性。FFmpeg 雖然經過大量的自動化測試,但依然漏掉了這個潛伏 16 年的漏洞,這凸顯了 C 語言在處理複雜二進位數據時,記憶體管理(Memory Safety)的先天缺陷。
目前業界對於依賴 C 語言開發高性能基礎組件的爭議日益增加。許多工程師呼籲應優先將這類高風險組件遷移至具有記憶體安全保障的語言(如 Rust),或者導入更強大的自動化安全稽核工具,以避免單一函式庫的漏洞演變成全球性的安全危機。
來源:infoq.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。