| CVE編號 | CVE-2017-14694 |
|---|---|
| 影響產品 | MobilePDF for Android 6.0.2以前版本/ PhantomPDF 8.3.2.25013以前版本 /Reader 8.3.2.25013以前版本 |
| 解決辦法 | (1)下載MobilePDF for Android 6.1,參考 https://play.google.com/store/apps/details?id=com.foxit.mobile.pdf.lite (2)更新PhantomPDF 8.3.5、Reader 9.0,從Help頁籤操作檢查更新。 |
| 張貼日 | 2018-01-20 |
| 上稿單位 | TWCERT/CC |
●概述:
福昕軟體公司研發數款PDF閱讀工具,其特色在體積小、速度快,經測弱點在Android平台之MobilePDF與Windows平台之PhantomPDF、Reader,用智慧機閱讀PDF須注意,內含跳離字元的URI未完整檢驗,即使手動關閉MobilePDF,Wi-Fi仍繼續傳輸而使資料被讀取。至於桌機使用PhantomPDF或Reader則意外較多,多種涉及XML Forms Architecture的Type confusion與use-after-free狀況,恐衍生Remote Code Execution;而single instance模式以滑鼠雙擊開啟惡意PDF,可能因錯置Address control碼流而當機;開啟EPUB檔案若碰巧其ZIP壓縮之檔名長度超限,則觸發buffer overflow;無論是否採安全模式閱讀,皆有數種函數及參數運用時觸發out-of-bounds read,造成隨機檔案、異常PDF被開啟,Foxit就相關版本軟體進行升級並公告。
●編註:
(1)MobilePDF for Android
若URI字串加上一跳離字元,則處理時所示路徑無法正確檢驗,Wi-Fi傳輸期間遇到此種情況,即便關閉MobilePDF程式,Wi-Fi服務仍繼續,可能導致任意檔案被讀取之資訊洩漏事件。
(2)在Windows平台PhantomPDF及Reader
(2-1)型態混淆Type confusion
型態混淆錯誤集中在XFA(XML Forms Architecture)處理過程,尤其對變造之PDF檔執行特定XFA JavaScript或XFA FormCalc函數時,程式未判斷資料型態就強制轉換資料物件,甚至開啟XFA檔案時,其data binding亦誤用不相符物件,類似條件均可能引發Remote Code Execution。
(2-2)使用釋放後記憶體use-after-free
記憶體管理瑕疵略述,如已釋放之Annot object、closeDoc JavaScript所釋放文件又被運用;資料綁定期間遭刪除的XFA與XML nodes不一致;結果導致遠距代碼執行。
(2-3)當閱讀軟體在single instance模式下執行,再以滑鼠雙擊方式開啟惡意PDF,會呼叫CoCreateInstance函數且讓PenInputPanel元件初始化失敗,形成Address control碼流錯置,在此狀態下從記憶體讀取資料,極易發生當機。
(2-4)開啟EPUB檔案時,若該檔ZIP壓縮之檔名長度超出限制,則觸發buffer overflow。
(2-5)越界讀取
有4種條件可能造成out-of-bounds memory read,譬如誤載錯誤資源而擾亂檔案型態過濾,啟動了gflags app;呼叫錯誤util.printf參數;以及JP2_Format_Decom函數呼叫時,指標未經初始化而異常開啟PDF;程式在提取圖像過程,render.image函數會打開本機PDF檔,以上皆屬意外性資料洩漏。
(2-6)非Safe-Reading-Mode越界讀取
不在安全模式下閱讀,部分功能缺失浮現,恐觸發越界讀取記憶體,例如lrt_jp2_decompress_write_stripe、_JP2_Codestream_Read_SOT、GetBitmapWithoutColorKey等函數,後果可能是胡亂開啟任何檔案,包含異常PDF檔。
