Cleanup malware chỉ là một phần của recovery. Website chỉ nên được bàn giao lại cho vận hành bình thường khi restore/rebuild đã được xác minh, credential và persistence đã được xử lý, monitoring đã bật, business flow hoạt động và toàn bộ quyết định quan trọng được ghi lại cho owner tiếp quản.
NIST SP 800-61 Rev.3 yêu cầu kiểm tra integrity của backup và restoration assets trước khi dùng, xác minh restored assets trước khi đưa online, monitor hệ thống sau restore và hoàn tất incident documentation trước khi kết thúc recovery. CISA cũng yêu cầu account các persistence mechanism trước recovery và quay lại technical analysis nếu adversary re-entry xuất hiện. WordPress khuyến nghị snapshot môi trường trước cleanup, reset access/session và rebuild/restore từ nguồn sạch khi integrity không còn đáng tin cậy. Nguồn: NIST SP 800-61 Rev.3, CISA Incident Response Playbook và WordPress — FAQ My Site Was Hacked.
Bối cảnh: malware đã được xử lý nhưng chưa thể bàn giao ngay
Giả sử website đã được containment và cleanup. Malicious files đã bị quarantine, vulnerable component đã patch và đội kỹ thuật có một restore point đủ confidence. Tuy nhiên nếu mở traffic ngay mà chưa verify integrity, credential, business flow và monitoring, incident có thể tái xuất hiện hoặc tạo regression khó phân biệt với compromise.
Bàn giao an toàn phải trả lời được những câu hỏi nào?
- Malware/persistence đã được eradicated tới mức nào?
- Restore source hoặc rebuild target đã được kiểm tra integrity chưa?
- Credential/session/token có risk đã được revoke/rotate chưa?
- Business-critical flow đã PASS sau recovery chưa?
- Monitoring và alert đã bật trước khi chuyển ownership chưa?
- Runbook, finding, residual risk và follow-up action đã có owner chưa?
Bước 1: cleanup xong phải xác nhận eradication, không chỉ hết symptom
CISA nhấn mạnh adversary thường dùng nhiều persistence mechanism; nếu re-entry xuất hiện sau eradication thì phải quay lại containment và technical analysis. Vì vậy cleanup chỉ được xem là đủ khi backdoor, cron, account, token, malicious option hoặc alternate entry path đã được account theo evidence hiện có.
Tham chiếu case backdoor còn tồn tại sau cleanup để tách “site trông sạch” khỏi eradication thực sự.
Bước 2: chọn restore hoặc rebuild theo confidence của restoration asset
NIST yêu cầu kiểm tra backup và restoration assets trước khi dùng. Một backup chỉ nên được coi là known-good khi timeline compromise và integrity đủ confidence; nếu không, rebuild từ trusted source rồi migrate dữ liệu đã kiểm tra thường an toàn hơn restore toàn bộ môi trường cũ.
Nếu nhiều generation backup có malware, xem case chọn restore point an toàn. Nếu recovery architecture đã phức tạp, dùng Incident Recovery Plan làm release gate.
Bước 3: credential reset phải đi cùng session và secret review
WordPress khuyến nghị reset access và thay security keys để force logout các session còn hoạt động. Trong incident rộng hơn, cần mở rộng sang hosting, SSH/SFTP, database, API key, DNS/CDN và backup storage nếu có risk bị lộ.
Đọc thêm case credential leak dẫn tới re-compromise để tránh trường hợp cleanup xong nhưng old access vẫn sống.
Bước 4: verification trước khi mở traffic đầy đủ
Security verification
- Core/plugin/theme/config khớp trusted source hoặc baseline.
- Không còn persistence artifact hoặc unauthorized account đã biết.
- Old credential/session/token bị vô hiệu khi cần.
- Entry point ban đầu đã patch/remove/contain.
- Logging và alert đã hoạt động trước cutover.
Functional verification
- Frontend, login/admin và business flow chính hoạt động.
- Email, payment, webhook, CDN/API dependency nếu có hoạt động đúng.
- DNS/TLS/cache không tạo regression sau recovery.
- Backup cycle mới đã chạy và có owner.
- Có rollback nếu security hoặc functional signal xấu xuất hiện.
Bước 5: post-recovery monitoring trước khi closure
NIST yêu cầu monitor performance của restored systems để xác minh restoration đủ tốt; CISA yêu cầu tiếp tục detection để phát hiện re-entry. Vì vậy website online lại không đồng nghĩa incident đã đóng.
- Theo dõi login/admin changes và privileged actions.
- Theo dõi file/config/plugin/MU-plugin changes.
- Theo dõi cron, outbound request và IOC cũ.
- Theo dõi 4xx/5xx hoặc business regression do remediation.
- Escalate ngay nếu artifact hoặc access path cũ tái xuất hiện.
Bước 6: bàn giao incident cho owner vận hành

NIST SP 800-61r3 yêu cầu hoàn tất incident documentation khi kết thúc recovery. Bàn giao nên giúp owner hiểu current state chứ không chỉ nhận một câu “site đã sạch”.
| Hạng mục bàn giao | Nội dung cần có |
|---|---|
| Incident summary | Triệu chứng, scope, timeline và root cause ở mức evidence hỗ trợ |
| Actions | Cleanup, restore/rebuild, patch, rotation và hardening đã thực hiện |
| Verification | Các gate đã PASS và giới hạn còn tồn tại |
| Residual risk | Điểm chưa thể xác minh hoặc cần theo dõi tiếp |
| Credentials | Owner mới, rotation status và recovery ownership |
| Monitoring | Signal/alert cần theo dõi sau bàn giao |
| Follow-up | Action item, priority, owner và deadline nội bộ |
Dùng Incident Closure Checklist để xác nhận điều kiện đóng incident và tránh bàn giao khi còn finding chưa có owner.
Khi nào có thể coi recovery và handover hoàn tất?
Không có một scanner hay một mốc thời gian duy nhất quyết định closure. Confidence đủ cao khi restoration asset và restored system đã được verify, root cause/entry point đã được xử lý ở mức evidence hiện có, business flow ổn định và residual risk được giao cho owner rõ ràng.
- Không có re-entry signal trong monitoring window phù hợp.
- Website hoạt động ổn định sau cutover.
- Backup và rollback mới đã sẵn sàng.
- Credential và access ownership đã rõ.
- Incident documentation và follow-up action đã được tiếp nhận.
Bài học vận hành
- Cleanup malware không đồng nghĩa recovery đã hoàn tất.
- Backup cần được verify trước khi dùng restore.
- Security verification và functional verification là hai gate khác nhau.
- Website online lại chưa đủ để đóng incident.
- Handover phải bao gồm residual risk, owner, monitoring và follow-up action.
- Closure nên dựa trên evidence và criteria, không dựa vào cảm giác “site đã ổn”.
