Hôm qua 27/8/2026, một lỗ hổng bảo mật mới được công bố trên plugin CheckView của WordPress, mang mã CVE-2026-18786 với điểm CVSS 8.8 (High). Lỗi này cho phép kẻ tấn công chưa đăng nhập bỏ qua kiểm tra xác thực của REST API và thực thi các hành động thuộc quyền quản trị, chỉ cần Admin của bạn lỡ click một đường link độc hại. Trong bài này, mình sẽ hướng dẫn bạn kiểm tra site có đang dùng CheckView không, vá đúng cách và rà soát dấu vết nếu site đã bị khai thác.
CVE-2026-18786 trên plugin CheckView là lỗi gì?
Đây là lỗi bypass xác thực trên REST API của plugin CheckView, công cụ kiểm thử form khá phổ biến. Plugin triển khai một filter xác thực REST nhưng không giới hạn đúng phạm vi (scope), khiến các lỗi xác thực bị “nuốt” đi. Kết quả: kẻ tấn công gửi link độc hại, khi Admin click, các REST request sẽ chạy với quyền quản trị như tạo tài khoản Admin mới. Phiên bản bị ảnh hưởng từ 2.0.29 đến trước 2.3.2, đã vá ở bản 2.3.2. Lỗi do nhà nghiên cứu Usama Arshad phát hiện và WPScan điều phối công bố.
Cách kiểm tra site có đang dùng CheckView không?
Bạn có thể kiểm tra bằng WP-CLI trong vài giây. SSH vào server rồi chạy:
sudo -u www-data wp plugin list --path=/var/www/yoursite.com/public_html | grep checkviewNếu có dòng trả về kèm phiên bản, so sánh ngay: mọi phiên bản từ 2.0.29 đến dưới 2.3.2 đều nằm trong vùng nguy hiểm. Nếu bạn không dùng SSH, mở wp-admin rồi vào Plugins và tìm “CheckView” cũng được.
Kiểm tra thêm phiên bản chính xác bằng lệnh:
sudo -u www-data wp plugin get checkview --field=version --path=/var/www/yoursite.com/public_htmlVá lỗi CheckView CVE-2026-18786 như thế nào cho đúng?
Cách duy nhất đúng đắn là nâng cấp lên bản 2.3.2 trở lên. Không có bản vá thủ tục đáng tin cậy nào ngoài việc update, vì bản chất lỗi nằm ở logic filter xác thực trong core plugin. Chạy lệnh:
sudo -u www-data wp plugin update checkview --path=/var/www/yoursite.com/public_htmlSau khi update, xác nhận lại phiên bản đã từ 2.3.2 trở lên. Nếu bạn đang chạy nhiều site, kiểm tra hàng loạt bằng script loop qua danh sách path. Trường hợp site không cần CheckView nữa, mình khuyên gỡ hẳn cho gọn:
sudo -u www-data wp plugin deactivate checkview && sudo -u www-data wp plugin uninstall checkviewLàm sao nhận biết site đã bị khai thác trước đó?
Vì tấn công đi qua REST API và thường nhằm tạo Admin lạ, bạn cần rà Users ngay. Liệt kê toàn bộ tài khoản có quyền quản trị:
sudo -u www-data wp user list --role=administrator --fields=ID,user_login,user_email,user_registered --path=/var/www/yoursite.com/public_htmlĐể ý các tài khoản đăng ký gần đây mà bạn không nhớ đã tạo. Ngoài ra nên grep access log tìm các request bất thường tới /wp-json/ chứa chuỗi liên quan đến CheckView, ví dụ:
grep -i "checkview" /var/log/nginx/access.log | grep wp-json | tail -50Xem thêm hướng dẫn rà soát log sau khi nghi bị tấn công trong bài của mình về kiểm tra bảo mật WordPress hosting bằng lệnh.
Cách phòng tránh lỗi bypass xác thực REST API sau này?
Loại lỗi này sẽ còn lặp lại ở các plugin khác, nên bạn cần lớp phòng thủ thứ hai. Mình luôn khuyến nghị ba việc: một là bật WAF (Wordfence, Cloudflare WAF hoặc Patchstack) để chặn REST request khả nghi; hai là giới hạn truy cập wp-admin và REST API theo IP nếu điều kiện cho phép; ba là tắt plugin không dùng, vì plugin nằm im trên site vẫn là mối nguy. Tham khảo thêm bài phòng thủ supply chain attack cho WordPress để có checklist đầy đủ hơn.
Cá nhân mình thấy điểm đáng chú ý nhất của CVE-2026-18786 là nó không cần shell hay SQLi gì cao siêu, chỉ cần một cú click của Admin. Nghĩa là dù server bạn hardening tốt đến đâu, một link lừa đảo vẫn đủ để mở cửa hậu. Vì vậy, vá plugin phải được làm ngay hôm nay, đừng để cuối tuần.