English

Tất cả lỗ hổng

wp2shell: lỗi định tuyến của REST API batch dẫn tới SQL injection, rồi tới tài khoản quản trị

Hai lỗi trong WordPress core ghép lại thành một chuỗi không cần đăng nhập và không cần plugin: một request tới /wp-json/batch/v1 có thể chạm tới SQL injection trong WP_Query, rồi tạo tài khoản quản trị. Bản vá theo từng nhánh, không phải một con số duy nhất.

Nghiêm trọng CVSS 9.8 CVE-2026-63030 · Trung bình CVSS 5.9 CVE-2026-60137

Chuyện gì xảy ra

CVE-2026-63030: endpoint batch /wp-json/batch/v1 xác định sai route khi nhiều lời gọi được gộp vào một request, nên một lời gọi có thể chạy dưới danh nghĩa của route khác.

CVE-2026-60137: tham số author__not_in của WP_Query không được lọc đúng, dẫn tới SQL injection khi plugin hoặc theme đưa dữ liệu người ngoài vào tham số đó.

Ghép lại, kẻ tấn công chưa đăng nhập đi qua endpoint batch để chạm tới SQL injection, rồi tạo tài khoản quản trị — trên một bản WordPress mặc định, không cần plugin nào. Các bản trước 6.8 không nằm trong dải ảnh hưởng.

Đường vào

  • POST /wp-json/batch/v1, hoặc ?rest_route=/batch/v1 khi REST API đi qua tham số. Endpoint có sẵn trên một bản WordPress mặc định, nên không cần điều kiện nào thêm.
  • Mã 207 Multi-Status trong access log cho endpoint này nghĩa là request đã được xử lý, tức là đường lỗi đã được chạm tới — không chỉ là dò thăm.
  • Mu-plugin chặn theo tiền tố không che được đường này nếu danh sách tiền tố không có /batch/v1: endpoint vẫn trả lời và vẫn xử lý request.

Mã nào đang chạy

  • Core WordPress trên đĩa: bản vá là thay tệp core, không phải một tuỳ chọn cấu hình. Sửa một tệp trong theme không vá được lỗi này.
  • Bản sao lưu và bản staging: chúng không phục vụ request nên không phải đường vào, nhưng vẫn là mã đọc được trên cùng máy.
  • Container: với ảnh WordPress, core nằm trong volume được gắn vào; kéo ảnh mới không cập nhật volume đang giữ core.

Đang chạy, không phải đã cài

  • Tệp core mới chỉ có hiệu lực khi PHP đọc lại tệp. Opcache thường tự kiểm tra thời điểm sửa, nhưng khởi động lại FPM là cách chắc chắn.
  • Tự động cập nhật của WordPress có thể đã tắt hoặc hỏng: một site có thể nằm nguyên ở bản lỗi nhiều tuần sau khi bản vá đã phát hành. Đo phiên bản, đừng tin vào cơ chế tự cập nhật.

Bản bị ảnh hưởng và bản vá

Sản phẩmCVEBản bị ảnh hưởngBản vá
WordPressCVE-2026-630307.0.x7.0.2
6.9.x6.9.5
WordPressCVE-2026-601377.0.x7.0.2
6.9.x6.9.5
6.8.x6.8.6

Tóm tắt giữ nguyên tiếng Anh như trong cảnh báo gốc.

Mô tả gốc (WordPress · CVE-2026-63030): WordPress 6.9.x before 6.9.5 and 7.0.x before 7.0.2 is affected by a REST API batch endpoint route confusion issue which, combined with the author__not_in WP_Query SQL Injection (CVE-2026-60137), could allow an attacker to perform SQL Injection and achieve Remote Code Execution.

Mô tả gốc (WordPress · CVE-2026-60137): WordPress 6.8.x before 6.8.6, 6.9.x before 6.9.5, and 7.0.x before 7.0.2 does not properly sanitise the author__not_in parameter of WP_Query, which could allow SQL Injection when a plugin or theme passes untrusted input to the parameter.

Cách xử lý

  • Nâng theo đúng nhánh đang chạy, không nhảy qua nhiều bản lớn trên site đang phục vụ khách.
  • Sau khi nâng: kiểm tra checksum của core, xem lại danh sách tài khoản quản trị, và tìm tệp PHP bị sửa sau ngày công bố.
  • Nếu chưa nâng được: chặn /wp-json/batch/v1 và ?rest_route=/batch/v1 ở proxy hoặc WAF, và ghi lại mọi request tới đường đó.

Tự kiểm tra

wp core version

Cho biết: bản core đang chạy

wp core verify-checksums

Cho biết: tệp core có bị sửa không

wp user list --role=administrator --fields=ID,user_login,user_registered

Cho biết: tài khoản quản trị và ngày tạo — tài khoản lạ sau ngày công bố là dấu hiệu

grep -c 'batch/v1' /var/log/apache2/access.log

Cho biết: số request tới endpoint batch; đọc mã trả về bên cạnh

wp plugin list --status=must-use

Cho biết: mu-plugin nào đang chặn đường nào

Nguồn

Viết từ cảnh báo gốc và tài liệu của nhà phát hành; phiên bản lấy từ dữ liệu của trang, cập nhật 10/11/2026. Khi có khác biệt, cảnh báo gốc là chuẩn.