Pergi ke kandungan

Bom zip

Daripada Wikipedia, ensiklopedia bebas.
Gambaran keseluruhan beberapa bom arkib, termasuk 42.zip.

Dalam pengkomputeran, bom zip, juga dikenali sebagai bom penyahmampatan atau zip of death (ZOD), ialah fail arkib berniat jahat yang direka dengan tujuan untuk mengeraskan atau melumpuhkan program atau sistem yang membacanya. Semakin lama sistem atau program tersebut, semakin kurang kemungkinannya bom zip tersebut dapat dikesan. Ia sering digunakan untuk melumpuhkan perisian antivirus bagi membuka ruang kepada perisian tebusan/kod berniat jahat yang lebih tradisional.[1]

Bom zip membolehkan program berfungsi seperti biasa, tetapi bukannya merampas kawalan operasi program, ia mencipta arkib yang memerlukan masa, ruang cakera, kuasa pengkomputeran, atau ingatan yang berlebihan untuk diekstrak.[2] Kebanyakan perisian antivirus moden dapat mengesan bom zip dan menghalang pengguna daripada mengekstrak sebarang kandungan daripadanya.[3]

Dengan menyarang fail zip di dalam fail zip yang lain, adalah mungkin untuk mengatasi had nisbah mampatan deflate (1032:1).

Satu contoh terkenal bagi bom zip rekursif bertajuk 42.zip, iaitu fail zip daripada pengarang yang tidak diketahui[4] yang mengandungi 42 kilobait data termampat. Ia mempunyai lima lapisan fail zip bersarang dalam set 16, dengan setiap arkib lapisan paling bawah mengandungi fail berukuran 4.3 gigabait (4294967295 bytes; 4 GiB1 B) untuk jumlah keseluruhan 4.5 petabait (4503599626321920 bytes; 4 PiB1 MiB) data tidak mampat.[5] Hantaran pada Jun 2001 di senarai mel vuln-dev merujuk kepada fail ini, menunjukkan bahawa ia dicipta sebelum tarikh tersebut.[6]

Satu lagi contoh bertajuk "^.zip", iaitu fail zip daripada pengarang yang tidak diketahui yang mengandungi kira-kira 203 kilobait data termampat dan didakwa mengandungi kira-kira 16 yottabait (YB) data tidak mampat. Ini mewakili nisbah pembesaran kira-kira 78.8 kuintilion kepada 1, yang menunjukkan bagaimana sarangan arkib rekursif boleh melebihi had praktikal pemampatan biasa dan mencipta pembesaran saiz yang melampau.

Terdapat juga quine zip, iaitu fail yang apabila dinyahmampat akan menghasilkan salinan dirinya sendiri.[7]

Pertindihan

[sunting | sunting sumber]

Satu lagi teknik untuk mencipta bom zip adalah melalui pertindihan fail. Pertindihan mudah (mempunyai beberapa entri Central Directory yang merujuk kepada Local File Header yang sama) ditolak oleh banyak pelaksanaan kerana nama fail dalam CD dan LFH tidak sepadan. Kaedah yang lebih serasi memerlukan penggunaan Local File Header sebanyak jumlah entri Central Directory. Local File Header ini merujuk kepada bahagian fail yang bertindih: secara lebih khusus, setiap LFH merujuk kepada semua bait di antaranya dan Central Directory sebagai sebahagian daripada "data termampatnya", membolehkan jumlah saiz entri "data termampat" ini berkembang secara kuadratik.[6]

Teknik pertindihan membolehkan arkib 42 KB berkembang kepada 5.4 GB, iaitu nisbah mampatan sebanyak 129 ribu. Disebabkan oleh pembesaran kuadratik, bom zip yang lebih besar menggunakan teknik ini adalah lebih cekap: arkib 9.8 GB boleh berkembang kepada 281 PB (nisbah 28 juta). Terdapat juga varian Zip64 dengan nisbah 98 juta.[6]

Kaedah ini memerlukan LFH perantara "dipetik" (quoting) supaya ia boleh diperlakukan sebagai sebahagian daripada data termampat tanpa ralat. DEFLATE membolehkan kaedah petikan mudah yang tidak boleh digunakan untuk fail zip bzip2. Untuk semua kaedah mampatan, adalah mungkin untuk menandakan data tambahan sebagai sebahagian daripada medan extra pada LFH, walaupun disebabkan oleh had saiz medan, terdapat saiz maksimum untuk pertumbuhan kuadratik.[6]

Langkah Pencegahan

[sunting | sunting sumber]

Bom rekursi: Dalam banyak pengimbas anti-virus, hanya beberapa lapisan rekursi dilakukan pada arkib untuk membantu mencegah serangan yang boleh menyebabkan limpahan penimbal, keadaan kehabisan ingatan, atau melebihi julat masa pelaksanaan program yang munasabah. Bom zip sering bergantung pada pengulangan fail yang identikal untuk mencapai nisbah mampatan yang ekstrem. Kaedah pengaturcaraan dinamik boleh digunakan untuk menghadkan penerokaan fail sedemikian, supaya hanya satu fail diikuti secara rekursif pada setiap lapisan, sekali gus menukar pertumbuhan eksponennya kepada linear secara berkesan.[5]

Bom pertindihan: Fail yang bertindih mudah dikesan dalam penganalisis ZIP yang diubah suai. Walau bagaimanapun, disebabkan penganalisis ZIP boleh bertindak dengan berbeza-beza, menggunakan penganalisis terpisah yang diubah suai tidak mencukupi: penganalisis yang sedia digunakan mestilah diubah suai.[6]

Langkah di atas tidak meliputi jenis fail zip berniat jahat yang lain. Seperti format fail kompleks lain yang mudah terdedah kepada pepijat penganalisis (cth. fail imej), perlindungan yang kukuh memerlukan sandbox pada penganalisis untuk menghadkan penggunaan masa, ingatan, dan ruang cakeranya.[6]

Walaupun bukan mitigasi yang boleh dipercayai sepenuhnya, sistem fail dengan mampatan lut sinar dan/atau penduaan lut sinar cenderung kurang terjejas akibat bom zip kerana operasi ini mengurangkan keperluan ruang data yang dinyahmampatkan. Sebagai contoh, zfs dengan mampatan LZ4 dan tanpa penduaan menyahmampat bom pertindihan 42 KB kepada 165 MB.[6]

Lihat juga

[sunting | sunting sumber]
  1. Leyden, John. "DoS risk from Zip of death attacks on AV software?". www.theregister.co.uk. Diarkibkan daripada yang asal pada 2020-03-02. Dicapai pada 2017-08-10.
  2. Pelton, Joseph N (28 August 2018). Smart cities of today and tomorrow : better technology, infrastructure and security. Springer. ISBN 978-3-319-95822-4. OCLC 1097121557.
  3. Bieringer, Peter (2004-02-12). "AERAsec - Network Security - Eigene Advisories". Diarkibkan daripada yang asal pada 2016-03-03. Dicapai pada 2011-02-19.
  4. Smith, Ernie (2019-07-10). "The Most Clever 'Zip Bomb' Ever Made Explodes a 46MB File to 4.5 Petabytes". VICE (dalam bahasa Inggeris). Diarkibkan daripada yang asal pada 2024-09-11. Dicapai pada 2024-09-11.
  5. 1 2 Svoboda, David (8 April 2011). "IDS04-J. Safely extract files from ZipInputStream". SEI CERT Oracle Coding Standard for Java. Carnegie Mellon University. Dicapai pada 11 September 2024.
  6. 1 2 3 4 5 6 7 Fifield, David (2019). "A better zip bomb". www.bamsoftware.com.
  7. Cox, Russ (March 18, 2010). "research!rsc: Zip Files All The Way Down". research.swtch.com.

Templat:Information security