新的Zip炸彈將4.5PB數據填入46MB文件
數十年來,ZIP文件一直是壓縮信息以便於運輸和存儲的便捷方式。但5.25英寸和3.5英寸軟盤壽命的現實使得依賴多磁碟zip檔案成為長期數據保存的賭博。多年來,我們已經知道有可能創建一種稱為「zip炸彈」的文件 - 一個看似很小的zip文件,其中包含一層又一層的嵌套zip存檔,這樣數據集的最終解壓縮版本就會比最終版本大許多個數量級。一個名為42.zip的起源不明的文件已經在網上漂浮多年,使用這種方法將4.5PB的數據打包成42KB的文件。反病毒掃描程序和解壓縮應用程序現在通常拒絕在遞歸數據層之後被引入解包層,從而阻止了拉鏈炸彈的操作。
研究員David Fifield 開發了他自己的拉鏈炸彈,改進(或「改進」)這種做法。他的文件大小要大得多,需要46MB的基本文件擴展到4.5PB存檔 - 但它不依賴遞歸來實現其壓縮。
zip炸彈使用遞歸的原因是因為ZIP解析器中使用的DEFLATE演算法無法實現高於1032:1的壓縮率。如果你想要比那更多的壓縮,你必須遞歸。Fifield發現了一種繞過這個限制的方法。
它通過重疊zip容器內的文件來工作,以便在多個文件中引用高度壓縮數據的「內核」,而不製作它的多個副本。拉鏈炸彈的輸出尺寸在輸入尺寸上呈二次方增長; 即,隨著炸彈變大,壓縮比變得更好。構造取決於zip和DEFLATE的特徵 - 它不能直接移植到其他文件格式或壓縮演算法。它與大多數zip解析器兼容,例外的是「流」解析器,它在一次傳遞中解析而無需先查詢zip文件的中心目錄。
為了使這種方法有效,Fifield必須重新審視數據如何存儲在zip文件中,並選擇適當的Deflate實現以使其方法有效。
他使用了bulk_deflate,一個「專門用於壓縮一串重複位元組的自定義壓縮器」,因為它可以比zlib,info_ZIP或Zopfli更密集地打包數據。雖然bulk_deflate優於這些解決方案,但他指出,它在一般用例中效率不高。他還必須使用稱為ZIP64的zip標準的擴展來創建一個具有超過281TB數據輸出的文件。使用ZIP64,您可以構建一個有效無限長度的拉鏈炸彈。
一些可以檢測遞歸拉鏈炸彈的反病毒應用程序已經可以檢測到這種創建它們的方法,而Fifield認為防禦它們相當容易。不過,這是一個如何創造性地修改代碼以啟用以前不可能的新類型的高壓縮文件的示例。雖然是一種非常簡單的攻擊,但在某些方面,拉鏈炸彈可以被認為類似於針對單個系統的DoS攻擊。通過佔用所有可用的CPU,RAM和存儲資源,可以使計算機無響應且不可用。
※三星Galaxy Fold準備上市
※Raspberry Pi 4推出更強大的處理器和4K視頻
TAG:一起愛科技 |