最近國外研究人員公布的一段exp代碼能夠在打完補丁的Fedora等Linux系統上進行drive-by攻擊,從而安裝鍵盤記錄器、后門和其他惡意軟件。
這次的exp針對的是GStreamer框架中的一個內存損壞漏洞,GStreamer是個開源多媒體框架,存在于主流的Linux發行版中。我們都知道,地址空間布局隨機化(ASLR)和數據執行保護(DEP)是linux系統中兩個安全措施,目的是為了讓軟件exp更難執行。但新公布的exp通過一種罕見的辦法繞過了這兩種安全措施——國外媒體還專門強調了這個漏洞的“優雅”特色。研究人員寫了個flac多媒體文件,就能達成漏洞利用!
ASLR是一種針對緩沖區溢出的安全保護技術,通過對堆、棧、共享庫映射等線性區布局的隨機化,通過增加攻擊者預測目的地址的難度,防止攻擊者直接定位攻擊代碼位置,達到阻止溢出攻擊的目的的一種技術。而DEP則能夠在內存上執行額外檢查以幫助防止在系統上運行惡意代碼。
無腳本exp
與傳統的ASLR和DEP繞過方法不同的是,這個exp沒有通過代碼來篡改內存布局和其他的環境變量。而是通過更難的字節碼排序徹底關閉保護。由于不需要JavaScript也不需要其他與內存通信的代碼,所以其他攻擊不行的時候,這種攻擊可能依然可行。
“這個exp很可笑”,研究員Chris Evans在周一的博文中寫道,“但是它證明了無腳本的exp也是可行的,即便開啟了64位的ASLR還是有辦法能夠進行讀寫內存等操作,并且能夠穩扎穩打地一步一步進行攻擊然后獲得控制權。”
Azimuth Security高級研究院Dan Rosenberg特別擅長Linux漏洞的防御。在一封郵件中他同意了Chris Evans的觀點:
這個exp相當厲害,因為它成功繞過了ASLR和NX等先進的保護措施,而且不需要與目標軟件進行程序交互。
詳細來說,當要攻擊瀏覽器漏洞的時候,exp會用JavaScript影響內存布局。類似地,當要攻擊本地內核漏洞時,exp會發起系統調用來影響目標環境。但在現在的場景差別很大,由于exp是一個單獨的媒體文件,黑客沒有機會在攻擊的過程中作調整。
Evans隨后發布了一個FLAC媒體文件,它能夠運行在默認版本的Fedora 24上(其中預裝了最新版的GStreamer)。Evans說,寫Ubuntu的exp更容易些,因為他沒有ASLR, RELRO等防御措施,即使是在最新的16.04 LTS版本中也沒有。不過他的exp仍然需要改寫才能在除Fedora 24的其他linux版本中運行。雖然攻擊針對的是GStreamer對FLIC文件格式的解碼器,Evans說攻擊目標是Rhythmbox媒體播放器的二進制代碼。Totem播放器也可以用類似的方法攻擊。
漏洞利用較麻煩
這個exp的學術研究價值要比實用價值來得高,因為如果要在其他linux版本上運行就需要重寫。并且由于在linux上播放媒體軟件的用戶本身就少,漏洞可利用的范圍就更少了。周二的時候,Ubuntu發布了補丁,之后幾天應該會有更多的廠商跟進。這個漏洞究竟優雅與否,有興趣的可移步點擊下面的原文鏈接。