You are on page 1of 10

Zip Bomb - File dung lượng 46 MB nhưng giải nén ra

đến 4500 TB
Định dạng file nén .zip được phát minh từ 3 thập niên trước và đến nay nó cực phổ biến khi
giúp chúng ta gởi các thư mục, tập tin dễ dàng hơn cũng như tiết kiệm dung lượng dữ liệu
lưu trữ. Thế nhưng bên cạnh những mặt tích cực thì .zip cũng có thể bị lạm dụng để chế tạo
những thứ độc hại điển hình như Zip bomb - một quả bomb siêu nén thứ khi "phát nổ" sẽ
giải phóng một lượng dữ liệu khổng lồ lên đến vài Petabyte.

David Fitfield - một lập trình viên và là một kỹ sư phần mềm đã vừa tạo ra một quả bomb
như vậy. Thực tế đây là một biến thể malware có vẻ ngoài giống như một file Zip bình
thường với dung lượng chỉ vài KB nhưng khi ai đó lỡ dại giải nén thì nó sẽ nhả ra nhiều PB
dữ liệu (1 Petabyte = 1000 Terabyte).

Những loại file như thế này không hiếm nhưng kỹ thuật được Fitfield sử dụng để tạo ra Zip
bomb rất mới. Nó không phải là một kỹ thuật Zip chồng Zip chồng Zip - mình từng chơi trò
này để thử xem file có thật sự nhỏ đi nhiều không khi nén bằng cách cho nén một thư mục
chứa dữ liệu rồi lại nén tiếp file Zip vừa có, cứ thế vài lần. Thay vào đó, Fitfield đã tìm ra
cách "xếp chồng" các file con bên trong một file Zip, từ đó đạt được tỉ lệ nén cực cao so với
các file nén thông thường. Kết quả tốt nhất mà Fitfield có được là nén 4,5 PB dữ liệu thành
một file có dung lượng chỉ 46 MB.

Làm thế nào để tạo ra một file Zip bomb?


Câu chuyện của định dạng .zip bắt đầu từ năm 1988 khi Phil Katz - một lập trình viên và là
một người dùng BBS (Bulletin Board System) đã tạo ra một phần mềm nén file tương thích
với định dạng ARC - một định dạng file nén được phát triển bởi Hiệp hội cải tiến hệ thống
(SEA), trong đó anh đã phát triển một thuật toán mới giúp nén file tốt hơn so với thuật toán
nguyên gốc của ARC. Vấn đề là thuật toán của anh không tương thích với các định dạng
hiện có nhưng lại được phát hành dạng nguồn mở từ đó khiến sản phẩm mà Phil tạo ra sớm
trở thành một tiêu chuẩn công nghiệp. Định dạng đó chính là .zip.
Phil Katz (Phillip Walter Katz) mất năm 37 tuổi sau một thời gian dài nghiện rượu nhưng thứ
mà anh để lại là .zip cũng như các biến thể của nó đã chứng minh là một định dạng hoạt
động rất tốt trên nền tảng phần mềm máy chủ BBS cũng như các máy chủ FTP. Nhờ được
phát hành dưới dạng phần mềm chia sẻ, người ta dùng .zip nhiều hơn và định dạng này sau
cùng được tích hợp vào Windows lẫn Macintosh. Tuy nhiên thuật toán nén file của Zip lại
khiến tin tặc có thể khai thác nó theo nhiều cách và một trong số đó giúp tạo ra Zip bomb.
Theo đó hệ thống nén dữ liệu sẽ lấy các thông tin lặp lại trong một file nén và phá vỡ sự lặp
lại này theo cách tối thiểu nhất có thể. Theo một giải thích đơn giản trên trang makeuseof về
sự lặp lại của dữ liệu: f f f f f f f u u u u u u u u u u u u sẽ được nén thành f7u12. Đây cũng là
lý do tại sao một file Mp3 vốn đã được nén sẵn thì khi bạn nén lại sẽ không giảm được nhiều
dung lượng như khi nén các file văn bản.
Vậy ra về mặt logic thì nếu một file gồm toàn số 0, một ngàn tỉ số 0 chẳng hạn thì điều này
có nghĩa file nén được sẽ rất nhỏ trong khi file được giải nén sẽ có dung lượng khổng lồ dựa
trên nguyên tắc trên.Bản thân file nén này chẳng có giá trị gì khi giải nén ra ngoại trừ việc
làm file thử nghiệm cho các phần mềm chống virus - các phần mềm này có thể quét các file
bên trong một file nén để kiểm tra xem có ẩn mã độc hay không.

Tại một buổi thuyết trình tại hội nghị bảo mật USENIX Security Symposium năm 2015 thì Zip
bomb được cho là đã xuất hiện từ năm 1996 khi một file như vậy được tải lên mạng Fidonet
với mục đích là lừa các quản trị viên mở nó nhưng thất bại. Tính đến năm 2001 thì Zip bomb
đã trở thành một trong những mối quan tâm hàng đầu của giới bảo mật khi MIS Corp
Defense cảnh báo người dùng về một hình thức tấn công bằng file đính kèm qua email có
dung lượng chỉ 42 KB nhưng khi giải nén hoàn toàn có thể lên đến vài PB.
Không rõ ai là tác giả của 42.zip nhưng kể từ khi xuất hiện, nó đã trở thành một "huyền
thoại" của Zip bomb khi tỉ lệ nén đạt đến 106 tỉ : 1. Trong một email phỏng vấn Fitfield, anh
nói rằng dù 42.zip đã tồn tại 15 năm qua và nhận được sự quan tâm của giới bảo mật nhưng
những thử nghiệm tương tự khác sau đó lại thu hút anh về khía cạnh kỹ thuật.

Siêu nén:
Zip bomb là một công cụ tấn công rất hiệu quả bởi nó sẽ hút cạn tài nguyên hệ thống ở đây
là CPU, RAM và ổ cứng. Tuy nhiên, những file nén cũng có giới hạn tự nhiên đó là hầu hết
các chương trình giải nén Zip chỉ giải nén tối đa ở tỉ lệ 1032:1. Điều này có nghĩa Zip bomb
chỉ có thể được tạo ra theo quy tắc đệ quy chồng lặp. Một ví dụ như file 42.zip, khi dữ liệu
bên trong được nén hoàn toàn thì nó chỉ lớn hơn 42 KB một chút nhưng bên trong chứa rất
nhiều file Zip phức tạp, cụ thể là 16 file Zip con và mỗi file Zip con lại chứa 16 file Zip con
khác cứ thế xếp chồng nhưng file cuối cùng trong một file Zip là một tập tin dung lượng 4,3
GB. Nếu giải nén ra hoàn toàn thì dung lượng sẽ đến 4,5 PB.

Ngoài ra còn một các nén khác là Zip quines hay đệ quy vô hạn. Về cơ bản khi giải nén ra thì
việc giải nén sẽ được thực hiện bất tận và bạn sẽ không bao giờ có được file cuối cùng.
Fitfield nói phương thức này cho anh ý tưởng để tạo ra file Zip bomb.

Tuy nhiên điều khiến Zip bomb của Fitfield khác biệt đó là cách anh vượt qua giới hạn nén
1032:1. Anh đã dùng một thủ thuật xếp chồng các file lên nhau trong quá trình nén từ đó tạo
ra một file chỉ với 1 lớp, không đệ quy như 42.zip nhưng dung lượng rất nhỏ nếu so với file
mà nó giải nén ra. Fitfield cho biết các kết quả của anh không đạt tỉ lệ nén cao như 42.zip
bởi một file có dung lượng tương tự tức 42 KB thì giải nén ra chỉ ở 5,5 GB thay vì 4,5 PB
nhưng tỉ lệ nén mà anh đạt được cao hơn với các file cỡ lớn. Chẳng hạn như một file 281
TB nén lại chỉ còn tầm 10 MB.

Thêm vào đó nếu sử dụng phần mở rộng Zip64 của định dạng Zip thì Fitfield có thể đạt được
tỉ lệ nén một file 45 MB thành 42 KB như 42.zip không đệ quy với tỉ lệ nén là 98 triệu:1.
Fitfield nói rằng một thứ nữa giúp anh thực hiện được kỹ thuật này là khai thác cơ chế sửa
lỗi CRC tích hợp trong nhiều tiêu chuẩn máy tính như Zip, PNG.

Tất cả các file thử nghiệm của Fitfield đều được anh đăng tải tại đây, anh em có muốn thử
giải nén không : https://www.bamsoftware.com/hacks/zipbomb/
A better zip bomb
BAMSOFTWARE.COM

Liệu Zip bomb có nguy hiểm?


Công bằng mà nói thì Zip bomb giờ ít xuất hiện và nếu có bắt gặp thì những phần mềm
chống virus hiện đại sẽ có thể phát hiện ra nó. Thêm vào đó việc phát hiện Zip bomb cũng
không khó bởi quy tắc cơ bản của Zip bomb đó là file chồng file, Fitfield nói.
Tuy nhiên, các cơ chế phát hiện này lại chưa được tích hợp trên các công cụ giải nén khiến
các Zip bomb vẫn có cơ hội được thử nghiệm. Fitfield đã thử nghiệm và phát hiện ra nhiều
phần mềm như McAfee Antivirus hay LibreOffice treo khi giải nén và thậm chí không phải
phần mềm chống virus nào cũng có thể phát hiện chính xác Zip bomb. Thật thú vị khi mình
thử tải về Zip bomb 42.zip nhưng F-Secure trên máy mình không hề cảnh báo. Kiểm tra trên
trang VirusTotal thì chỉ có một vài công cụ như Kaspersky, ESET NOD32, ZoneAlarm,
AegisLab, DrWeb và một vài phần mềm của Trung Quốc là phát hiện ra, phần còn lại đều có
trạng thái Undetected.

Fitfield sẽ trình bày về những phát hiện của anh tại hội nghị USENIX Workshop on Offensive
Technologies (WOOT) vào tháng tới. Dù Zip bomb không mới nhưng với hướng tiếp cận của
Fitfield, nghiên cứu của anh sẽ mang lại lợi ích giáo dục nhận thức cao.

Anh nói: "Tôi hy vọng rằng một trong những lợi ích của nghiên cứu này là khiến các nhà phát
triển ý thức được những mối nguy hiểm về việc xử lý các định dạng nén phức tạp như Zip.
Nó cũng sẽ giúp một số đối tượng như những người kiểm mã nguồn, khách hàng và người
dùng biết được liệu một file nén có đang được xử lý bình thường hay không."

You might also like