Bảo mật website5 phút đọc

Cron độc hại trong WordPress: cách phát hiện cơ chế tái tạo mã độc

Phân biệt WP-Cron và system cron, tìm hook hoặc callback đáng ngờ và xử lý tác vụ tái tạo mã độc mà không xóa nhầm cron hợp lệ.

Kỹ sư WebAnToan lần theo tác vụ cron lặp lại và thay đổi tệp WordPress
Cron cần được nối với callback, thành phần sở hữu và timestamp của thay đổi thực tế.

Cron là cơ chế chạy công việc theo lịch. Trong WordPress có WP-Cron; hosting hoặc hệ điều hành còn có system cron. Kẻ tấn công có thể lợi dụng tác vụ nền để gọi URL, tải mã, tạo lại tệp hoặc thêm tài khoản, khiến website tái nhiễm sau mỗi lần làm sạch.

WP-Cron khác system cron thế nào?

WP-Cron là hàng đợi lịch được WordPress kiểm tra khi có lượt tải trang hoặc khi được system cron gọi. System cron do máy chủ quản lý và có thể chạy shell/PHP độc lập. Điều tra phải xem cả hai; danh sách trong plugin quản lý cron không đại diện toàn bộ máy chủ.

Liệt kê tác vụ
Tìm callback và owner
Vô hiệu hóa có kiểm soát
Cron cần được nối với callback, thành phần sở hữu và timestamp của thay đổi thực tế.

Liệt kê sự kiện WP-Cron

wp cron event list --fields=hook,next_run,recurrence --format=table

Ghi lại hook, lịch chạy và recurrence. Hook lạ chưa chắc độc hại; plugin hợp lệ thường tạo tên riêng. Cần tìm callback đăng ký hook trong code, xác định plugin sở hữu và xem nó làm gì. Một hook không còn callback có thể chỉ là dữ liệu sót sau khi plugin bị gỡ.

Dấu hiệu cần ưu tiên

  • Hook mới xuất hiện cùng thời điểm nhiễm hoặc tái tạo tệp.
  • Chu kỳ rất ngắn không phù hợp chức năng website.
  • Callback gọi URL lạ, ghi tệp, tạo user hoặc thực thi chuỗi động.
  • System cron chạy PHP trong uploads, tmp hoặc thư mục ẩn.
  • Tác vụ thuộc plugin không còn tồn tại hoặc package không rõ nguồn.

Không chạy thử tác vụ nghi vấn trên production

Lệnh `wp cron event run` sẽ thực thi callback. Chỉ dùng khi đã xác minh an toàn hoặc trong bản sao cách ly. Trước khi unschedule/delete, lưu cấu hình và bằng chứng; xóa nhầm cron thanh toán, email hoặc backup có thể gây lỗi nghiệp vụ.

Đối chiếu cron với timeline tệp

Nếu một file quay lại lúc 10:05, 10:10 và 10:15, so sánh với lịch cron năm phút. Đồng thời kiểm tra access log vì WP-Cron có thể được kích hoạt qua request. Không kết luận chỉ từ nhịp thời gian; cần tìm callback và hành vi thực tế.

Xử lý cron độc hại đúng thứ tự

  1. Chụp snapshot danh sách WP-Cron và system cron.
  2. Xác định file/plugin/callback sở hữu tác vụ.
  3. Khoanh vùng hoặc tắt website nếu tác vụ đang gây hại.
  4. Vô hiệu hóa tác vụ trong môi trường kiểm soát.
  5. Loại bỏ mã tạo cron và vá đường xâm nhập.
  6. Theo dõi xem hook hoặc file có được tạo lại không.
Đừng xóa toàn bộ cron

WordPress core và plugin hợp lệ dùng cron cho cập nhật, bài hẹn giờ, email và công việc nền. Cần xử lý có chọn lọc theo owner và bằng chứng.

Nguồn tham khảo chính thức

WordPress mô tả cơ chế trong Cron Plugin Handbook và cung cấp lệnh quản lý tại wp cron event.

Mã độc dùng lịch chạy để sống lại sau mỗi lần dọn

WP-Cron, system cron và queue của plugin đều có thể tải payload, tạo user hoặc chèn lại file. Đội ngũ xóa webshell buổi chiều nhưng sáng hôm sau thấy nó trở lại vì tác vụ nền chưa được kiểm tra.

Phân biệt job hợp lệ với persistence

Ghi hook, schedule, callback, nguồn plugin và thời điểm tạo. Job có tên vô nghĩa, callback trỏ tới file lạ, chạy dày bất thường hoặc xuất hiện ngoài lịch deploy cần ưu tiên. Nhưng không xóa mọi cron không nhận ra vì có thể làm hỏng đơn hàng, email và backup.

Điều tra cả nơi kích hoạt cron

WP-Cron có thể được gọi bởi traffic hoặc cron hệ thống; hosting cũng có scheduler riêng. Rà crontab của từng user, control panel, systemd timer và webhook ngoài. Sau khi gỡ, theo dõi outbound connection và file change để xác nhận payload không còn được tải lại.

Persistence bị loại khi job, nguồn tạo job và credential cho phép tạo lại đều đã được xử lý.

Cron hợp lệ cũng có thể bị lợi dụng

Attacker có thể sửa callback của job sẵn có hoặc payload mà job tải về, vì vậy tên hook quen thuộc chưa đủ an toàn. Kiểm tra code thực thi, argument, outbound destination và lịch sử thay đổi.

Giám sát sau khi gỡ

Theo dõi ít nhất qua nhiều chu kỳ dài nhất của scheduler. Một job chạy mỗi ngày hoặc mỗi tuần sẽ không lộ trong vài giờ kiểm thử. Ghi lại lần chạy dự kiến và xác nhận không có file/user mới xuất hiện.

Cụm điều tra mã độc WordPress

Đi từ dấu vết kỹ thuật đến kết luận có thể kiểm chứng.

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

Hook cron lạ có chắc là mã độc không?

Không. Plugin hợp lệ tạo hook riêng; cần tìm callback và plugin sở hữu.

Có nên chạy thử cron nghi vấn?

Không trên production. Chỉ chạy trong môi trường cách ly sau khi hiểu callback.

Xóa toàn bộ WP-Cron có an toàn không?

Không. Core và plugin dùng cron cho nhiều tác vụ quan trọng; cần xử lý chọn lọc.

Cần điều tra website theo dữ liệu thực tế?

WebAnToan có thể rà log, file, database, cron và tài khoản để xác định phạm vi cùng thứ tự xử lý.

Gửi tình trạng website →

Website đang có dấu hiệu tương tự?

Ưu tiên xác minh trước khi sửa

Gửi URL, thời điểm và triệu chứng đang thấy. WebAnToan sẽ giúp phân loại phạm vi trước khi làm thay đổi bằng chứng.

← Tất cả bài viết

Tiếp tục theo chủ đề

Bài viết liên quan

Hỗ trợ kỹ thuật website

Gửi tình trạng website cần hỗ trợ

Gửi 3 thông tin dưới đây để kỹ thuật viên kiểm tra sơ bộ và liên hệ lại.

Chỉ cần gửi tên miền và lỗi đang thấy. Không nhập mật khẩu hay mã OTP.