Cron job WordPress bất thường có thể là dấu hiệu cần điều tra khi website bị compromise, nhưng scheduled task tự nó không phải malware. WordPress core, plugin và theme có thể đăng ký cron hợp lệ. Việc kiểm tra nên tập trung vào nguồn tạo event, callback, lịch chạy và hành vi liên quan thay vì xóa toàn bộ cron.
WP-Cron khác system cron thế nào?
| Cơ chế | Nơi quản lý | Dấu hiệu cần biết |
|---|---|---|
| WP-Cron | WordPress event queue | Hook, next_run, recurrence, callback/component |
| System cron | OS/hosting control panel | Command hoặc URL được scheduler hệ thống gọi |
Không nên coi hai lớp là một. Một website có thể dùng system cron để kích hoạt WP-Cron, hoặc có scheduled task ngoài WordPress hoàn toàn.
Bắt đầu bằng inventory scheduled events

Với WP-CLI, có thể dùng lệnh chỉ đọc:
wp cron event list
Output thường cho biết hook, thời điểm chạy tiếp theo và recurrence. Tài liệu chính thức: WP-CLI — wp cron event list.
Output mẫu cần đọc như thế nào?
| Hook | Next run | Recurrence | Owner | State |
|---|---|---|---|---|
| plugin_cleanup_event | 2026-09-06 15:00 | hourly | Plugin A | APPROVED |
| unknown_sync_task | 2026-09-06 15:07 | 5 minutes | Không xác định | INVESTIGATE |
Đây là cấu trúc minh họa, không phải IOC thực tế. Event không có owner rõ ràng cần được ưu tiên điều tra, nhưng chưa đủ để kết luận độc hại.
Checklist xác minh owner và callback
- Đối chiếu hook với plugin/theme/custom code đang triển khai.
- Tìm nơi đăng ký event và callback tương ứng.
- So sánh thời điểm event xuất hiện với deploy/update hợp lệ.
- Kiểm tra callback thực hiện gì: cleanup, email, backup, sync hay ghi file/data ngoài dự kiến.
- Đối chiếu với timeline incident và persistence.
Khi nào cron đáng nghi hơn?
Mức độ nghi ngờ tăng khi event gọi thành phần không rõ nguồn gốc, tái tạo file hoặc nội dung trái phép, hoặc quay lại sau remediation mà không có deployment hợp lệ giải thích. Đây có thể là một phần của persistence trong WordPress malware.
Safe-removal gate: chưa đủ điều kiện thì không xóa
- Chưa xác định owner/callback.
- Không có snapshot hoặc rollback phù hợp.
- Event có thể thuộc backup, cache, email hoặc job nghiệp vụ quan trọng.
- Không biết event được tạo bởi WordPress hay system cron.
- Chưa xử lý code/process tạo lại event.
Xóa một scheduled event mà không xử lý nguồn đăng ký chỉ có thể làm nó xuất hiện lại và đồng thời làm mất evidence.
Nếu cron liên quan file PHP lạ
Ghi nhận đường dẫn, timestamp và hash của file rồi đối chiếu baseline. Workflow tìm file PHP mới tạo hoặc vừa chỉnh sửa giúp mở rộng điều tra mà không dựa vào một filename cố định.
Nếu malware tái xuất hiện sau cleanup
Đừng mặc định cron là nguyên nhân. Đối chiếu event với timeline và kiểm tra thêm backdoor, tài khoản, plugin/MU-plugin và entry point. Xem cách tìm root cause khi malware tái xuất hiện.
Evidence record nên lưu
| Field | Nội dung |
|---|---|
| Hook | Tên scheduled event |
| Schedule | Next run + recurrence |
| Callback/component | Plugin/theme/custom code liên quan |
| Owner | Người/đội chịu trách nhiệm |
| Timeline | Thời điểm xuất hiện so với incident |
| Behavior | File/data/network action liên quan |
Nguồn kỹ thuật tham khảo
Kết luận
Kiểm tra cron WordPress bất thường phải bắt đầu bằng inventory, owner, callback và timeline. Chỉ remediation khi đã phân biệt WP-Cron với system cron, có rollback và hiểu cơ chế tạo event; mục tiêu là xử lý persistence đúng chỗ mà không phá scheduled task hợp lệ.
