Tái hiện kỹ thuật nghe lén TLS "hợp pháp" và lỗ hổng nghiêm trọng trong ACME

Cloud & DevOps30 tháng 5, 2026·4 phút đọc

Bài viết phân tích sự cố nghe lén dịch vụ XMPP tại Nga năm 2023 và cách kẻ tấn công có thể đã tận dụng lỗ hổng CVE-2023-38198 trong acme.sh để thực thi mã từ xa. Chúng ta sẽ cùng đi sâu vào cơ chế bypass bộ lọc lệnh shell và cách tạo ra reverse shell để chiếm quyền kiểm soát máy chủ.

Tái hiện kỹ thuật nghe lén TLS "hợp pháp" và lỗ hổng nghiêm trọng trong ACME

Transport Layer Security (TLS) là giao thức giúp tạo ra biểu tượng ổ khóa bên cạnh URL trên trình duyệt của bạn, đảm bảo kết nối được mã hóa. Về mặt kỹ thuật, TLS sử dụng các khóa công khai và khóa riêng tư để thiết lập một chuỗi tin cậy, trong đó các Certificate Authority (CA - Cơ quan cấp chứng chỉ) đóng vai trò là mối liên kết tin cậy cao nhất. Tuy nhiên, hiểu rõ cơ chế hoạt động lý thuyết không ngăn cản được việc các bên thứ ba tìm cách can thiệp vào quá trình này.

Mô tả minh họa về việc nghe lén TLSMô tả minh họa về việc nghe lén TLS

Gần đây, cộng đồng an ninh mạng đã xôn xao về vụ việc chặn lưu lượng mã hóa nhắm vào dịch vụ nhắn tin XMPP (Jabber) lớn nhất của Nga (jabber.ru) trên nền tảng Hetzner và Linode vào năm 2023. Đáng chú ý, vụ việc này bị phát lộ không phải do kỹ thuật giám sát tinh vi, mà đơn giản là vì kẻ tấn công "quên" gia hạn chứng chỉ TLS, dẫn đến việc người dùng nhận được cảnh báo trình duyệt lớn.

Phân tích kỹ thuật và lỗ hổng trong acme.sh

Để tái hiện lại cách thức cuộc tấn công có thể đã diễn ra, chúng ta cần nhìn vào công cụ quản lý chứng chỉ được sử dụng: acme.sh. Đây là một script shell giúp tự động hóa việc cấp phát và gia hạn chứng chỉ TLS thông qua giao thức ACME.

Phân tích dữ liệu từ sự cốPhân tích dữ liệu từ sự cố

Vào khoảng tháng 4 năm 2023, một lỗ hổng thực thi mã từ xa (RCE) đã được phát hiện trong acme.sh, được gán mã định danh CVE-2023-38198. Lỗ hổng này nằm ở cách client xử lý các phản hồi thách thức (challenge) từ ACME, cụ thể là trong trường Token. Kẻ tấn công có thể tiêm lệnh shell vào trường này, nhưng gặp phải một khó khăn lớn: bộ lọc của ACME không cho phép sử dụng khoảng trắng (space).

Cơ chế bypass và khai thác lỗ hổng

Trong bài phân tích gốc, tác giả đã cố gắng tái hiện phương pháp khai thác mà một CA tên là HiCA bị cáo buộc đã sử dụng. Phương pháp phổ biến là sử dụng biến IFS (Internal Field Separator) để định nghĩa lại ký tự phân cách, giúp lồng ghép các lệnh mà không cần dùng khoảng trắng. Tuy nhiên, tác giả nhận thấy phương pháp này khó hoạt động trên các hệ thống hiện đại do nhiều lớp xử lý dữ liệu của ACME.

Thay vào đó, một kỹ thuật thú vị hơn đã được sử dụng: echo|nl. Lệnh echo tạo ra một ký tự xuống dòng \n, và nl đọc lại ký tự đó. Kết quả là một khoảng trắng được tạo ra mà không cần gõ phím space trong payload. Kết hợp với mã hóa Base64 để che giấu mã độc, kẻ tấn công có thể chèn các lệnh nguy hiểm vào tên file tạm trên hệ thống.

Tạo Reverse Shell thông qua lỗ hổng ACME

Do giới hạn độ dài tên file (tối đa 255 byte) trên Linux, mã độc cần được viết cực kỳ ngọn gọn (code golfing). Tác giả đã xây dựng một đoạn mã Python ngắn, được mã hóa Base64, thực hiện kết nối ngược (reverse shell) về máy chủ của kẻ tấn công.

Bằng chứng khái niệm (POC) của cuộc tấn côngBằng chứng khái niệm (POC) của cuộc tấn công

Quy trình khai thác diễn ra như sau:

  1. Máy chủ nạn nhân chạy acme.sh để gia hạn chứng chỉ.
  2. Kẻ tấn công, kiểm soát được định tuyến mạng hoặc đóng vai trò là CA độc hại, phản hồi với một payload chứa mã độc trong trường Token.
  3. acme.sh thực thi payload này, tạo ra một kết nối shell ngược với quyền cao (thường là root).
  4. Kẻ tấn công có thể sao chép khóa riêng tư hiện có hoặc tạo ra các chứng chỉ hợp pháp để thực hiện tấn công Man-in-the-Middle (MitM) mà không để lại dấu vết lạ thường.

Bài học và Kết luận

Vụ việc jabber.ru là một minh chứng rõ ràng cho thấy rằng, dù giao thức TLS hay ACME có thiết kế an toàn đến đâu, phần mềm thực thi chúng (như acme.sh) luôn là mắt xích yếu nhất. Sự tồn tại của các lỗ hổng RCE trong các client ACME cho phép các bên có đủ nguồn lực và khả năng kiểm soát mạng (như một quốc gia hoặc một CA độc hại) có thể phá vỡ chuỗi tin cậy một cách âm thầm.

Điều đáng lo ngại là nếu kẻ tấn công không mắc sai lầm sơ đẳng như quên gia hạn chứng chỉ, những hoạt động nghe lén này có thể tiếp diễn trong nhiều năm mà không bị phát hiện. Điều này nhấn mạnh tầm quan trọng của việc cập nhật thường xuyên các công cụ quản lý hạ tầng và giám sát chặt chẽ các quy trình cấp phát chứng chỉ tự động.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗