Lỗ hổng CVE FreePBX cực kỳ nguy hiểm

Lỗ hổng CVE FreePBX cực kỳ nguy hiểm

Lỗ hổng CVE trong FreePBX đang bị khai thác trong một chiến dịch nhắm vào các hệ thống VoIP lộ diện trên Internet, triển khai webshell PHP mới có tên JOMANGY để duy trì truy cập trái phép. Chiến dịch này khai thác các điểm yếu để thực hiện tấn công mạng quy mô lớn và chuyển hướng cuộc gọi qua hạ tầng của nạn nhân theo mô hình toll fraud.

Lỗ hổng CVE và bề mặt tấn công của FreePBX

FreePBX là giao diện mã nguồn mở dùng để quản trị hệ thống điện thoại dựa trên Asterisk. Trong các môi trường này, SIP trunk có thể tạo cuộc gọi ra ngoài với cước phí thật, nên khi bị xâm nhập, kẻ tấn công có thể khai thác trực tiếp tài nguyên thoại của hệ thống.

Có hai lỗ hổng CVE được xem là điểm vào nhiều khả năng nhất trong chiến dịch hiện tại:

  • CVE-2025-64328: Lỗi command injection sau xác thực trong module filestore của FreePBX.
  • CVE-2025-57819: Lỗi SQL injection trước xác thực trong module FreePBX Endpoint.

Hai lỗ hổng này đã được vá trong các bản phát hành FreePBX hiện tại. Tuy nhiên, việc cập nhật bản vá trên một máy đã bị nhiễm không tự loại bỏ các cơ chế bám trụ còn sót lại.

Xem thêm thông tin tham chiếu tại NVD.

JOMANGY và cơ chế duy trì truy cập

JOMANGY là một PHP webshell mới được phát hiện, chưa có tài liệu công khai trước phân tích này. Điểm đáng chú ý là nó sử dụng sáu lớp persistence tách biệt để tự phục hồi khi một hoặc nhiều thành phần bị xóa.

Các lớp này không hoạt động như bản sao dự phòng đơn giản. Mỗi kênh có thể tái tạo các kênh còn lại, khiến hệ thống nhiễm có khả năng “tự chữa lành”. Nếu chỉ loại bỏ một phần, kẻ tấn công vẫn có thể khôi phục toàn bộ chuỗi xâm nhập trong vài phút.

Chuỗi persistence gồm những gì

  • Kênh 1: Cron job định kỳ mỗi 1 đến 3 phút, liên tục tải lại và thực thi dropper.
  • Kênh 2: Chèn mã vào file profile shell để kích hoạt payload khi đăng nhập root hoặc khởi động lại hệ thống.
  • Kênh 3: Lưu 8 bản crontab bất biến trong thư mục ẩn, được bảo vệ bởi thuộc tính file ngăn xóa kể cả với root.
  • Kênh 4: Cơ chế watchdog theo dõi tiến trình, tự tải lại dropper nếu tiến trình beacon biến mất.
  • Kênh 5: Thả bản sao webshell vào hơn 12 đường dẫn trong cây web FreePBX, một request hợp lệ tới bất kỳ bản sao nào cũng có thể phục hồi toàn bộ stack.
  • Kênh 6: PHP executor trong module high-availability, cho phép thực thi lệnh đặc quyền độc lập với các kênh khác.

Ảnh hưởng hệ thống và mô hình lạm dụng

Chiến dịch nhắm vào các hệ thống VoIP có thể truy cập trực tiếp từ Internet. Mục tiêu là chiếm quyền điều khiển hệ thống để định tuyến cuộc gọi qua các số premium-rate do kẻ tấn công kiểm soát, sau đó chuyển chi phí cho nhà mạng của nạn nhân.

So với các chiến dịch mã độc tống tiền hay đánh cắp dữ liệu, mô hình này tập trung vào rủi ro an toàn thông tin từ gian lận cước gọi. Điều này làm cho tác động tài chính có thể kéo dài ngay cả khi hệ thống không bị mã hóa hay rò rỉ dữ liệu.

FreePBX bị tấn công theo cách này thường vẫn giữ nguyên các thành phần phục hồi trong cron, shell profile, web tree và module HA. Vì vậy, chỉ vá lỗi mà không làm sạch toàn bộ máy chủ có thể không đủ để loại bỏ xâm nhập.

Lớp tài khoản và dấu hiệu bám trụ

Nhóm phân tích ghi nhận tổng cộng 18 tài khoản backdoor được tạo ra trong ba tầng khác nhau. Trong đó:

  • 9 tài khoản có quyền tương đương root.
  • 8 tài khoản hoạt động ở mức service account.
  • 1 tài khoản được chèn vào cơ sở dữ liệu giao diện web FreePBX qua MySQL.

Các tên tài khoản như asterisk, freepbxuserspamfilter được chọn để hòa vào danh sách hợp lệ mà quản trị viên thường mong đợi.

IOC và đặc điểm nhận diện

Các IOC dưới đây được trích xuất từ nội dung phân tích. IP và domain được defang để tránh truy cập ngoài ý muốn.

  • Webshell: JOMANGY
  • Dropper: k.php
  • Web component: wr.php
  • Cơ chế bám trụ: Cron job, shell profile injection, immutable crontab copies, process watchdog, web tree copies, HA module PHP executor
  • Tài khoản đáng chú ý: asterisk, freepbxuser, spamfilter

IOC mạng cụ thể không được liệt kê trong nguồn gốc, nhưng chiến dịch được mô tả là có danh sách mục tiêu hơn 3.000 địa chỉ IP và khai thác tự động quy mô lớn.

Khả năng phát hiện và mức độ che giấu

JOMANGY sử dụng obfuscation hai lớp bằng Base64ROT13 để giảm khả năng bị phát hiện bởi công cụ quét tự động. Tại thời điểm nghiên cứu, dropper chính chỉ có 4 phát hiện trên 76 công cụ antivirus, trong khi k.phpwr.php chưa có phát hiện.

Với đặc điểm này, phát hiện xâm nhập chỉ dựa vào chữ ký tĩnh là không đủ. Cần kiểm tra toàn bộ cơ chế persistence, các file shell profile, thư mục ẩn chứa crontab và các bản sao webshell trong cây web FreePBX.

Quy mô chiến dịch và thời gian tồn tại

Shadowserver đã theo dõi hơn 900 host FreePBX bị xâm nhập trong đợt hoạt động tháng 1/2026. Đến tháng 5/2026, hơn 700 hệ thống vẫn còn nhiễm dù đã qua nhiều tháng công bố rộng rãi.

Con số này cho thấy việc xóa sạch xâm nhập trên FreePBX là khó khăn, đặc biệt khi một hoặc nhiều kênh persistence còn tồn tại. Chỉ cần giữ được một kênh, webshell và dropper có thể tái thiết lập toàn bộ trạng thái nhiễm trong thời gian rất ngắn.

Quy trình xử lý khi nghi ngờ bị nhiễm

Với một hệ thống đã xác nhận bị xâm nhập, cách xử lý được mô tả là dựng lại từ nền sạch thay vì chỉ vá lỗi. Lý do là các thành phần bám trụ đã được rải trên nhiều lớp của hệ thống, bao gồm cron, shell, web tree và module đặc quyền.

Trong bối cảnh lỗ hổng CVE đã bị khai thác, việc kiểm tra cần tập trung vào những khu vực sau:

  • File profile shell của tài khoản root và các tài khoản dịch vụ.
  • Cron jobs, crontab và các bản sao ẩn có thuộc tính immutable.
  • Các file PHP lạ trong cây web FreePBX.
  • Dấu hiệu tài khoản mới tạo hoặc bị sửa quyền trong hệ thống.
  • Module high-availability và các thành phần có thể thực thi lệnh đặc quyền.

Chiến dịch này cho thấy một lỗ hổng CVE trên hệ thống VoIP có thể dẫn đến xâm nhập dai dẳng nếu cơ chế persistence không được loại bỏ hoàn toàn sau khi cập nhật bản vá.