按 Enter 到主內容區
:::

TWCERT-電子報

:::

音訊解碼器FAAD2可能帶來記憶體區段錯誤

發布日期:
字型大小:
  • 發布單位:TWCERT/CC
  • 更新日期:2019-04-03
  • 點閱次數:596
音訊解碼器FAAD2可能帶來記憶體區段錯誤

CVE編號

CVE-2018-19504 CVE-2018-19503 CVE-2018-19502

內文

●概述:
免費開源的音訊解碼器Freeware Advanced Audio Decoder(FAAD),已發展至第2代FAAD2,程式本身以C語言撰寫,故測試者使用Address-Sanitizer(ASAN),此工具專門對C/C++程式記憶體偵錯,目前FAAD2最新2.8.8版被分析出多項Memory Corruption,如mp4read.c、syntax.c、sbr_hfadj.c原始設計有瑕疵,造成部分變數相互干擾記憶體配置區內容;而filtbank.c之ifilter_bank( )函數則是定址失敗而參考空指標,鑑此,操作FAAD2處理音訊檔時,極有可能發生buffer-overflow及DoS現象,無法輸出完整檔案格式,FAAC暫無安全更新。
●編註:
(1) buffer-overflow
(1-1)原始碼frontend/mp4read.c內,函數function parse( )運算過程,兩個全域變數mvhd、trak所佔用記憶體位址未精確配置,將導致溢位事件。
(1-2)原始碼libfaad/syntax.c內excluded_channels( )函數,因覆蓋其他函數配置區段,導致heap buffer overflow例外狀況。
(1-3)原始碼libfaad/sbr_hfadj.c內,函數alculate_gain( )處理其架構內4個物件Q_M_lim、G_lim、S_M、adj,其中adj參數值所在配置區遭其他運算過程影響而覆蓋,產生stack-buffer-overflow。
(2)參照NULL pointer
原始碼libfaad/filtbank.c中ifilter_bank( )函數,可能因初始化步驟失敗,造成讀取記憶體時仍未定址,指標沒有標示正確分頁,易觸發越界讀取,輾轉至DoS。

影響產品

Freeware Advanced Audio Decoder2 2.8.8

解決辦法

觀察2下載處,均無近期更新版本。

https://www.audiocoding.com/downloads.html
https://sourceforge.net/projects/faac/files/faad2-src/faad2-2.8.0/

回頁首