Chiều nay (28/8/2026) Patchstack vừa công bố một lỗ hổng cực nghiêm trọng trong GiveWP, plugin quyên góp phổ biến nhất nhì của WordPress: Remote Code Execution (RCE) không cần đăng nhập, CVSS 10/10 — điểm tối đa. Nếu site bạn đang chạy GiveWP bản 4.16.7.1 trở xuống thì hãy dừng mọi việc đang làm và cập nhật lên 4.16.7.2 ngay. Mình sẽ hướng dẫn từng bước kiểm tra, vá và rà soát dấu hiệu bị tấn công từ A đến Z.
GiveWP lỗ hổng RCE CVSS 10 nghiêm trọng tới mức nào?
RCE nghĩa là kẻ tấn công có thể chạy mã lệnh tùy ý trên server của bạn mà không cần bất kỳ tài khoản nào. Với điểm CVSS 10, đây là loại lỗ hổng được đánh giá nguy hiểm nhất, và theo Patchstack, các lỗi kiểu này gần như chắc chắn sẽ bị khai thác hàng loạt trong vài ngày tới. GiveWP đang được dùng на hàng chục nghìn site từ thiện, trường học, nhà thờ — đúng nhóm thường cập nhật chậm.
Làm sao kiểm tra site có đang chạy GiveWP không?
Cách nhanh nhất là dùng WP-CLI. SSH vào server rồi chạy:
sudo -u www-data wp plugin list --path=/var/www/domain.com/public_html | grep giveNếu bạn không có SSH, mở wp-admin, vào Plugins và tìm “GiveWP — Donation Plugin”. Bản an toàn là 4.16.7.2 trở lên. Mọi bản từ 4.16.7.1 trở xuống đều bị ảnh hưởng.
Cách cập nhật GiveWP an toàn trong 5 phút?
Mình luôn khuyên cập nhật qua WP-CLI cho nhanh và thấy rõ kết quả:
# Backup database trước khi làm bất cứ điều gì
sudo -u www-data wp db export --path=/var/www/domain.com/public_html backup-give-$(date +%F).sql
# Cập nhật plugin
sudo -u www-data wp plugin update give --path=/var/www/domain.com/public_html
# Xác nhận phiên bản mới
sudo -u www-data wp plugin get give --path=/var/www/domain.com/public_html | grep versionKhông có SSH? Vào wp-admin, mục Plugins, nhấn Update Now dưới tên GiveWP. Xong thì vào một trang quyên góp bất kỳ và test thử luồng donate để chắc chắn không vỡ giao diện.
Không cập nhật được ngay thì tự bảo vệ thế nào?
Trường hợp site đang giao dịch hoặc bạn không chắc bản vá có tương thích không, có ba lớp phòng thủ tạm thời:
- Vô hiệu hóa GiveWP nếu chức năng quyên góp không phải hoạt động chính:
sudo -u www-data wp plugin deactivate give --path=/var/www/domain.com/public_html - Chặn endpoint AJAX của GiveWP ở tầng Nginx hoặc WAF — phần lớn exploit RCE đi qua
admin-ajax.phpvà REST route của plugin. - Bật virtual patching nếu nhà host có tích hợp Patchstack hoặc WAF tương đương — quy tắc chặn đã được phát hành ngay hôm nay.
Chi tiết cách virtual patching hoạt động, mình đã viết trong bài FlyWP tích hợp Patchstack: Virtual Patching là gì.
Sau khi vá cần rà soát dấu vết tấn công ra sao?
Lỗ hổng đã tồn tại trong mã nguồn cũ, nên khả năng site đã bị đụng trước khi bạn vá. Kiểm tra bốn chỗ này:
# 1. Tìm file lạ xuất hiện gần đây trong uploads
find /var/www/domain.com/public_html/wp-content/uploads -name "*.php" -mtime -30
# 2. Kiểm tra admin mới được tạo bất thường
sudo -u www-data wp user list --path=/var/www/domain.com/public_html --role=administrator
# 3. Xem plugin/theme bị cài lén
sudo -u www-data wp plugin list --path=/var/www/domain.com/public_html | wc -l
# 4. Soát cron event đáng ngờ
sudo -u www-data wp cron event list --path=/var/www/domain.com/public_htmlNếu phát hiện file PHP lạ trong uploads hoặc tài khoản admin không nhận diện được, hãy xử lý như site đã bị compromise: đổi toàn bộ mật khẩu, tạo lại SECRET_KEY trong wp-config.php và khôi phục từ backup sạch.
Góc nhìn của mình
Điểm đáng nói ở GiveWP không phải con số CVSS 10 — lỗi RCE mỗi tháng đều có — mà là đối tượng bị ảnh hưởng: site từ thiện và tổ chức phi lợi nhuận, vốn ít người quản lý kỹ thuật, ít khi bật auto-update. Kẻ tấn công biết rõ điều này. Sau hàng loạt sự cố gần đây như Elementor Pro RCE hay Forminator file upload, quy luật vẫn thế: plugin nào cài nhiều và xử lý input từ người dùng thì sớm muộn cũng thành mục tiêu. Nếu bạn quản lý nhiều site khách, hãy lập tức rà toàn bộ danh sách bằng lệnh ở trên — mất 10 phút, mà để lọt thì chi phí dọn dẹp tính bằng ngày.
