Malicious PDF: Get owned without Opening!


Thực thi mã độc ẩn giấu trong tài liệu PDF mà không cần mở file PDF đó lên!?

Bài viết được mình tham khảo và lược dịch từ bài:

Malicious PDF: Get owned without Opening!

của tác giả Didier Stevens (CISSP, GSSP-C, MCSD .NET, MCSE/Security, RHCT) đăng trên tạp chí (IN)SECURE số 21 (tháng 7/2009).

Các nhà nghiên cứu malware hiện rất quan tâm tới chủng mã độc mới mà họ đang phân tích. Họ cho biết có vài loại file mà mã độc ẩn chứa bên trong có thể được thực thi mà không cần phải mở file đó lên. Cho tới bây giờ, nhiều ý kiến đều nhất trí rằng các một malicious PDF là vô hại nếu người dùng không mở chúng bằng phiên bản tồn tại lỗ hổng của phần mềm đọc PDF, điển hình là Adobe Reader.

Nhưng nghiên cứu của tôi cho thấy nhận định trên chưa hẳn đúng hoàn toàn: dưới các điều kiện thích hợp, một tài liệu malicious PDF vẫn có thể khai thác thành công lỗ hổng trong Adobe Reader mà không cần mở malicious PDF đó.

JBIG2 vulnerability

Vào tháng 3/2009, hãng Adobe đã tung ra phiên bản mới của phần mềm Adobe Reader nhằm khắc phục một vài lỗi (bug), trong đó có lỗ hổng bảo mật JBIG2 nổi tiếng nghiêm trọng. Như mọi người đã biết, định dạng PDF hỗ trợ một số thuật toán nén ảnh, phổ biến là JPEG. Và JBIG2 là một thuật toán nén ảnh khác. Nhưng các bug trong thuật toán giải nén JBIG2 được triển khai trong Adobe Reader đã tạo ra lỗ hổng JBIG2Decode, dẫn đến việc mã độc trong malicious PDF có thể được thực thi. Những kẻ viết malware đã khai thác lỗ hổng này trước khi Adobe phát hành bản vá. Chúng có thể tạo các tài liệu PDF mà làm cho đoạn code giải nén JBIG2 chứa bug vô tình thực thi shellcode, kết quả là một con trojan sẽ được tải về máy nạn nhân.

Yêu cầu tác động từ người dùng

Việc có thể khai thác lỗ hổng này trong trường hợp người dùng không mở file malicious PDF diễn ra như thế nào? Câu trả lời nằm ở Windows Explorer Shell Extensions.

Khi cài đặt một chương trình như WinZip chẳng hạn, bạn có để ý rằng một mục (entry) được thêm vào menu chuột phải nhằm giúp bạn nén và giải nén file nhanh gọn hơn không? Có được điều này là do WinZip đã cài bổ sung một tiện ích đặc biệt (shell extension) dành cho Windows Explorer (trình quản lý file trong Windows).

Tương tự như vậy, khi bạn cài đặt phần mềm Adobe Reader, một shell extension tên là Column Handler cũng được cài kèm theo. Nó sẽ cung cấp cho Windows Explorer các thông tin phụ (gọi là metadata) cho loại file mà nó hỗ trợ như: tiêu đề, loại file, kích thước, tác giả, ngày khởi tạo, v.v… Sau đó, Windows Explorer sẽ hiển thị các thông tin này trên các cột hay như hình dưới đây:

Khi một file PDF được hiển thị theo kiểu Detail trong Windows Explorer, PDF column handler sẽ được gọi bởi Windows Explorer khi nó cần tới metadata. Tới lượt mình, PDF column handler sẽ đọc file PDF và trích xuất metadata như Title, Author, Size, Date Modified, v.v…

Nếu đoạn code thực hiện công việc trích xuất metadata này chứa bug thì mã độc được ẩn giấu trong tài liệu PDF có thể được thực thi một cách ngầm định. Điều này giải thích tại sao lỗ hổng bị khai thác mà không cần bạn mở file PDF lên!

Ngoài ra, còn có 3 trường hợp khác cần tới tác động của người dùng khiến lỗ hổng được kích hoạt là:

— Chỉ cần click 1 cái lên file PDF chứa mã độc. Hành động này sẽ khiến Windows Explorer ngầm định đọc file PDF và trích xuất metadata để hiện thị bên dưới status bar và/hoặc side bar.

— Chuyển sang kiểu view là Thumbnail. Hành động này sẽ khiến Windows Explorer ngầm định đọc file PDF và biểu diễn trang đầu tiên của tài liệu dưới dạng hình ảnh thu nhỏ.

— Chỉ cần đưa trỏ chuột lên file PDF. Hành động này sẽ khiến Windows Explorer ngầm định đọc file PDF và hiển thị một tooltip (khung nhỏ ngay dưới file) chứa metadata.

Không cần tới tác động của người dùng

Vẫn có những tình huống hoàn toàn không cần tới tác động của người dùng để kích hoạt lỗi JBIG2Decode. Điều này xảy ra với một process là Windows Indexing Services chạy dưới quyền của tài khoản Local System trên các máy Windows XP SP2 với Adobe Reader 9.0 được cài.

Khi một file PDF chứa mã độc nằm trên ổ đĩa, nó sẽ được đọc và tạo chỉ mục (index) bởi Windows Indexing Services và cũng làm thực thi đoạn mã khai thác lỗ hổng JBIG2Decode.

Kết luận

Khả năng tạo một file PDF chứa mã độc để lây nhiễm vào máy tính mà không cần người dùng mở file đó lên là hoàn toàn có thể. Nguy cơ này đã xảy ra với các phiên bản cũ của Adobe Reader và giờ nó đã được khắc phục.

http://www.h-online.com/security/news/item/Adobe-fixes-critical-vulnerability-in-Acrobat-and-Reader-740465.html

–manthang.

2 comments

    1. trước em cũng dịch máy móc và tốn thời gian lắm. giờ đang chuyển sang đọc hiểu, tổng hợp từ nhiều nguồn và viết lại theo cách hiểu của mình :-D.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s