Rà Soát WordPress Sau 6 Lỗ Hổng Tháng 8/2026: Runbook 10 Phút Kiểm Tra Bằng WP-CLI

Câu trả lời nhanh
Tháng 8/2026 có 6 lỗ hổng critical (GiveWP CVSS 10, Avada, WPMU DEV Dashboard, Pods, TranslatePress, Forminator CVSS 9.8) đều khai thác không cần đăng nhập. Rà soát bằng WP-CLI: wp plugin list đối chiếu phiên bản, wp user list tìm admin lạ, find wp-content/uploads tìm file PHP. 10 phút là xong và nên lặp lại hàng tuần.

Tháng 8/2026 vừa qua là một tháng đáng nhớ với ai đang quản lý website WordPress. Trong vòng 3 tuần, 6 lỗ hổng nghiêm trọng được công bố liên tiếp trên những plugin và theme không hề obscura gì: GiveWP, Avada, WPMU DEV Dashboard, Pods, TranslatePress và Forminator. Năm lỗi đạt điểm CVSS 9.8, riêng GiveWP đạt trọn 10.0. Tất cả đều khai thác được mà không cần đăng nhập.

Rà soát bảo mật WordPress sau 6 lỗ hổng nghiêm trọng tháng 8/2026

Ngày 1/9/2026, Wise Media đã publishes một runbook tổng kết toàn bộ sự kiện này, và điều mình tâm đắc nhất ở bài đó là một câu rất đúng: công việc của bạn hôm nay chỉ là kiểm tra 6 con số phiên bản, rà danh sách admin và soi một thư mục. Nghe đơn giản, nhưng làm đúng và làm đủ thì không phải ai cũng nắm. Trong bài này, mình sẽ hướng dẫn bạn thực hiện toàn bộ runbook đó bằng WP-CLI, nhanh gọn trong khoảng 10 phút.

6 lỗ hổng tháng 8/2026 ảnh hưởng đến website của bạn thế nào?

Six lỗi này đều ở tầng “xương sống” của một site WordPress doanh nghiệp nhỏ: page builder, form, translation, custom fields, donation. Đây không phải những plugin lạ lẫm vài trăm người dùng, mà là lớp component chạy trên hơn một triệu site. Kẻ tấn công không cần mật khẩu, không cần tài khoản staff, không cần phishing. Chúng chỉ cần địa chỉ website của bạn.

Bảng kiểm tra nhanh, bạn so version đang chạy với cột “Đã vá”:

Thành phầnPhiên bản dính lỗiĐã váCVECVSS
GiveWP<= 4.16.7.14.16.7.2CVE-2026-8222210.0
Avada + Fusion BuilderAvada <= 7.16, FB <= 3.167.16.1 / 3.16.1CVE-2026-184319.8
WPMU DEV Dashboard<= 5.0.15.0.2CVE-2026-765819.8
Pods<= 3.3.93.3.9.1CVE-2026-195989.8
TranslatePress<= 3.3.13.3.2CVE-2026-196329.8
Forminator Forms<= 1.56.11.56.2CVE-2026-157489.8

Mình đã phân tích chi tiết từng lỗi trong các bài riêng, bạn có thể đọc thêm: GiveWP RCE CVSS 10, Avada CVE-2026-18431, WPMU DEV Dashboard, Pods privilege escalation, TranslatePress account takeoverForminator file upload.

Làm sao kiểm tra 6 phiên bản plugin chỉ bằng một lệnh WP-CLI?

Bạn SSH vào server, trỏ đến thư mục WordPress và chạy lệnh wp plugin list. Lệnh này liệt kê toàn bộ plugin kèm tên, trạng thái và số phiên bản, thay vì phải mở Dashboard bấm từng trang. Toàn bộ bước kiểm tra mất dưới 30 giây cho dù site có 50 plugin. Đây là lý do mình luôn khuyên khách hàng quản lý nhiều site nên quen thuộc WP-CLI ngay từ bây giờ.

Lệnh cụ thể như sau:

cd /var/www/site-cua-ban/public_html
wp plugin list --fields=name,version,status --allow-root

Với theme Avada, bạn dùng lệnh riêng:

wp theme list --fields=name,version,status --allow-root

Nhìn kết quả, đối chiếu với bảng ở trên. Phát hiện version nhỏ hơn hoặc bằng cột “dính lỗi” là phải update ngay. Một lưu ý nhỏ mình thấy nhiều bạn sai: bản vá Pods là 3.3.9.1, chỉ hơn đúng một điểm so với 3.3.9. Nếu bạn thấy 3.3.9 trong danh sách và nghĩ “vẫn là 3.3.x nên chắc ổn” thì đó chính là site đang dính lỗi.

Cập nhật plugin dính lỗi bằng WP-CLI như thế nào cho an toàn?

Trước khi update bất cứ thứ gì, mình luôn tạo backup. Đây là nguyên tắc bất di bất dịch, dù patch chỉ là một bản point release. Bạn có thể dùng plugin Backup Buddy, hoặc đơn giản nhất là backup bằng lệnh tar và mysqldump. Sau đó chạy lệnh update cho từng plugin, cache được purge tự động khi xong.

# Backup nhanh trước khi update
tar -czf /root/backup-site-$(date +%F).tar.gz wp-content/ wp-config.php
mysqldump -u dbuser -p dbname | gzip > /root/backup-db-$(date +%F).sql.gz

# Update từng plugin dính lỗi
wp plugin update forminator --allow-root
wp plugin update pods --allow-root
wp plugin update translatepress --allow-root
wp plugin update wpmu-dev-dashboard --allow-root
wp plugin update give --allow-root
wp theme update Avada --allow-root

Nhưng khoan. Đây mới là cái bẫy lớn nhất của cả đợt này mà Wise Media chỉ ra rất chuẩn: Avada và Fusion Builder là sản phẩm thương mại. Nếu license chưa từng được đăng ký trên site, hoặc đăng ký dưới tên nhân viên đã nghỉ việc, thì nút update không hoạt động và không bên hosting nào đẩy patch giúp bạn được. Kiểm tra license bằng lệnh:

wp option get avada_registration --allow-root

Nếu kết quả rỗng hoặc expired, bạn phải đăng ký lại license trong Appearance > Avada > Registration trước, rồi mới update được. Tương tự WPMU DEV Dashboard chỉ thật sự nguy hiểm với site đã bật Hub Single Sign-On, nhưng mình vẫn khuyên update tất cả, vì advisory có thể được sửa lại sau.

Tại sao kiểm tra version xong vẫn chưa xong việc?

Vì TranslatePress và Pods đều dẫn đến admin takeover chứ không phải chỉ upload file. Kẻ tấn công đã có thể tạo tài khoản administrator từ trước khi bạn vá. Kiểm tra version chỉ chặn cửa sau này, không xóa được tên admin lạ đã ở trong database. Bắt buộc phải rà danh sách user, đặc biệt là những account có role administrator mà bạn không tạo.

wp user list --fields=ID,user_login,user_email,registered_date,roles --allow-root

Ngoài ra, hãy in ra danh sách session đang đăng nhập của từng admin. Nếu thấy một session từ IP lạ hoặc từ quốc gia không liên quan, thu hồi ngay:

# Xem session của một user
wp user session list admin --allow-root

# Thu hồi toàn bộ session của user đó
wp user session destroy admin --allow-root

Bước cuối cùng của runbook là soi một thư mục: kiểm tra wp-content/uploads xem có file PHP nào bị đặt lén hay không, dấu vết phổ biến của RCE. Lệnh find dưới đây liệt kê mọi file .php nằm trong uploads, nơi về nguyên tắc không bao giờ nên có file PHP:

find wp-content/uploads -name "*.php" -mtime -45

Kết quả rỗng là tốt. Nếu có file, đừng xóa vội, hãy copy ra ngoài, đọc nội dung, rồi mới quyết định. File có thể là của theme cũ và vô hại, nhưng cũng có thể là webshell.

Khi nào bạn cần rà soát dấu vết tấn công sâu hơn?

Nếu audit phát hiện bất thường, một trong ba dấu hiệu: version dính lỗi chạy quá lâu, account admin lạ, hoặc file PHP trong uploads, thì lúc đó bạn cần rà sâu. Đến mức này, mình khuyên theo đúng trình tự: snapshot toàn bộ site để làm chứng cứ, đổi mật khẩu và secret key trong wp-config.php, rồi kiểm tra cron job và scheduled task.

# Đổi security key (tạo mới tại https://api.wordpress.org/secret-key/1.1/salt/)
nano wp-config.php

# Kiểm tra cron job lạ
wp cron event list --allow-root

# Xem mã nguồn plugin có bị sửa tay không
wp checksum verify --allow-root

Lệnh wp checksum verify khá hay, nó so sánh file plugin với bản gốc trong kho wordpress.org và báo ngay file nào đã bị chỉnh sửa. Với plugin thương mại như Avada thì lệnh không áp dụng được, nhưng với Forminator, Pods hay TranslatePress thì rất đáng giá.

Vì sao tần suất lỗ hổng WordPress đang tăng vọt?

Một chi tiết thú vị mà bạn nên biết: ba trong số các advisory của đợt này đều ghi công phát hiện cho Argus, một AI research agent do Wordfence vận hành. Máy tìm bug giờ nhanh hơn người rất nhiều, và rõ ràng số lượng critical disclosure nhắm vào component thương mại của WordPress đang đi lên chứ không xuống. Thói quen bảo trì dựng cho bốn advisory mỗi năm sẽ không sống nổi trong thế giới bốn advisory mỗi hai tuần.

Điều đó nghĩa là bạn nên biến runbook 10 phút này thành lịch định kỳ. Mình chạy nó vào mỗi thứ Hai hàng tuần cho các site đang quản lý: một lệnh list plugin, một lệnh list user, một lệnh find uploads. Ba lệnh, chưa tới một phút kể cả khi chạy bằng script. Nếu bạn muốn chủ động hơn nữa, FlyWP mới tích hợp Patchstack cho cơ chế virtual patching, mình đã viết chi tiết trong bài FlyWP và Patchstack: Virtual Patching là gì.

Câu hỏi thường gặp

Site tôi không dùng plugin nào trong danh sách, có cần làm gì không?

Không cần hành động gấp, nhưng bạn vẫn nên chạy lệnh wp plugin list một lần để xác nhận. Nhiều agency cài plugin cũ của khách từ vài năm trước và quên mất. Tệ hơn, có những plugin bị đổi tên sau khi mua lại mà chủ site không hề hay biết. Kiểm tra mất 30 giây, rẻ hơn rất nhiều so với một cuộc cleanup sau khi bị hack.

Tôi đã update đủ version, liệu có bị hack từ trước không?

Có khả năng, đặc biệt với TranslatePress và Pods vì hai lỗi này cho phép tạo admin mới. Hãy chạy lệnh wp user list ngay cả khi đã vá. Nếu số lượng admin nhiều hơn số người bạn biết, đó là dấu hiệu rõ ràng nhất. Song song đó, chạy find wp-content/uploads để loại trừ webshell.

Hosting managed có tự vá các lỗi này giúp tôi không?

Hosting chỉ auto-update được plugin miễn phí từ kho wordpress.org. Với sản phẩm thương mại như Avada hay Fusion Builder, license gắn với tài khoản mua, hosting không thể can thiệp. Đây chính là “licence trap” mà Wise Media nhấn mạnh, và là lý do nhiều site vẫn dính lỗi dù nằm trên host xịn.

Tóm lại, toàn bộ runbook chỉ gồm ba việc: đối chiếu 6 con số phiên bản, rà danh sách administrator, và soi thư mục uploads cho file PHP lạ. Mình khuyên bạn làm ngay hôm nay, không đợi đến cuối tuần. Với mức độ nghiêm trọng của cả cụm lỗi này, khoảng thời gian giữa lúc advisory công bố và lúc bạn vá chính là cửa sổ mà kẻ tấn công đang quét hàng loạt. Và khi đã xong, hãy đặt lịch lặp lại hàng tuần, vì với tốc độ AI như Argus tìm bug thì tháng 9 chắc chắn sẽ không yên bình hơn tháng 8.

Thanh Tùng

Mình là Thanh Tùng. Bạn bè gọi mình là "bác sĩ máy tính" vì hễ máy nào có vấn đề là mình muốn mò vào xem sao. Mình viết hướng dẫn theo cách mà mình mong người khác đã viết cho mình ngày xưa — từng bước rõ ràng, không bỏ sót, và nói luôn cái gì hay bị lỗi. Ngoài giờ làm mình chơi guitar, nuôi mèo, và có một con VPS riêng dành riêng cho việc cài thử đủ thứ linh tinh.

Xem tất cả bài viết →

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *