Ngày 17/7/2026, WordPress tung ra bản cập nhật bảo mật 7.0.2 khẩn cấp, vá hai lỗ hổng nghiêm trọng: SQL Injection trong WP_Query và Remote Code Execution (RCE) qua REST API. Mức độ nghiêm trọng đến mức đội WordPress.org bật tính năng forced auto-update cho toàn bộ site đang chạy phiên bản bị ảnh hưởng. Nếu bạn đang dùng WordPress 6.8 trở lên, bài viết này mình sẽ hướng dẫn bạn kiểm tra, cập nhật và khắc phục từ A đến Z.
Đặc biệt, khi hai lỗ hổng này kết hợp với nhau, kẻ tấn công có thể chiếm quyền kiểm soát hoàn toàn server của bạn chỉ qua một yêu cầu HTTP. Mình sẽ đi qua từng bước: kiểm tra phiên bản, cập nhật an toàn, scan dấu hiệu bị hack, và hardening sau khi cập nhật.
WordPress 7.0.2 Sua Lo Hong Mang Tim Do Nao?
Bản cập nhật 7.0.2 vá hai lỗ hổng bảo mật nghiêm trọng. Thứ nhất là SQL Injection trong tham số author__not_in của WP_Query, được báo cáo bởi nhóm TF1T, dtro và haongo. Thứ hai là REST API batch-route confusion kết hợp với SQL Injection dẫn đến Remote Code Execution, do Adam Kues từ Assetnote phát hiện. Cả hai đều cho phép kẻ tấn công tấn công từ xa mà không cần xác thực.
Lo Hong SQL Injection Trong WP_Query Nguy Hiem Ra Sao?
Lỗ hổng đầu tiên, CVE-2026-60137, nằm ở tham số author__not_in của class WP_Query. Đây là tham số dùng để loại trừ bài viết của một hoặc nhiều tác giả khỏi kết quả query. Do không sanitize đúng cách, kẻ tấn công có thể chèn thêm SQL payload thông qua REST API, cho phép đọc dữ liệu từ database, kể cả thông tin nhạy cảm như password hash của user admin.
Điều đáng lo là lỗ hổng này có thể khai thác qua WordPress REST API, một endpoint công khai mặc định trên mọi site WordPress. Không cần đăng nhập, không cần plugin thêm, chỉ cần site đang chạy WordPress 6.8 trở lên là đều bị ảnh hưởng. Mức nghiêm trọng được đánh giá là Critical.
RCE Qua REST API Batch-Route La Gi?
Lỗ hổng thứ hai, CVE-2026-63030, nguy hiểm hơn nhiều. REST API của WordPress có tính năng batch request, cho phép gửi nhiều request trong một lần gọi. Lỗ hổng batch-route confusion cho phép kẻ tấn công nhầm lẫn route, kết hợp với SQL Injection ở trên, dẫn đến Remote Code Execution (RCE) — tức là chạy mã tùy ý trên server của bạn.
Với RCE, kẻ tấn công có thể upload webshell, chèn malware, redirect traffic, steal database, hoặc thậm chí dùng server của bạn để tấn công site khác. Đây là mức độ nghiêm trọng cao nhất trong bảo mật web. Phiên bản bị ảnh hưởng là WordPress 6.9.0 đến 7.0.1. Phiên bản 6.8 chỉ bị lỗ hổng SQL Injection đầu tiên, không bị RCE.
Cac Phien Ban Nao Bi Anh Huong?
Mình tóm tắt rõ ràng từng phiên bản để bạn dễ kiểm tra. WordPress 7.0.0 và 7.0.1 bị cả hai lỗ hổng, cần cập nhật lên 7.0.2. WordPress 6.9.0 đến 6.9.4 bị cả hai lỗ hổng, cần cập nhật lên 6.9.5. WordPress 6.8.0 đến 6.8.5 chỉ bị lỗ hổng SQL Injection đầu tiên, cần cập nhật lên 6.8.6. Các phiên bản trước 6.8 không bị ảnh hưởng.
Nếu bạn đang chạy WordPress 7.0.x hoặc 6.9.x, mức độ nguy hiểm là cao nhất vì kẻ tấn công có thể RCE. Nếu đang chạy 6.8.x, nguy hiểm thấp hơn một bậc nhưng vẫn cần cập nhật ngay vì SQL Injection alone cũng đủ để leak toàn bộ database.
Buoc 1: Kiem Tra Phien Ban WordPress Hien Tai
Trước khi cập nhật, bạn cần biết site đang chạy phiên bản nào. Cách nhanh nhất là đăng nhập wp-admin, nhìn góc dưới bên trái màn hình, phiên bản WordPress hiển thị ngay đó. Hoặc chạy lệnh WP-CLI nếu bạn quản lý VPS:
# Kiem tra phien ban WordPress hien tai
sudo -u www-data wp core version --path=/var/www/example.com/public_html
# Kiem tra phien ban va trang thai cap nhat
sudo -u www-data wp core check-update --path=/var/www/example.com/public_htmlNếu kết quả trả về 7.0.2, site đã an toàn. Nếu trả về bất kỳ phiên bản nào trong danh sách bị ảnh hưởng ở trên, bạn cần cập nhật ngay lập tức.
Buoc 2: Backup Toan Bo Site Truoc Khi Cap Nhat
Dù WordPress cập nhật bảo mật thường rất ổn định, bạn vẫn phải backup trước. Đặc biệt với bản security release có thay đổi core, plugin cũ có thể conflict. Mình khuyên dùng WP-CLI để backup nhanh:
# Backup database
sudo -u www-data wp db export /backup/wp-backup-$(date +%Y%m%d).sql \
--path=/var/www/example.com/public_html
# Backup toan bo thu muc WordPress
tar -czf /backup/site-backup-$(date +%Y%m%d).tar.gz \
-C /var/www/example.com/public_html .
# Hoac dung plugin UpdraftPlus neu ban khong co SSH
# WP-CLI: backup bang UpdraftPlus
sudo -u www-data wp updraftplus backup \
--path=/var/www/example.com/public_htmlĐảm bảo file backup phải lưu ở server khác hoặc download về máy. Backup trên cùng server không có ý nghĩa nếu server bị compromized.
Buoc 3: Cap Nhat WordPress Len 7.0.2
Có ba cách cập nhật: qua wp-admin, qua WP-CLI, hoặc manual. Mình khuyên dùng WP-CLI vì nhanh và kiểm soát được từng bước:
# Cach 1: Cap nhat qua WP-CLI (khuyen nghi)
sudo -u www-data wp core update --path=/var/www/example.com/public_html
# Kiem tra lai phien ban sau cap nhat
sudo -u www-data wp core version --path=/var/www/example.com/public_html
# Cap nhat database neu can
sudo -u www-data wp core update-db --path=/var/www/example.com/public_htmlNếu bạn không có SSH, đăng nhập wp-admin, vào Dashboard > Updates, click “Update Now”. Quá trình chạy khoảng 30 giây đến 2 phút tùy tốc độ server.
Trường hợp site không tự update được (file permission, managed hosting lock), tải file wordpress-7.0.2.zip từ wordpress.org, giải nén, ghi đè thư mục wp-includes/ và wp-admin/, rồi vào wp-admin để chạy database update.
Buoc 4: Cap Nhat Ca Phiên Ban Cu Hon 6.8 Va 6.9
Nếu bạn đang chạy WordPress 6.8.x hoặc 6.9.x và chưa sẵn sàng nâng cấp lên 7.0, đội WordPress đã phát hành bản patch cho cả hai nhánh cũ. Cập nhật bằng WP-CLI:
# Neu dang chay 6.9.x - cap nhat len 6.9.5
sudo -u www-data wp core update --version=6.9.5 \
--path=/var/www/example.com/public_html
# Neu dang chay 6.8.x - cap nhat len 6.8.6
sudo -u www-data wp core update --version=6.8.6 \
--path=/var/www/example.com/public_htmlNhững bản patch này chỉ chứa fix bảo mật, không thay đổi feature nào. Plugin và theme sẽ compatible 100%, không cần test lại.
Buoc 5: Kiem Tra Site Da Bi Hack Chua
Vì lỗ hổng đã tồn tại từ WordPress 6.8 (tháng 3/2025), kẻ tấn công có thể đã khai thác trước khi bạn cập nhật. Mình khuyên kiểm tra ít nhất 5 dấu hiệu sau:
Kiểm tra file bất thường trong wp-content/uploads: Webshell thường được upload vào thư mục uploads vì ghi được trực tiếp. Chạy lệnh tìm file PHP trong thư mục không nên có PHP:
# Tim file PHP trong wp-content/uploads (khong nen co)
find /var/www/example.com/public_html/wp-content/uploads \
-name "*.php" -type f
# Tim file exec tuong minh
find /var/www/example.com/public_html/wp-content \
-name "*.php" -newer /var/www/example.com/public_html/wp-load.php \
-mtime -30Kiểm tra user admin bất thường: Kẻ tấn công thường tạo admin user ẩn để duyệt quyền truy cập:
# Liem ke tat ca user co quyen admin
sudo -u www-data wp user list --role=administrator \
--fields=ID,user_login,user_email,user_registered \
--path=/var/www/example.com/public_html
# Kiem tra user moi tao gan day (30 ngay)
sudo -u www-data wp user list \
--fields=ID,user_login,user_email,user_registered \
--path=/var/www/example.com/public_html | \
grep "2026-0[6-7]"Kiểm tra plugin và theme bị modify: So sánh checksum với phiên bản chính thức:
# Kiem tra core file integrity
sudo -u www-data wp core verify-checksums \
--path=/var/www/example.com/public_htmlNếu lệnh trên báo Warning: File not found hoặc Warning: File has changed, site có thể đã bị tamper. Cần restore từ backup sạch hoặc reinstall WordPress core.
Kiểm tra access log: Tìm dấu hiệu khai thác SQL Injection qua REST API:
# Tim request REST API bat thuong trong access log
grep -E "wp-json/wp/v2/posts.*author__not_in" /var/log/nginx/access.log | \
tail -20
# Tim batch request REST API
grep "wp-json/batch" /var/log/nginx/access.log | tail -20
# Tim request co SQL payload dac trung
grep -iE "union|select|concat|sleep|benchmark" \
/var/log/nginx/access.log | tail -20Buoc 6: Hardening REST API Sau Khi Cap Nhat
Sau khi cập nhật, bạn nên hardening REST API để giảm rủi ro tương lai. Không cần tắt REST API hoàn toàn (nhiều plugin cần nó), nhưng có thể giới hạn:
// Them vao functions.php cua theme con hoac mu-plugin
// Yeu cau authentication cho REST API nhay cam
add_filter( 'rest_authentication_errors', function( $result ) {
if ( ! empty( $result ) ) {
return $result;
}
// Block REST API cho nguoi khong dang nhap tren cac endpoint nhay cam
if ( ! is_user_logged_in() &&
strpos( $_SERVER['REQUEST_URI'], '/wp-json/wp/v2/' ) !== false ) {
// Van cho phep read posts, nhung block batch
if ( strpos( $_SERVER['REQUEST_URI'], '/batch' ) !== false ) {
return new WP_Error(
'rest_forbidden',
'Batch REST API requests are restricted.',
array( 'status' => 403 )
);
}
}
return $result;
} );Ngoài ra, nếu bạn dùng Fail2Ban, có thể thêm rule để block request có SQL payload. Hoặc dùng Cloudflare WAF để filter SQL Injection pattern ở edge trước khi request đến server.
WordPress 7.0.2 Co Anh Huong Gi Den Plugin Va Theme Khong?
Không. Bản 7.0.2 là security release thuần túy, chỉ patch lỗ hổng trong core, không thay đổi API hay feature nào. Mọi plugin và theme chạy được trên 7.0.1 sẽ chạy bình thường trên 7.0.2. Bạn không cần test compatibility lại, chỉ cần cập nhật.
Đây là lý do đội WordPress bật forced auto-update cho bản này. Rủi ro bị hack cao hơn nhiều so với rủi ro cập nhật gây lỗi. Nếu sau khi cập nhật site có vấn đề, nguyên nhân thường là plugin cũ conflict với PHP version, không phải WordPress version.
Co The Bi Tan Cong Lau Truoc Khi Cap Nhat Khong?
Có, và đây là điều mình muốn nhấn mạnh. Lỗ hổng SQL Injection (CVE-2026-60137) tồn tại từ WordPress 6.8 ra mắt tháng 3/2025. Tức là hơn 15 tháng bất kỳ ai cũng có thể khai thác. Lỗ hổng RCE (CVE-2026-63030) tồn tại từ WordPress 6.9 ra mắt cuối 2025.
Nếu site của bạn đang chạy phiên bản bị ảnh hưởng, hãy cập nhật ngay rồi kiểm tra dấu hiệu bị hack theo Bước 5. Đừng cập nhật xong rồi thôi — scan kỹ, vì kẻ tấn công có thể đã planting backdoor từ lâu, cập nhật WordPress không xóa được backdoor đã có sẵn.
Tong Ket
WordPress 7.0.2 là bản security release quan trọng nhất trong năm 2026 cho đến thời điểm hiện tại. Hai lỗ hổng SQL Injection và RCE khi kết hợp cho phép kẻ tấn công chiếm toàn bộ kiểm soát server chỉ qua HTTP request mà không cần xác thực. Nếu bạn đang chạy WordPress 6.8 trở lên, hãy cập nhật ngay hôm nay.
Quy trình mình khuyên: backup toàn bộ (Bước 2), cập nhật qua WP-CLI (Bước 3), verify checksum (Bước 5), kiểm tra access log tìm dấu hiệu khai thác, rồi hardening REST API (Bước 6). Toàn bộ quá trình mất khoảng 30 phút cho một site, rẻ hơn rất nhiều so với việc bị hack và mất dữ liệu.
Nếu bạn quản lý nhiều site WordPress, dùng WP-CLI loop qua tất cả site và cập nhật hàng loạt. Không có lý do gì để trì hoãn một bản cập nhật bảo mật mức Critical.