Các lỗ hổng mới liên tục xuất hiện trên Zimbra - Phần I

Các lỗ hổng mới liên tục xuất hiện trên Zimbra - Phần I

Trong quý 2 và quý 3 năm 2022, Viettel Threat Intelligence ghi nhận các lỗ hổng có mức độ Nghiêm Trọng trên Zimbra (CVE-2022-27924, CVE-2022-30333, CVE-2022-27925 + CVE-2022-37042), sản phẩm mail server được sử dụng phổ biến tại Việt Nam. Các lỗ hổng đều được Viettel Threat Intelligence đánh giá ở mức Nghiêm Trọng và là mục tiêu của các nhóm tấn công rà quét, khai thác trong thực tế. Sau đây, Viettel Threat Intelligence sẽ đưa ra cái nhìn tổng quan và các thông tin liên quan đến các lỗ hổng này.

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

Thông tin do hệ thống Viettel Threat Intelligence của Công ty An ninh mạng Viettel cung cấp được thu thập từ các nguồn khác nhau trên Internet, không nhằm mục đích tấn công hoặc gây tổn hại cho bất kỳ tổ chức hoặc cá nhân nào.

I. Zimbra là gì?

Zimbra là một giải pháp email mã nguồn mở bao gồm đầy đủ các tính năng email, sổ địa chỉ, lịch công tác, chia sẻ tập tin, danh mục công việc, nhắn tin và hội nghị truyền hình toàn diện. Người dùng có thể truy cập hệ thống từ Zimbra Web Client trên bất kỳ thiết bị và chương trình email nào khác. Zimbra và Microsoft Exchange là 2 sản phẩm mail server được sử dụng phổ biến nhất. Theo trang web của nhà cung cấp, phần mềm này được hơn 200.000 tổ chức sử dụng trên toàn thế giới. Tại Việt Nam, Zimbra cũng được sử dụng khá phổ biến trong các doanh nghiệp.

Theo thống kê của Shodan, có hơn 72.000 máy chủ Zimbra được công khai trên toàn thế giới ở thời điểm hiện tại:

Hình 1. Số lượng địa chỉ IP sử dụng Zimbra trên thế giới (Nguồn: Shodan)

Còn tại Việt Nam, con số này lên tới gần 1.700 địa chỉ công khai:

Hình 2. Số lượng địa chỉ IP sử dụng Zimbra tại Việt Nam (Nguồn: Shodan)

Qua những số liệu trên có thể thấy được sự phổ biến của Zimbra tại Việt Nam cũng như trên toàn thế giới. Với sự phổ biến đó, Zimbra cũng là một mục tiêu ưa thích của các nhóm tin tặc và nhà nghiên cứu bảo mật.

II. Timeline chi tiết về thông tin liên quan đến các lỗ hổng

Hình 3. Timeline về các lỗ hổng (Nguồn: Threat Intelligence)

• 30/3/2022: Zimbra Collaboration 9.0.0 Patch 24 + 8.8.15 Patch 31 được phát hành, bao gồm thông tin Advisory và bản vá cho CVE-2022-27924: lỗ hổng Memcached Injection không yêu cầu xác thực và CVE-2022-27925: lỗ hổng RCE thông qua mboximport yêu cầu xác thực.

• 10/5/2022: Zimbra Collaboration 9.0.0 Patch 24.1 + 8.8.15 Patch 31.1 được phát hành, bao gồm bản vá triệt để cho lỗ hổng CVE-2022-27924.

• 14/6/2022: Zimbra Collaboration 9.0.0 Patch 25 + 8.8.15 Patch 32 được phát hành, bao gồm thông tin Advisory và bản vá cho CVE-2022-30333: Lỗ hổng Path Traversal trên UnRar cho phép thực thi mã từ xa trên Zimbra.

• 14/6/2022: Thông tin chi tiết và PoC của CVE-2022-27924 được Sonar Source công bố.

Hình 4. Thông tin chi tiết của CVE-2022-27924 được Sonar Source công bố (Nguồn: Sonar Source)

• 23/6/2022: Viettel Threat Intelligence ghi nhận lỗ hổng CVE-2022-27924 đang được rà soát và khai thác trên không gian mạng.

Hình 5. Lỗ hổng CVE-2022-27924 được khai thác và rà quét từ ngày 23/6

• 28/6/2022: Thông tin chi tiết về CVE-2022-30333 được Sonar Source công bố.

Hình 6. Thông tin chi tiết về CVE-2022-30333 được Sonar Source công bố (Nguồn: https://twitter.com/SonarSource/)

· 27/7/2022: Zimbra Collaboration 9.0.0 Patch 26 + 8.8.15 Patch 33 được phát hành, bao gồm thông tin Advisory và bản vá cho CVE-2022-37042: Lỗ hổng bỏ qua xác thực.

· 6/8/2022: Viettel Threat Intelligence ghi nhận thông tin 2 lỗ hổng CVE-2022-37042 và CVE-2022-27925 đang được rà soát và khai thác trên không gian mạng. Tại thời điểm này, thông tin chi tiết và PoC của các lỗ hổng chưa được công bố trên không gian mạng.

Hình 7. Tin tặc sử dụng PoC chưa được công bố để rà quét lỗ hổng CVE-2022-27925 từ ngày 6/8 (Nguồn: Viettel Threat Intelligence)

· 10/8/2022: Thông tin chi tiết về lỗ hổng CVE-2022-37042 được Volexity công bố, cho phép tin tặc có thể kết hợp khai thác CVE-2022-37042 và CVE-2022-27925 để thực thi mã từ xa trên hệ thống mà không cần xác thực.

Hình 8. Thông tin chi tiết về lỗ hổng CVE-2022-37042 và CVE-2022-27925 được Volexity công bố (Nguồn: https://twitter.com/Volexity/)

III. Thông tin chi tiết về các lỗ hổng

1. CVE-2022-27924 | Nguy cơ chiếm đoạt tài khoản trên các hệ thống Zimbra do lỗ hổng Memcached Injection

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

Máy chủ sử dụng Zimbra các phiên bản:

• 8.x trước 8.8.15 patch 31.1.

• 9.x trước 9.0.0 patch 24.1.

1.2. Thông tin chi tiết

Zimbra sử dụng một phiên bản đã được thay đổi của Nginx để làm Reverse Proxy. Với mỗi yêu cầu đến từ người dùng, máy chủ Reverse Proxy này thực hiện gửi yêu cầu tới Zimbra Lookup Service để tìm kiếm máy chủ backend tương ứng với người dùng đó. Đối với giao thức HTTP, một trong những cách Zimbra xác định nguồn của yêu cầu là dựa vào URL. Trong ví dụ dưới đây, người dùng exampleUser được xác định từ URL trong yêu cầu.

• https://example.com/service/home/exampleUser/file

Do việc thực hiện thêm một yêu cầu có chi phí tài nguyên cao, Zimbra sử dụng Memcached để lưu lại thông tin về những người dùng đã được yêu cầu trước đó và máy chủ backend tương ứng. Một lệnh Memcached để lưu lại các thông tin trên có dạng như sau:

Lỗ hổng tồn tại vì tên người dùng được lấy từ URL do tin tặc kiểm soát và thay thế trực tiếp vào lệnh đưa vào Memcached. Do Memcached sử dụng một giao thức đơn giản dạng text-based với mỗi lệnh được ngăn cách bởi dấu xuống dòng (\r\n), tin tặc có thể chèn các dấu xuống dòng để ngăn cách các lệnh gửi vào Memcached, từ đó thực thi một lệnh Memcached tùy ý.

Để khai thác lỗ hổng này, tin tặc có thể thêm các bản ghi key-value cho một người dùng đã biết, với máy chủ backend trỏ tới một máy chủ mà tin tặc kiểm soát. Khi những người dùng đó đăng nhập, máy chủ Reverse Proxy đầu tiên thực hiện tìm kiếm theo tên người dùng đó qua Memcached và được trả về kết quả là máy chủ của tin tặc. Từ đó, các thông tin đăng nhập của người dùng được gửi đến máy chủ độc hại này. Do giao diện web của Zimbra có phương pháp riêng để tìm kiếm máy chủ backend tương ứng, lỗ hổng này chỉ ảnh hưởng tới những người dùng sử dụng các giao thức khác HTTP như POP3, SMTP, IMAP.

Ngoài ra, do Reverse Proxy và Memcached sử dụng duy nhất một kết nối và tin tặc có thể chèn thêm các lệnh Memcached vào kết nối này, tin tặc có thể khiến các cặp yêu cầu/phản hồi trở nên mất đồng bộ, dẫn đến việc một số người dùng bất kỳ mà tin tặc chưa biết tài khoản có thể được kết nối tới máy chủ của tin tặc. Hình dưới mô tả trường hợp xảy ra khi tin tặc chèn thêm một lệnh vào yêu cầu A để có 2 phản hồi, khiến toàn bộ các phản hồi sau đó không tương xứng với yêu cầu từ nạn nhân.

Hình 9. Truy vấn và phản hồi khai thác lỗ hổng trong Memcache (Nguồn: Sonar Source)

1.3. Kịch bản tấn công

  1. Tổ chức sử dụng Zimbra làm máy chủ mail nội bộ cho nhân viên, có thể truy cập từ Internet.
  2. Tin tặc khai thác lỗ hổng nhằm chiếm đoạt một số tài khoản email của tổ chức.
  3. Một nhân viên trong tổ chức sử dụng các ứng dụng như Outlook, Gmail để đăng nhập mail của tổ chức thông qua SMTP. Các ứng dụng này sẽ tự động đăng nhập lại sau một khoảng thời gian nhất định.
  4. Khi ứng dụng đăng nhập lại, thông tin đăng nhập của người nhân viên được gửi cho máy chủ của tin tặc.
  5. Tin tặc thu được nhiều thông tin nội bộ của tổ chức thông qua nội dung email.

1.4. Dấu hiệu nhận biết

• Truy vấn tin tặc sử dụng để khai thác lỗ hổng có chuỗi "%0A|%0D" (dấu hiệu tin tặc chèn các dấu xuống dòng để ngăn cách các lệnh được gửi vào Memcached) xuất hiện trên truy vấn URI đến Zimbra server.

1.5. Biện pháp khắc phục

• Để đảm bảo an toàn thông tin cho tổ chức, VCS-TI khuyến nghị quản trị viên cập nhật hệ thống Zimbra tới phiên bản 8.8.15 patch 31.1 hoặc 9.0.0 patch 24.1.

• Trong trường hợp chưa thể cập nhật phiên bản, VCS-TI khuyến nghị quản trị viên thực hiện các biện pháp khắc phục tạm thời như sau:

o Cách 1: Chặn kết nối outbound trên mail server.

o Cách 2: Sửa cấu hình nginx của zimbra theo mẫu dưới đây  

https://github.com/Zimbra/zm-nginx-conf/compare/8.8.15.p20...8.8.15.p31

if ($request_uri ~* "%0A|%0D") {

return 403;

}

Lưu ý:

o Sau khi chỉnh sửa cấu hình, cần khởi động lại Nginx hoặc Zimbra để các thay đổi trong cấu hình có hiệu lực.

o Quản trị viên có thể chạy lệnh "systemctl reload nginx" để tải lại tệp cấu hình, không cần khởi động lại Nginx.

1.6. Thực trạng của CVE-2022-27924

Theo thông tin Viettel Threat Intelligence ghi nhận; tại thời điểm 16/6/2022, trong số 1700 địa chỉ IP sử dụng Zimbra công khai trên shodan, có tới gần 500 IP (chiếm tỉ lệ 29%) tồn tại lỗ hổng CVE-2022-27924 và có nguy cơ bị khai thác.

Hình 10. Hàng trăm hệ thống tại Việt Nam tồn tại CVE-2022-27924 (Nguồn: Viettel Threat Intelligence)

· 23/6/2022: Viettel Threat Intelligence ghi nhận thông tin lỗ hổng CVE-2022-27924 đang được rà soát, khai thác trên không gian mạng cho tới thời điểm hiện tại.

Hình 11. Lỗ hổng CVE-2022-27924 được khai thác và rà quét từ ngày 23/6 (Nguồn: Viettel Threat Intelligence)