Vào ngày 17 tháng 7 năm 2026, đội ngũ phát triển cốt lõi của WordPress đã phát hành bản vá bảo mật WordPress 7.0.2. Bản cập nhật này là một phản ứng khẩn cấp nhằm giải quyết đồng thời hai lỗ hổng nghiêm trọng: một vấn đề SQL Injection và một lỗi Route Confusion của REST API, vốn đều có khả năng bị khai thác khi không cần đăng nhập.
Theo báo cáo chi tiết từ Patchstack cùng chuyên gia bảo mật Adam Kues (Assetnote / Searchlight Cyber), lỗ hổng đã được coi là mối đe dọa cấp cao nhất vì tính chất unauthenticated và khả năng bị khai thác hàng loạt.
Chuỗi Tấn Công Hai Giai Đoạn
Điều khiến sự cố 7.0.2 trở nên cực kỳ nguy hiểm không phải là một lỗi đơn lẻ, mà là một chuỗi tấn công hai giai đoạn (two-stage chain). Kẻ tấn công sử dụng lỗ hổng thứ nhất để khai thác lỗ hổng thứ hai, dẫn đến việc tiêm nhiễm SQL và thậm chí leo thang thành Remote Code Execution (RCE).
Hai mối đe dọa được ghi nhận:
- SQL Injection trong WP_Query — Mức độ Cao (High), ảnh hưởng từ phiên bản 6.8 đến 7.0.1.
- Lỗi định tuyến/xử lý batch REST API — Mức độ Chí mạng (Critical), ảnh hưởng từ phiên bản 6.9 đến 7.0.1.
Chi Tiết Lỗ Hổng #1: SQL Injection Tiềm Ẩn Trong WP_Query
Vấn đề đầu tiên nằm ở cách hàm WP_Query xây dựng câu truy vấn SQL cho tham số author__not_in. Trước bản vá, giá trị của tham số này chỉ được làm sạch (sanitized) khi nó đến dưới dạng mảng (array). Nếu dữ liệu truyền vào là một chuỗi (string), quy trình làm sạch bị bỏ qua. Giá trị thô sau đó được nối trực tiếp vào mệnh đề WHERE của câu lệnh SQL mà không có bất kỳ chuyển đổi kiểu dữ liệu hoặc tham số hóa nào.
Đây là lỗ hổng “có điều kiện” vì trong tình trạng bình thường, tham số này không phải do người dùng kiểm soát trực tiếp. Tuy nhiên, chính lỗ hổng thứ hai đã tạo ra kẽ hở để kích hoạt nó.
Chi Tiết Lỗ Hổng #2: REST API Batch Route/Handler Confusion
Đây là vấn đề cốt lõi và nguy hiểm nhất. Nó xảy ra tại endpoint batch của REST API (WP_REST_Server::server_batch_request_v1()), cho phép client gói nhiều yêu cầu con trong một lời gọi duy nhất.
Lỗi nằm ở cơ chế xử lý: khi hệ thống gặp lỗi trong quá trình xử lý sub-requests, nó không giữ nguyên sự căn chỉnh chỉ số mảng ban đầu. Kẻ tấn công lợi dụng hiện tượng “index desynchronization” này — bằng cách nhồi nhét các yêu cầu con bị lỗi, chúng đánh lừa hệ thống khiến việc xác thực (validation) và thực thi (execution) không còn gắn bó với cùng một handler. Kết quả: dữ liệu chưa được kiểm tra từ một route khác được đưa vào lõi truy vấn của WP_Query, kích hoạt chuỗi tấn công SQL Injection mà không cần bất kỳ xác thực nào.
Giải Pháp Và Khuyến Nghị
Đội ngũ WordPress đã cập nhật:
- WordPress 7.0.2 — Bản vá toàn diện giải quyết cả hai vấn đề.
- WordPress 6.9.5 — Backport cả hai bản sửa lỗi vào nhánh ổn định.
- WordPress 6.8.6 — Khắc phục lỗ hổng SQL Injection (không bị ảnh hưởng bởi Route Confusion).
Tóm lại, đây là chuỗi tấn công tinh vi kết hợp lỗi xử lý kiểu dữ liệu (type-confused) ở lớp truy vấn và lỗi unbinding validation từ execution ở lớp REST API, tất cả đều có thể khai thác từ xa mà không cần đăng nhập. Patchstack đã ghi nhận các dấu hiệu khai thác trong thực tế.
Lời khuyên bảo mật: Nếu website của bạn đang chạy phiên bản cũ hơn 7.0.2, hoặc chưa nâng cấp lên 6.9.5 / 6.8.6, nguy cơ bị tấn công là rất cao. Hãy cập nhật ngay lập tức.
Nguồn: Patchstack, Adam Kues (Assetnote / Searchlight Cyber).