「解壓炸彈包」看似僅46MB大小,解壓後卻膨脹到4.5PB灌爆你硬碟
「解壓炸彈包」看似僅46MB大小,解壓後卻膨脹到4.5PB灌爆你硬碟
2019.07.15 | 資訊安全

ZIP一直是主流的壓縮文件格式,並且可追溯到幾十年前的5.25和3.5英吋軟碟時代。然而該技術作為一把雙面刃,也難免被別有用心的人所利用。比如透過一個看似超小型的壓縮包,製作一個內含巨量垃圾資料的「解壓炸彈包」(zip bomb)——一個表面上只有46MB,但其實解壓縮後,可以膨脹到4.5PB的zbxl.zip炸彈壓縮包。

其實早在去年,研究員大衛·菲爾(David Fifield)就曾展示過早期的解壓炸彈包,能夠將一個42kB的zbsm.zip文件迅速膨脹到5.5GB。

解壓炸彈包.png
圖/ T客邦

之後,他又繼續努力,推出了一個表面上只有10MB,但其實能夠膨脹到281 TB的zbLG.zip炸彈壓縮包。

時間轉眼到了2019年7月,菲爾又發表了他的最新研究成果——一個表面上只有46MB,但其實可以膨脹到4.5PB的zbxl.zip炸彈壓縮包。

不過需要指出的是,由於其採用了Zip64,所以相容性較差。

研究成果.png
7月2日,大衛·菲爾(David Fifield)詳細介紹了自己的最新研究成果。
圖/ T客邦

zip解壓炸彈包使用遞歸算法的原因,歸結於ZIP解析器中使用的DEFLATE算法無法實現高於1032:1的壓縮率。有趣的是,菲爾找到了一種繞過該限制的方法。

其寫到:本文介紹了如何構造一款壓縮比超過DEFAATE 1032的非遞歸解壓炸彈包。其透過重置zip容器內的文件來實現,以便在多個文件中引用高度壓縮數據的「內核」,而不是製作它的多個副本。

階段.jpg
圖/ T客邦

解壓炸彈的輸入與輸出大小,呈現的是二次方增長。即隨著炸彈變大,壓縮比也就更強。構造取決於zip和DEFLATE的特徵,它不能直接移植到其它文件格式或壓縮演算法。

此外,該方案與大多數zip解析器相容,不過文件流解析器是個例外。後者在一次傳遞中解析,而無需事先查詢zip文件的中心目錄。

目錄.jpg
圖/ T客邦

為使該方法見效,菲爾必須重新審視數據是如何存儲在zip文件中的,並且選擇了適當的Deflate實現。

其選擇了bulk_deflate,一個專門用於壓縮一串重複字節的自定義壓縮器,能夠比zlib、info_ZIP或Zopfli更密集地打包數據的工具。

目錄-1.jpg
圖/ T客邦

儘管bulk_deflate優於這些解決方案,但菲爾指出,其在一般用例中的效率並不高,還必須借助被稱作ZIP64的zip標準擴展,來創建一個內含超過281TB數據輸出的文件。

但若使用ZIP64,便可創建出一個內含有效無限長度的解壓炸彈包。至於更多細節,還請移步至官網查看。

本文授權轉載自:T客邦

關鍵字: #隱私與資安
本網站內容未經允許,不得轉載。

登入數位時代會員

開啟專屬自己的主題內容,

每日推播重點文章

閱讀會員專屬文章

請先登入數位時代會員

開啟收藏文章功能,

請先登入數位時代會員

開啟訂閱文章分類功能,

請先登入數位時代會員

我還不是會員, 註冊去!
追蹤我們
台日半導體新局 全解讀
© 2024 Business Next Media Corp. All Rights Reserved. 本網站內容未經允許,不得轉載。
106 台北市大安區光復南路102號9樓