題:
可以簡單地解壓縮JPEG圖像來觸發漏洞利用嗎?
JDługosz
2015-08-27 00:01:00 UTC
view on stackexchange narkive permalink

小說 Daemon經常以其寫實而不是混搭流行語而廣受讚譽。

然而,這使我感到不切實際:

Gragg的電子郵件中包含經紀人徽標的有毒JPEG。 JPEG是壓縮的圖像文件。當用戶查看電子郵件時,操作系統運行解壓縮算法以在屏幕上呈現圖形。正是這種解壓縮算法執行了Gragg的惡意腳本,並讓他滑入用戶的系統內-授予他完全訪問權限。有一個可用於解壓縮漏洞的補丁程序,但是年齡較大的有錢人通常對安全補丁程序一無所知。

有這樣的事情嗎?該描述是否基於某些真實的利用?

該描述發佈於2006年12月。

說“操作系統”正在解壓縮圖像以進行渲染是否明智?


請注意,這與PHP圖像上傳腳本的安全性無關。我問的是顯示JPEG的解碼過程,不是腳本從遠程用戶那裡獲取輸入,也不是文件被誤名為 .jpeg 。我正在回應的重複標記看起來很差勁,即使是流行詞匹配也是如此;除了提及圖像文件,真的沒有什麼不同。

不幸的是,幾乎所有格式都可能中毒。甚至某些損壞的文件也可能使內置的解壓縮和/或解碼例程崩潰。
我在互聯網上找不到任何證據,但是我記得我曾經收到過打開CD托盤的“ JPG”圖像(這是12年前的Windows XP)。
自2004年使用GDI +進行攻擊以來,圖像文件中的惡意軟件便在小說中廣受歡迎。這個例子很合理。有些不是這樣。也許更糟的是在《骨頭》中,有人在兇殺受害者的骨頭上刻上了一個分形圖像,當他們上傳照片時,該圖像控制了主角的網絡。那使我的大腦受傷。
這對於真正的答案是不夠的,但是實際上是通過不同的圖像格式WMF可以*通過設計*運行任意代碼。它是為16位Windows時代的智能矢量圖形設計的,在當時被認為是一個不錯的折衷方案。快進到今天,互聯網使這成為一個殘酷的安全漏洞。 TTF文件(字體)也被利用。 JPG的某些解析器完全有可能以相同的方式具有漏洞利用漏洞。
如果jpeg不允許在設計上隨意編寫代碼,那麼它怎麼會有相同的漏洞?
事實證明CD托盤開啟器不是JPEG,而是VBS腳本,儘管jpeg文件擴展名是IE執行的。
紮根iPhone的第一版是一種常見的方法。
@arivero“它”是指...? (解碼漏洞或先前評論中的內容)
@user158037,謝謝,我不記得是圖像查看器還是IE出現此缺陷。
@JDługoszer ...“它”是指您最初的問題,“解壓縮JPEG圖像”。
僅查看帶有jpeg文件的頁面會“紮根”電話嗎?好方便有鏈接參考嗎?
我很高興見到守護進程在這裡。幾年前,我讀到了這篇文章,這讓他驚訝地緊貼現實的,已有的技術,真是令人驚訝。實際上,就在過去一周,我在百思買遇到了超音速音響系統(那是Sobol家中的音響系統),體驗起來非常有趣。
[是否可以將惡意軟件附加到圖像?](http://security.stackexchange.com/questions/55061/can-malware-be-attached-to-an-image/)的可能重複項
PS3上用來播放錄製的PS2遊戲(不是在開玩笑)的一種攻擊方式是在固件的1.75版上打開特製的TIFF圖像。另外,Android上還有[StageFright漏洞](http://security.stackexchange.com/questions/95165/how-exactly-does-the-stagefright-vulnerability-work-on-android),甚至不需要打開消息!因此,是的,完全有可能。
據報導,一個新的正在自動取款機上。 [來源](http://steamcommunity.com/groups/reddit#announcements/detail/145594019967735932)
另外,JPEG + ZIP也是一種隱寫技術-一種在文件末尾忽略多餘的內容,另一種在文件開頭忽略。[示例。](https://github.com/MiroslavVitkov/scripts/tree/master/crypto)
五 答案:
gowenfawr
2015-08-27 00:10:55 UTC
view on stackexchange narkive permalink

有這樣的東西嗎?

絕對。將惡意輸入提供給解析器是創建漏洞利用程序的最常見方法之一(對於JPEG,“解壓縮”就是“解析”)。

此說明是否基於某些真實的描述

它可能基於 Microsoft Windows GDI +緩衝區溢出漏洞

其中存在一個緩衝區溢出漏洞GDI +(Gdiplus.dll)的JPEG解析組件處理格式錯誤的JPEG圖像的方式。通過向易受攻擊的組件引入特製JPEG文件,遠程攻擊者可以觸發緩衝區溢出情況。

...

未經身份驗證的遠程攻擊者可能會通過引入特製JPEG文件在易受攻擊的系統上執行任意代碼。此惡意JPEG圖像可能通過惡意網頁, HTML電子郵件或電子郵件附件被引入系統。

此版本於2006年12月發布。

GDI + JPEG解析漏洞於2004年9月發布。

是可以說“操作系統”正在對圖像進行解壓縮以渲染圖像嗎?

確定嗎?在這種情況下,它是一個系統庫,需要OS供應商補丁才能對其進行更正。通常,此類庫會由多個軟件包使用,從而使其成為操作系統的一部分,而不是特定於應用程序的。

實際上,“電子郵件應用程序調用了系統庫來解析JPEG”,但是“操作系統”對於小說來說已經足夠接近了。

如果我沒記錯的話,索尼Playstation Portable(PSP)最初的一些“越獄”方法使用的是“特製”圖像文件,該文件破壞了PSP的解碼器並允許執行嵌入JPG中的代碼。
“攻擊者可能執行任意代碼”是* any *緩衝區溢出錯誤的樣板嗎?從用戶模式線程提升特權將是另一個問題。
@JDługosz,是的,這是一個標準化的描述。大多數CVE和安全漏洞描述都使用一組標準短語,例如“ [本地|遠程]攻擊者可以[具有[用戶|提升的]特權]潛在地執行[任意] [命令|代碼] []。簡潔的關鍵字和短語(“樣板”)的重複使用使防御者可以快速評估風險-例如,[local | remote]關鍵字對於評估風險很重要。 GDI +公告中使用的措詞告訴我,代碼在用戶打開JPEG的特權下運行-在2004-2006 Windows中,通常是管理員!
僅當所涉及的解壓縮算法中存在允許任意代碼執行的錯誤時,才可能利用此漏洞,對嗎?
@TripeHound是的,彩虹色,在外殼蓋圖上的鬼影和tiff格式,以使用chickenHEN。我還在這附近。編輯:是的,chickHEN,但不是tiff:/
-1
@MaxNanasy是的-但情況總是如此;有時是代碼中的錯誤,有時是OS中的錯誤,有時是設計中的錯誤。正如許多示例所示,我認為很多解析器* do *實際上都存在這些錯誤-導致代碼執行的緩衝區溢出是最常見的錯誤。這是MS推出.NET的原因之一-只要您安全地處於託管環境中,就可以消除一條巨大的漏洞通道。當然,出於性能原因,許多解析器將使用不安全的代碼,因此它雖然不盡如人意,但仍會有所幫助。
Nic Barker
2015-08-27 08:18:34 UTC
view on stackexchange narkive permalink

與其他人達成共識,這是完全可能的,而且還添加了一個有趣的軼事:

Joshua Drake(@jduck),發現了一個基於非常相似概念的錯誤(圖像由操作系統)最終被命名為“ Stagefright”,並影響了數量眾多的Android設備

他還在 libpng 中發現了類似的基於圖像的錯誤 b> a>會導致某些設備崩潰。他在推特上發了一個例子,基本上說:“嘿,看看我製作的這個很酷的惡意PNG,它很可能會使您的設備崩潰”,卻沒有意識到Twitter已經添加了自動渲染嵌入式圖像的功能。不用說,他的許多追隨者在瀏覽器嘗試將圖像縮略圖加載到其提要中的瞬間就開始使計算機崩潰。

實際上,媒體框架稱為“ Stagefright”,但其名稱已經足夠吸引人,可以將其命名為“ Stagefright bug”。 /題外話
user158037
2015-08-27 20:48:15 UTC
view on stackexchange narkive permalink

不切實際?字體定義解析中最近出現一個嚴重的錯誤: https://technet.microsoft.com/zh-cn/library/security/ms15-078.aspx和libjpeg更改說明都包含安全建議。解析文件[1]很困難:上溢,下溢,越界訪問。最近,開發了許多模糊測試工具,用於半自動檢測可能導致崩潰的輸入。

[1]或網絡數據包,XML甚至SQL查詢。

是的...用非託管代碼很難-.-如果只用託管代碼編寫代碼,緩衝區上溢/下溢將減少到當前對安全性影響的1%以下...
如果C編譯器作者對提高魯棒性感興趣,那麼C可以在語義為“給出有效輸入,產生正確的輸出;給定無效輸入,產生鬆散約束的輸出”的許多任務上勝過Java。不幸的是,編譯器作者似乎對此沒有興趣,並且更喜歡優化邏輯,以防止無法安全地使用UB的UB在其他情況下不會發生。情況。
@Falco:託管代碼不是免費的。另一方面,由於超現代C消除了C曾經具有的許多性能優勢,這種情況在程序員不關心諸如溢出之類的情況下的精確行為的情況下,我看到C保持競爭力的唯一方法是正式的目錄行為,不是標準所保證的,但是得到了廣泛實施,並允許程序員指定它們。
@Falco不幸的是,託管運行時也共享其緩衝區溢出。編寫Java的人在使用防禦性編程來保護運行時的弱點方面做得非常糟糕。實際上,我只是碰巧遇到了最新的Java語言(並向甲骨文報告,甲骨文確認了)。一切都歸結為對過早優化的不明智的追求。我想知道我們是否突然有了突破並且可以構建20 GHz芯片,程序員是否最終會接受邊界檢查等。還是他們太固執。
MS15-078甚至更令人擔憂,因為Adobe字體驅動程序*以內核模式運行*。
@AleksandrDubinsky我不會屏住呼吸-我們在處理速度的數量級上有了一些提高,而且還有很多人堅持避免邊界檢查。如果CPU速度提高1000倍,那麼到目前為止的原因仍然是相同的。但是,還是有希望的-例如,微軟研究院一直在從頭開始開發一個功能全面的託管操作系統-它不是為性能而設計的,而是為了安全性而設計的,但對於一個研究項目,它仍然表現良好。而且,在管理整個操作系統時,可以避免在託管和非託管之間進行通信的成本。
Emilio M Bumachar
2015-08-31 00:42:25 UTC
view on stackexchange narkive permalink

正如其他人指出的那樣,此類攻擊通常利用緩衝區溢出。

關於具體的細節,稱為堆棧粉碎攻擊。它涉及破壞調用堆棧,並用將要執行的攻擊者提供的代碼的地址覆蓋要執行的合法代碼的地址。

您可以在以下位置找到詳細信息: insecure.org/stf/smashstack.html

TheJulyPlot
2015-08-27 00:08:04 UTC
view on stackexchange narkive permalink

是的,這是可能的:

根據高級安全研究員Jerome Segura的合作發現,一種邪惡的Zeus銀行木馬的新變種– ZeusVM –隱藏在JPG圖像文件中。

該行為被稱為隱寫術-將消息或圖像隱藏在其他消息或圖像中。

對於ZeusVM,該惡意軟件的代碼為塞古拉(Segura)在周一的博客中透露,該圖片隱藏在不起眼的JPG圖像中。這些照片用作ZeusVM檢索其配置文件的誤導。受害者自己。” Segura在周二的一封電子郵件中告訴SCMagazine.com。 “實際上,JPG本身對用戶幾乎沒有可見性,並且在很大程度上是一種偽裝技術,以確保從安全軟件的角度來看不會被檢測到。”

來源

儘管該技術可能適用於有故障的JPEG解碼器,但這似乎不是此類示例。這只是在JPEG中對配置文件進行編碼,以隱藏對“現有”感染的更新。 OP似乎在詢問JPEG圖像是否是傳播新感染的媒介。
好吧,如果您想成為一個學究的人,即使在jpegs和更廣泛的計算機科學中,解析和解壓縮也是兩個獨立的過程。一個以一種說話的方式描述數據,另一個以解壓縮的方式。無論哪種方式,都可以使用許多謹慎的方法通過jpeg傳遞惡意軟件這一點。
我認為這個示例比簡單的受感染圖像更有趣,用戶可能需要與之進行交互。本示例顯示了一種複雜的惡意方法,該方法沒有引起用戶的注意,並可能導致瀏覽器中的人攻擊
利用JPEG解壓縮器感染的圖像的重點是不需要*交互作用。如果您的JPEG實施方式有問題,例如@gowenfawr,提供的GDI +示例,則僅查看網頁或電子郵件就會受到損害。這樣的圖像甚至可以由可信賴的網站上的廣告腳本提供。這比JPEG用作*預先存在的*感染的無害的傳播機制要更有趣和令人擔憂。
我明白你的意思,但與我的評論無關。也可以通過在瀏覽器中簡單地下載圖像來感染您。 gowenfawrs的例子是一個很好的例子,是的,我同意。更接近原始問題中的理論示例。無論如何,正如我所說,通過jpeg傳播惡意軟件有很多不同的方法,其中包括我僅作為jpeg惡意示例而提出的一種方法。 https://blog.malwarebytes.org/security-threat/2014/02/hiding-in-plain-sight-a-story-about-a-sneaky-banking-trojan/
@TheJulyPlot我認為您誤會了它的工作原理。在此示例中,Zeus木馬使用jpg隱藏其下載配置文件的方式。已感染木馬的計算機將下載圖像並提取數據。該映像僅包含(隱藏的)配置文件,不包含木馬,並且沒有自行感染系統的機制。僅通過在瀏覽器中下載圖像就不會感染您。
我一點也不誤會。事實上,我在發布的鏈接中對此進行了描述。
我不確定“複雜”是否真的描述了這樣的事情。 JPEG解碼器通常只運行到EOF字節(如果存在),就像將任何其他文件連接到圖像文件的末尾一樣容易。貓img.jpg evil.zip> evil.jpg是必要的。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...