Notification texts go here Contact Us Buy Now!

Cảnh báo lỗ hổng

CyberJutsu

Tải bản PDF tại đây

CẢNH BÁO LỖ HỔNG pt.1

Ngày 20 tháng 8, 2020

Mô tả

Báo cáo này tả chi tiết quá trình kết quả kiểm thử ứng dụng Zalo PC được thực hiện bởi CyberJutsu trong tháng 8, 2020.

Đối tượng

Thành viên thực hiện

bo8, s1lv3r, tmt (Writer: 5herry)

Công cụ: SWAMP, Burp Suite, DevTools, VS Code

Mục lục

1. Tổng quan...........................................................................................................................................3
2. Phạm vi...............................................................................................................................................3
3. Lỗ hổng...............................................................................................................................................3
    ZAL-01-001 UI: Tên file quá dài tràn ra khỏi khung chat(Thấp)..........................................................5
        Mô tả...................................................................................................................................................5
        Ảnh hưởng..........................................................................................................................................6
        Steps to reproduce...............................................................................................................................6
    ZAL-01-002 UI: Hiển thị file type icon không chính xác (Thấp)..........................................................6
        Mô tả...................................................................................................................................................7
       Ảnh hưởng...........................................................................................................................................7
        Steps to reproduce...............................................................................................................................7
ZAL  01-003: Blacklist file extension không chặt chẽ dẫn đến Remote Code Execution (Nghiêm trọng).......................................................................................................................................................8
        Mô tả...................................................................................................................................................8
        Ảnh hưởng........................................................................................................................................10
        Steps to reproduce.............................................................................................................................10
4. Vào vai kẻ tấn công..............................................................................................................................12
        Steps to reproduce.............................................................................................................................12
5. Đề xuất sửa lỗi..................................................................................................................................14
6. Kết luận.............................................................................................................................................15

1. Tổng quan

“Khám phá những tiện ích hỗ trợ làm việc và trò chuyện cùng người thân, bạn bè được tối ưu hoá cho máy
tính của bạn.”
-- https://chat.zalo.me/ --

Zalo PC là ứng dụng nhắn tin và gọi điện miễn phí qua mạng với các tính năng nổi bật như gửi file, ảnh, video nặng lên đến 1GB; gọi và chat nhóm; đồng bộ tin nhắn với điện thoại.
Báo cáo này liệt kê các lỗ hổng bảo mật và những vấn đề liên quan được tìm thấy trong quá trình kiểm thử ứng dụng Zalo PC trên máy tính. Quá trình kiểm thử được thực hiện dưới hình thức blackbox testing.

 

Nghiêm trọng

Cao

Trung bình

Thấp

Không

Zalo PC

1

 

 

2

 

 

1

 

 

2

 

Bảng 1 Thống kê số lượng lỗ hổng

2. Phạm vi

 

Môi trường

Phiên bản

Special privilege

Source code

Zalo PC

Windows 10

Mac OS

20.07.1b[1]

Không

Không


Bảng 2 Phạm vi kiểm thử

3. Lỗ hổng

Ứng dụng Zalo PC có tính năng gửi nhận file và người nhận có thể mở nhanh file được hiển thị trong khung chat của ứng dụng bằng cách click vào file đó. Ví dụ, khi người dùng click vào file test.txt từ ai đó gửi đến, ứng dụng NotePad sẽ mở tệp test.txt như hình bên dưới.

Hình 1 Tính năng mở file ngay khi nhấn của ứng dụng Zalo PC

Khi người dùng click, Zalo PC sẽ tự động tải file về và mở file bằng lệnh

cmd.exe /c powershell Start <tên file>

Như vậy, Zalo PC có thể tận dụng được các ứng dụng mặc định của hệ điều hành để mở file.

Hình 2 Đoạn code xử lý mở tập tin

Chúng tôi phát hiện một số lỗ hổng trên ứng dụng Zalo PC và kết hợp chúng lại với nhau nhằm tạo ra một vector tấn công hoàn chỉnh. Phần tiếp theo sẽ trình bày chi tiết các lỗ hổng được sử dụng trong chuỗi khai thác.

ZAL-01-001 UI: Tên file quá dài tràn ra khỏi khung chat (Thấp)

Mức độ nghiêm trọng 

Mô tả

Ứng dụng Zalo không giới hạn số kí tự cho tên file khi gửi/nhận.

Ảnh hưởng

Kẻ tấn công lợi dụng để giấu extension thực sự ở tên file.

Steps to reproduce

1. Gửi file có tên

“a.pdf\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00 a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u0 0a0\u00a0\u00a0\u00a0\u00a\u00a\u00a\u00a\u00a\u00a\u00a\u00a\u00a\u00a\u00a\ u00a\u00a\u00a\u00a\u00a\u00a\u00a\u00a\u00a\u00a\u00a\u00a\u00a\u00a\u00a\u0 0a\u00a\u00a\u00a\u00a\u00a0.txt”

(Kí tự Unicode “\u00a0” sẽ được browser decode và hiển thị như khoảng trắng)

2. Tên file chỉ hiển thị phần đầu là “a.pdf”, tuy nhiên phần “.txt” bị tràn và ẩn đi trên giao diện.

Hình 3 Tin nhắn được hiển thị trên ứng dụng

Tuy nhiên, phần file type icon vẫn hiển thị là TXT.

ZAL-01-002 UI: Hiển thị file type icon không chính xác (Thấp)

Mức độ nghiêm trọng

Mô tả

File type icon được hiển thị dựa trên giá trị do người gửi kiểm soát.

Ảnh hưởng

Kết hợp với lỗi trên, kẻ tấn công có thể che giấu extension thực sự của file một cách tinh vi hơn.

Steps to reproduce

1. Đặt breakpoint tại hàm

static encodeAES

(Zalo-20.7.3/resources/app.asar/pc-dist/main.15f1fad1d03636221d41.js, dòng 919).

Hình 4 Breakpoint tại hàm encodeAES

2. Thực hiện gửi file tên “b.txt”.

3. Thay đổi giá trị của biến e phần “extension”:“txt” thành “extension”:“xxx.txt”.

Hình 5 Thay đổi giá trị biến e trước khi gửi trên DevTools

4. Phía người nhận sẽ hiển thị icon mặc định thay vì icon file TXT.

Hình 6 File type icon được hiển thị trên ứng dụng

ZAL-01-003: Blacklist file extension không chặt chẽ dẫn đến Remote Code Execution (Nghiêm trọng)

Mức độ nghiêm trọng

Mô tả

Phân tích sâu vào cách Zalo PC mở file nhận được, ứng dụng thực hiện blacklist các extension

"exe", "cmd", "bat", "com", "lnk", "vbs",
"msi", "vb", "ws", "wsf", "scf", "scr", "pif"

Hình 7 Giá trị unsupportFile

Sau đó mở file bằng lệnh

cmd.exe /c powershell Start <tên file>

Hình 8 Lệnh thực thi để mở tập tin

Việc thực hiện blacklist không bao hàm hết tất cả các trường hợp dẫn đến những file có extension nguy hiểm khác như VBE, JS, JSE, ... (xem thêm tại đây[2]) có khả năng được thực thi.
Có thể xem ứng dụng mà Windows sử dụng để mở đối với từng loại file extension ở Default Apps ->
Choose default apps by file type.

Hình 9 File JS, JSE, VBE được Windows mở mặc định bằng Microsoft Windows Based Script Host

Ảnh hưởng

Tấn công được thực hiện khi kẻ tấn công gửi file cho nạn nhân thông qua tin nhắn cá nhân hoặc tin nhắn nhóm. Khi bất kì nạn nhân nào click vào file trên thì tập tin sẽ được tự động tải và thực thi ngay lập tức (xem hình 8). Trong trường hợp xấu nhất, kẻ tấn công có thể lợi dụng tính năng này để thực thi mã từ xa (Remote Code Execution) và kích hoạt mã độc để chiếm quyền kiểm soát trên máy tính nạn nhân cũng như triển khai tấn công lây lan sang bạn bè hoặc người thân nhằm mục đích trục lợi.

Steps to reproduce

1. Gửi file popup_poc.vbe[3] cho nạn nhân.
2. Nạn nhân sử dụng Zalo PC trên Windows click vào file vừa nhận được (vào khoảng trắng, không phải icon lưu 📥về máy).

Hình 10 File mà nạn nhân nhận được

3. File VBE này sẽ được tải và thực thi tự động trên máy nạn nhân

Hình 11 File VBE đã được thực thi

4. Vào vai kẻ tấn công

CyberJutsu đã thành công xâu chuỗi tất cả những lỗ hổng trên thành một vector tấn công hoàn chỉnh nhằm
gia tăng tỉ lệ khai thác (exploit) thành công, bằng cách ẩn giấu một file VBE chứa reverse shell (ZAL-01- 03) với file name đủ dài để làm tràn extension thật sự ra ngoài khung chat (ZAL-01-001) đồng thời đánh lừa ứng dụng chọn file type icon sai thông qua việc thay đổi giá trị của trường “extension” (ZAL-01- 002).

Steps to reproduce

1. Tạo ra tập tin VBE chứa payload reverse shell
2. Đặt breakpoint ở hàm encodeAES
3. Thực hiện gửi tập tin VBE
4. Khi chương trình dừng ở breakpoint, thay đổi tên tập tin thành

Voucher.pdf\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00 a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u0 0a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u 00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\ u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0
\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00 a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0_something”

để làm tràn file extension hiển thị ở người nhận.

5. Thay đổi giá trị trường “extension” thành “xxx.vbe” để thay đổi file type icon về mặc định.
6. Tiếp tục chương trình để gửi payload cho nạn nhân.
7. Ở phía nạn nhân, nhận được file như hình sau.

Hình 12 Nạn nhân nhận được file chứa mã độc

8. Khi nạn nhân click vào file, tập tin VBE sẽ được download và thực thi ngay lập tức.

Hình 13 Nạn nhân đã bị tấn công

Xem thêm tại video PoC đính kèm.[4]

5. Đề xuất sửa lỗi

ZAL-01-001:
  • Giới hạn độ dài tên file, hoặc hiển thị đầy đủ trên giao diện.
ZAL-01-002:
  • File type icon dựa vào nội dung file nhận được, không phụ thuộc vào trường extension.
ZAL-01-003:
  • Thực hiện whitelist các extension cho phép gửi, nhận và mở trên ứng dụng Zalo PC.

6. Kết luận

Với sự phát triển nhanh chóng của nhân Chromium và các Chromium Embedded Framework (CEF), việc làm ra các ứng dụng trên đa nền tảng trở nên dễ dàng hơn, tiết kiệm chi phí hơn cho nhà phát triển. Song đó, sự tiện ích trên cũng mở ra nhiều attack surface mới cho các attacker nhằm mục đích xấu.
Về phía người dùng, chỉ với một click chuột, kẻ tấn công đã có thể kiểm soát hoàn toàn máy tính của bạn. Hãy luôn cảnh giác ở mức cao nhất khi nhận tin nhắn, đường link, tập tin mà mình không chủ động yêu cầu hoặc có dấu hiệu không bình thường dù là nhỏ nhất từ bất kể là người lạ hay người bạn tin tưởng.

Cheers, CyberJutsu 
 

Tham khảo


[1] https://res-download-pc-te-vnso-zn-21.zadn.vn/hybrid/ZaloSetup-
20.7.1b.exe
[2] https://www.howtogeek.com/137270/50-file-extensions-that-are-
potentially-dangerous-on-windows/
[3] https://gist.github.com/lamminhbao/75efa6554a1b8d8321e248aebb488f40
[4] https://drive.google.com/file/d/1KtryXwlgSMD-zXs9TdXbC-GvZGfywDl-
/view?usp=sharing

Đăng nhận xét

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.