Chiến dịch khai thác PHP2Shell chuỗi leo thang đặc quyền chiếm quyền root 25 máy chủ, gồm cả hệ thống chính phủ Mỹ

AI & ML29 tháng 10, 2026·7 phút đọc

Các nhà nghiên cứu của Dream phát hiện một chiến dịch tấn công có dấu hiệu hỗ trợ bởi AI, kết hợp lỗ hổng PHP2Shell với lỗi leo thang đặc quyền nhân Linux Fragnesia để chiếm quyền root trên 25 máy chủ tường lửa tại Mỹ, Nhật Bản, Đài Loan và Hàn Quốc. Đáng chú ý, kẻ tấn công đã xâm nhập vào môi trường nội bộ của một tổ chức liên quan đến chính phủ Mỹ và tấn công trực tiếp vào hệ thống Active Directory.

Chiến dịch khai thác PHP2Shell chuỗi leo thang đặc quyền chiếm quyền root 25 máy chủ, gồm cả hệ thống chính phủ Mỹ

Chiến dịch PHP2Shell + Fragnesia: 25 máy chủ tường lửa bị chiếm quyền root, chính phủ Mỹ nằm trong tầm ngắm

Các nhà nghiên cứu bảo mật của Dream vừa công bố phát hiện một chiến dịch tấn công có tổ chức, kết hợp lỗ hổng PHP2Shell với lỗi leo thang đặc quyền nhân Linux Fragnesia để chiếm quyền root trên 25 máy chủ tường lửa chỉ trong thời gian ngắn. Trong đó có ba máy chủ thuộc môi trường nội bộ của một tổ chức liên quan đến chính phủ Hoa Kỳ, và kẻ tấn công đã tiến sâu vào hệ thống Active Directory.

Chuỗi khai thác gọn trong một HTTP request

Điểm đáng sợ nhất của chiến dịch này là mức độ tinh vi trong khâu phát triển lỗ hổng. Kẻ tấn công đã tự phát triển một bản khai thác PHP2Shell riêng, không sao chép từ mã công khai nào, rồi ghép nối với lỗi leo thang đặc quyền nhân Linux để leo từ tài khoản nobody lên quyền root.

Dòng thời gian chiến dịch tấn công từ ngày 8 đến ngày 24 tháng 10Dòng thời gian chiến dịch tấn công từ ngày 8 đến ngày 24 tháng 10

Cụ thể, lỗ hổng PHP2Shell (được định danh CVE-2026-109618 và CVE-2026-109619) nhắm vào cơ chế session.upload_progress của PHP trên máy chủ quản lý appweb của tường lửa, vốn chạy PHP 8.0.30 với giới hạn bộ nhớ cao. Kẻ tấn công chia làm bốn giai đoạn:

  • Giai đoạn A1 — Ép cạn bộ nhớ (~383MB): Gửi dồn dập các request POST multipart với tên file khổng lồ để đẩy bộ cấp phát bộ nhớ của PHP vào trạng thái dễ đoán.
  • Giai đoạn B1 — Rò rỉ thông tin: Lợi dụng session ID cũ để ép đọc ngoài biên, thu được địa chỉ cơ sở của libphp.so qua header Set-Cookie.
  • Giai đoạn A2 — Tạo tham chiếu treo (~500MB): Gây lỗi hết bộ nhớ lần hai, để lại con trỏ mod_data=NULL có thể bị giả mạo.
  • Giai đoạn B2 — Thực thi mã: Giả mạo một mục HashTable trỏ tới hàm zif_system của PHP, từ đó chạy lệnh tùy ý dưới quyền người dùng nobody.

Tuy nhiên, quyền nobody vẫn bị SELinux giới hạn. Để lên được root, kẻ tấn công dùng tiếp Fragnesia (CVE-2026-46300), lỗi trong hệ thống con XFRM ESP-in-TCP của nhân Linux. Lỗi này cho phép ghi vào page-cache để ghi đè file /etc/pam.d/su, thay quy tắc xác thực bằng pam_permit.so. Kết quả là chạy su root không cần mật khẩu.

Toàn bộ chuỗi — từ kết nối HTTPS không xác thực đến webshell root thường trú — hoàn tất dưới 15 phút.

Hồ sơ phiên bản: dấu hiệu của một chiến dịch được chuẩn bị kỹ lưỡng

Kẻ tấn công không dùng một payload "bắn rồi quên". Họ thu thập firmware của nhà sản xuất tường lửa, giải mã, trích xuất thư viện PHP rồi dựng 11 hồ sơ JSON tương ứng với từng phiên bản hệ điều hành tường lửa, chứa địa chỉ bộ nhớ chính xác, mã hash SHA256 của từng thư viện và tham số hình học bộ nhớ.

Các nhà nghiên cứu phân biệt rõ hai loại hồ sơ: "đã hiệu chuẩn" (đã thử nghiệm trên máy ảo thật) và "tạm thời" (chỉ tính toán từ file nhị phân, chưa kiểm chứng thực tế). Chi tiết này cho thấy một quy trình kỹ thuật bài bản, có đầu tư nghiên cứu.

Phễu tấn công: từ 19.000 mục tiêu xuống 25 máy chủ

Chiến dịch diễn ra theo một quy trình lọc rõ ràng:

  • Khám phá toàn cầu (19.000 mục tiêu): Dùng FOFA — công cụ tìm kiếm tài sản internet của Trung Quốc, tương tự Shodan — để tìm các tường lửa có giao diện quản lý phơi ra internet.
  • Dò phiên bản (khoảng 5.000 thiết bị còn hoạt động): Chạy scanner tùy biến với 200 luồng đồng thời để xác định phiên bản hệ điều hành.
  • Lọc địa lý và phiên bản (240 mục tiêu): Chỉ giữ lại thiết bị tại Mỹ, Nhật Bản, Đài Loan và Hàn Quốc, khớp với các hồ sơ phiên bản đã chuẩn bị.
  • Khai thác tự động (24 máy chủ bị chiếm): Chạy theo lô 5 mục tiêu một, giới hạn 30 phút mỗi mục tiêu, cài webshell root 103 byte để kiểm chứng rồi ghi log vào CSV.
  • Phân loại (2 máy chủ được ưu tiên): 22 máy chủ chỉ bị cài webshell rồi "để đó". Hai máy chủ còn lại thuộc một tổ chức liên quan đến chính phủ Mỹ được khai thác sâu hơn.

Từ tường lửa vành đai vào thẳng Active Directory

Sơ đồ đường tấn công: PHP2Shell và Fragnesia chiếm tường lửa, tunnel SSH vào máy chủ quản lý, giải mã tài khoản LDAP rồi tấn công Active DirectorySơ đồ đường tấn công: PHP2Shell và Fragnesia chiếm tường lửa, tunnel SSH vào máy chủ quản lý, giải mã tài khoản LDAP rồi tấn công Active Directory

Sau khi chiếm được tường lửa đầu tiên, kẻ tấn công đọc cấu hình và phát hiện thông tin nhận diện đặc thù của môi trường chính phủ: xác thực CAC (Common Access Card), tiền tố đặt tên riêng và cách đặt tên tài sản theo chuẩn chính phủ. File cấu hình còn chứa toàn bộ sơ đồ mạng nội bộ: domain controller, máy chủ quản lý tường lửa trung tâm, máy chủ SSO Keycloak, GitLab, VPN gateway và tên miền Active Directory.

Tường lửa này bị chiếm ngày 23/10 nhưng sập ngay sau đó do lưu lượng khai thác gần 900MB. Kẻ tấn công chuyển sang tường lửa thứ hai — có chứng chỉ chứng minh thuộc tổ chức mục tiêu — và chiếm thành công lúc 10:09 UTC ngày 24/10. Chỉ trong vài giờ sau đó, chúng:

  • Dựng tunnel SSH ngược 8 cổng kèm proxy SOCKS5, đóng gói trong systemd service và hook rc.local để tự phục hồi sau khi khởi động lại.
  • Dùng chính chuỗi PHP2Shell + Fragnesia tấn công máy chủ quản lý tường lửa nội bộ — nơi chỉ truy cập được qua tunnel. Đây là mục tiêu thứ 25 và là máy chủ quản lý toàn bộ tường lửa của tổ chức.
  • Giải mã mật khẩu tài khoản dịch vụ LDAP (cấu hình lưu dạng mã hóa, nhưng có root là có khóa chính), rồi nhúng mật khẩu dạng rõ vào mọi script tiếp theo.
  • Liệt kê toàn bộ người dùng và nhóm trong miền qua LDAP.
  • Spray mật khẩu vào mọi tài khoản, lợi dụng việc miền đặt lockoutThreshold=0 — không có khóa tài khoản, cho phép thử không giới hạn.
  • Thử tạo tài khoản backdoor (cả tài khoản người dùng lẫn tài khoản máy), phân tích chuỗi ACL của AD tìm đường leo thang, trích xuất khóa ký SAML từ Keycloak.

Kết quả của đợt spray mật khẩu, việc tạo tài khoản backdoor và trích xuất khóa SAML vẫn nằm trên ổ đĩa cục bộ của máy chủ quản lý, không nằm trong các mẫu vật nhóm nghiên cứu thu hồi được. Điều này đồng nghĩa chưa thể xác định mức độ thiệt hại đầy đủ.

Dấu hiệu quy kết và bài học cho Việt Nam

Nhóm nghiên cứu không quy kết chiến dịch cho một nhóm tấn công cụ thể, nhưng nhiều dấu hiệu cho thấy nguồn gốc Trung Quốc: mục tiêu độc quyền là Mỹ, Nhật, Đài Loan và Hàn Quốc; dùng FOFA; có công cụ tunnel iox; dùng LLM DeepSeek và Kimi trong nền tảng aiscan; dấu thời gian UTC+8 và prompt tiếng Trung trong log phiên làm việc.

Với các tổ chức tại Việt Nam, sự cố là lời cảnh tỉnh rất cụ thể:

  • Không bao giờ phơi giao diện quản trị ra internet. Toàn bộ chiến dịch bắt đầu từ một giao diện đáng lẽ không nên công khai. Hãy đặt sau VPN, giới hạn IP nguồn hoặc dùng access broker.
  • Vá lỗ hổng theo mức ưu tiên, không chờ đủ bộ. Ngay cả khi chưa có bản vá cho toàn bộ chuỗi, việc chặn một mắt xích cũng làm đứt đòn tấn công.
  • Bật khóa tài khoản và giám sát spray mật khẩu. Cấu hình lockoutThreshold=0 trên Active Directory là lỗ hổng cấu hình nghiêm trọng, đặc biệt với các doanh nghiệp dùng AD làm trung tâm xác thực.
  • Rà soát quyền của tài khoản dịch vụ LDAP và mã hóa khóa chính bằng HSM hoặc giải pháp tách biệt khỏi máy chủ.

Chiến dịch còn 22 tường lửa bị chiếm giữ nguyên webshell tại Mỹ, Nhật, Đài Loan và Hàn Quốc, cùng 19.000 mục tiêu đã được dò phiên bản có thể quay lại khai thác bất cứ lúc nào. Với các nhà quản trị hệ thống, thông điệp rất rõ: một giao diện quản trị lộ ra internet chính là cánh cửa dẫn thẳng vào hạ tầng định danh của cả tổ chức.

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