按 Enter 到主內容區
:::

TWCERT-電子報

:::

編譯器mingw-w64產出執行檔具先天性缺陷,不受ASLR機制保護

發布日期:
字型大小:
  • 發布單位:TWCERT/CC
  • 更新日期:2019-04-02
  • 點閱次數:804
編譯器mingw-w64產出執行檔具先天性缺陷,不受ASLR機制保護

CVE編號

CVE-2018-5392

內文

●概述:
據美國CERT/CC官方研究指出,因mingw-w64編譯器預設不產生重定位表(relocations table),而relocations table恰巧是結合位址空間隨機化配置(ASLR)之必要條件,故近五年內以mingw-w64製造之執行檔,載入到記憶體後,無法重新標定在記憶體內正確新址,亦失去ASLR保護作用,無法阻撓駭客預測記憶體位址,顯露出緩衝區溢位弱點,面對攻擊者實施返回導向設計(Return-Oriented Programming,ROP),此種進階stack溢位攻擊,能控制堆疊呼叫以劫持程式控制流程,並執行機器語言指令(gadgets)。權宜之計就是開發中程式,以主程式前加底線方式(例:__declspec(dllexport) ),強制產生檔案包含relocations table,然對於已運用軟體成品,目前暫無解決方案,已確認受該漏洞影響之環境為Arch Linux、CentOS、Debian GNU/Linux、Fedora Project、Gentoo Linux、Red Hat, Inc.、SUSE Linux、Ubuntu、VideoLAN,上述作業系統皆完成更新。
●編註:
(1)漏洞成因
在資訊領域,位址空間隨機化配置(Address space layout randomization,縮寫ASLR),係利用隨機方式配置定址空間,反制記憶體崩壞被探勘的技術,控制關鍵資料(例OS內核)配置到惡意程式無法事先獲知的memory address,阻撓駭客預測記憶體位址並發動Return-to-libc攻擊,目前Windows及各類Linux分支皆運用ASLR保護作業系統。
然而近5年內使用mingw-w64編譯器的開發者,可能尚未意識到自己的軟體作品竟有先天性瑕疵,因為mingw-w64所編譯產生的64位元Windows執行檔,儘管包含Dynamic base的PE(Portable Executable)表頭,象徵該可移植性執行檔能相容於ASLR,實則不然,因mingw-w64預設產出檔案不伴生重定位表(relocations table),一旦欠缺relocations table,則執行檔載入到記憶體後,指標僅記錄原始寫入PE內絕對位址,無法重新標定在記憶體空間內正確位置,也失去發揮ASLR作用之條件,故暴露出緩衝區溢位弱點,面對攻擊者實施返回導向設計(Return-Oriented Programming,縮寫ROP),此種進階stack溢位攻擊,能控制堆疊呼叫以劫持程式控制流程,並針對性執行機器語言指令(俗稱gadgets),因為每段gadget結束於return指令,離開ASLR的保護傘,恐無法招架ROP型態之惡意探勘。
(2)權宜作法
對於正進行開發的設計師,建議可強制mingw-w64留用relocations table,範例如下:
__declspec(dllexport)
在程式原始碼主程式(main function)前加底線,效果在於產生同名執行檔時,可完整保留relocations table。至於已經使用中的軟體,暫時無解,大概要請原設計者重新製造執行檔。
(3)名詞解釋
(3-1)重定位表:relocations table功能即是為了指標重新配賦新位址,表內每筆資料稱作fixup,包含每個物件程式碼起始絕對位址(absolute address)及偏移值,執行檔被加載至記憶體內,靠著relocations table,變更新的偏移值,將程式本體*.exe與所需動態連結函式庫*.dll放進新位址,彼此間能參考所在空間且精確找尋。
(3-2) MinGW
MinGW是將GCC編譯器和GNU Binutils移植到Win32平台下的產物,為視窗環境服務的極簡主義GNU,原名Minimalist GNU for Windows,又稱mingw32,包括表頭檔、函式庫、執行檔,另有MinGW-w64專案,是從原本MinGW產生的分支,如今經獨立發展,可生成32位元及64位元Windows執行檔,MinGW也支援 C、C++、Objective-C、Fortran、Ada等語言。
(4)影響範圍
(4-1)已確認並於8月1日更新完畢
Arch Linux
CentOS
Debian GNU/Linux
Fedora Project
Gentoo Linux
Red Hat, Inc.
SUSE Linux
Ubuntu
VideoLAN
(4-2)暫未確認是否受弱點衝擊
Alpine Linux
Arista Networks, Inc.
ASP Linux
CoreOS
ENEA
Geexbox
HomeSeer
Micro Focus
MontaVista Software, Inc.
Openwall GNU/*/Linux
Slackware Linux Inc.
Tizen
Turbolinux

影響產品

none none
回頁首