fixmint
ZH-TW

這個 ZIP 檔案能安心開啟嗎?解壓縮前先檢查

作者: · · 閱讀約 4 分鐘

解壓縮前先檢查 ZIP。它的內容清單會列出每個檔案的名稱、大小,以及壓縮後縮小了多少。ZIP 若想搞破壞,通常會在這裡露出五個跡象:解壓後大小暴增、名稱會跳出所在資料夾、第二個副檔名掩蓋了真正的類型、有加密的項目,以及真實類型與檔名不符的檔案。請先查看 ZIP 內容,只解壓你預期中的檔案。

ZIP 檔案檢視器這個 ZIP 裡面有什麼?免費使用

ZIP 內容清單顯示什麼

ZIP 會把每個檔案存成一個項目。在壓縮檔的結尾,它保存一份名為中央目錄的清單,每個項目對應一筆紀錄。每筆紀錄包含項目的名稱與路徑、壓縮前後的大小、壓縮方法、一組名為 CRC-32 的校驗碼(根據內容計算出的短數字,用來偵測損毀),以及該項目是否加密。

解壓縮工具會先讀取這份清單。ZIP 檢視器只讀取清單,所以不必解壓就能看到內容,壓縮檔裡的任何東西也都不會執行。

Zip 炸彈:檔案很小,解壓後卻極大

壓縮的原理是用短代碼取代重複的資料,重複越多,結果就越小。壓縮比是解壓後大小除以壓縮後大小。大段重複的資料壓縮效果極佳,常見的 ZIP 方法可以把一長串相同位元組縮小約一千倍。

Zip 炸彈正是利用這一點。它是一個很小的壓縮檔,解壓後會變成好幾 GB,有時還會把壓縮檔層層巢套,讓體積倍增。解壓這種檔案會塞滿磁碟,甚至讓電腦當機。

一般檔案可以讓你掌握正常的壓縮比。文字和程式碼會大幅縮小;照片、影片,以及 .docx、.xlsx、.jpg 等本身已經壓縮過的檔案,幾乎縮不了多少。如果一份本該是普通文件的檔案,壓縮比卻高達數百,就是警訊。

跳出資料夾的名稱

每個項目的名稱都可能包含資料夾。像 ../../Startup/update.bat 這樣的名稱,會指示解壓程式往上跳兩層,寫入開機啟動資料夾,之後每次登入電腦,那個程式都會執行。這種手法稱為路徑穿越,也叫「zip slip」。謹慎的解壓程式會移除 ../ 的部分,但較舊的工具或自製的腳本未必會這麼做。

名稱以斜線開頭的,例如 /etc/... 或 C:\...,也是同樣的問題,它想寫入磁碟上的固定位置。檢視器會照原樣顯示儲存的名稱,所以在任何東西被寫入之前,你就能先讀取。

雙重副檔名與隱藏的類型

檔案名稱的最後一個副檔名,會告訴系統它是哪種檔案。invoice.pdf.exe 結尾是 .exe,所以它是程式,即使前面的名稱看起來像 PDF。Windows 預設會隱藏已知檔案類型的副檔名,因此畫面上可能只顯示「invoice.pdf」。

從開頭幾個位元組檢查真實類型

每種檔案類型都以幾個特徵位元組開頭。副檔名只是一個標籤,任何人都能更改。檢查檔案的真實類型會讀取這些開頭位元組,並與檔名比對。

類型開頭位元組(十六進位)
PDF 文件25 50 44 46(文字為 %PDF)
PNG 圖片89 50 4E 47
JPEG 圖片FF D8 FF
ZIP,以及 Word 或 Excel 檔(內部是 ZIP)50 4B 03 04(文字為 PK)
Windows 程式4D 5A(文字為 MZ)

類型不符並不代表檔案有害,但它表示檔案不是檔名所宣稱的那樣,這已足以讓你停下來,查明它從哪裡來。

加密項目

有密碼保護的項目會隱藏內容。檢視器仍能顯示名稱和大小,但在這裡無法檢查裡面的東西,掃描工具也同樣無法讀取。這就是攻擊者用加密壓縮檔來躲過過濾的原因。銀行對帳單和報稅表也常被刻意加密。如果寄件者是你認識的人,請透過其他管道索取密碼,並且只在確定寄件人之後才開啟壓縮檔。

Mac 與 Windows 的垃圾檔

有兩個系統會加入你沒有建立的檔案:

  • macOS 會在隱藏的 __MACOSX 資料夾裡,為每個檔案存放額外資料,並在檔案旁建立以 ._ 開頭的檔案,另外還會寫入 .DS_Store 檔,用來保存 Finder 的檢視設定。
  • Windows 會加入 Thumbs.db(縮圖快取)和 desktop.ini(資料夾顯示設定)。

這些檔案無害,但會讓壓縮檔變得雜亂,也會讓收件的人感到困惑。

寄送前先清理壓縮檔

清理 ZIP會產生一個不含 Mac 與 Windows 垃圾檔的新壓縮檔,原始檔案維持不變。建議的步驟如下:

  1. 在 ZIP 檢視器中開啟壓縮檔,逐一讀取每個名稱。
  2. 用檔案類型檢查檢查名稱或類型看起來不對的檔案。
  3. 清理壓縮檔,然後開啟清理後的副本,確認其中仍包含你要寄送的內容。
  4. 寄送清理後的副本。

特殊情況

  • 壓縮檔中的壓縮檔。 檢視器只會顯示外層的清單。請另外開啟內層的壓縮檔,並以同樣的方式檢查。
  • 損毀的壓縮檔。 中央目錄位於結尾,因此結尾損壞可能使 ZIP 根本無法開啟。這是損毀問題,並不代表壓縮檔是安全的。請檢查是否損毀。
  • 自我解壓檔。 附帶程式的壓縮檔,通常命名為 .exe,本身就是程式。除非你信任來源,否則不要執行。
  • 清單乾淨不代表保證安全。 整齊的清單只表示名稱與大小看起來正常,並不能證明每個檔案都無害。即使檢查過,也不要執行來自不可信任來源之壓縮檔中的程式。

借助 AI 協助,由英文原文翻譯而成。

留言

    還沒有留言,搶先留言吧。

    您的評分(選填)

    您的電子郵件不會顯示,也不會被保存。

    Digital Workflow Toolkit 的封面Digital Workflow Toolkit

    收錄串接小型檔案作業(轉檔、重新命名、壓縮、合併)的食譜、範本與模式,讓工作流程每次都以相同方式運作。

    $19.00在 Gumroad 購買英文版