Một remediation ticket có thể được đánh dấu “Done” nhưng vulnerability vẫn còn tồn tại trên asset thực tế. Điều này thường xảy ra khi team sửa nhầm component, patch chưa được deploy tới đúng instance, service chưa restart, config chỉ thay ở một node hoặc validation chỉ kiểm tra ticket/change log mà không retest attack surface thật.
Tenable định nghĩa remediation scan là một follow-up scan dùng để xác minh remediation actions có thực sự thành công hay không. Finding chỉ chuyển sang trạng thái Fixed khi scan đúng target, plugin và các điều kiện xác minh cần thiết không còn phát hiện vulnerability. Nguồn: Tenable — Remediation Scan.
Bối cảnh và tín hiệu ban đầu
Giả sử audit phát hiện một service đang chạy phiên bản vulnerable. Team vận hành cập nhật package, đóng ticket remediation và ghi chú “patched”. Vài ngày sau, retest vẫn phát hiện cùng vulnerability trên cùng asset.
Không nên mặc định scanner sai chỉ vì ticket đã đóng. Retest cần xác định trạng thái runtime thực tế và kiểm tra xem remediation có được áp đúng target, đúng component và đúng dependency hay chưa.
Những dấu hiệu cho thấy remediation chưa hoàn tất
- Package đã update nhưng process vẫn chạy binary cũ chưa restart.
- Một node đã patch nhưng load balancer vẫn phân phối traffic tới node chưa patch.
- Fix áp trên staging hoặc host khác với asset bị finding.
- Config được sửa nhưng service chưa reload hoặc container image chưa redeploy.
- Scanner vẫn phát hiện cùng plugin ID/port/protocol sau remediation.
- Authenticated check vẫn thấy package/build vulnerable dù dashboard ticket báo Done.
Investigation: vì sao fix đã làm nhưng vulnerability vẫn còn?
Bước 1: đối chiếu finding gốc với đúng asset và detection path
Trước hết cần khóa đúng finding instance: asset, hostname/IP, port, protocol, plugin ID, package hoặc vulnerable path. Nếu retest target khác finding ban đầu, kết quả không đủ để chứng minh remediation success hay failure.
Tenable yêu cầu remediation scan đánh đúng target và plugin liên quan; với một số finding còn cần authentication để xác minh trạng thái package/local configuration. Vì vậy scope mismatch có thể tạo false closure hoặc false failure.
Bước 2: kiểm tra runtime state, không chỉ package manager hoặc change ticket
Một package có thể đã được update nhưng daemon cũ vẫn chạy trong memory. Container host có thể đã pull image mới nhưng workload chưa được redeploy. Reverse proxy hoặc load balancer có thể vẫn route tới node cũ. Retest phải nhìn service đang phục vụ thực tế, không chỉ trạng thái package/config trên disk.
Nếu vulnerability liên quan config, cần read-back effective configuration sau reload/restart. Nếu liên quan version, cần xác minh binary/process đang chạy đúng build đã được patch.
Bước 3: tìm gap giữa corrective action và root cause
Có trường hợp remediation xử lý symptom nhưng không xử lý nguyên nhân gốc: chặn một path nhưng service vulnerable vẫn public, đổi một credential nhưng secret cũ còn ở deployment khác, hoặc patch một plugin nhưng một copy khác vẫn tồn tại.
Đối chiếu Security Audit Report, ưu tiên Security Finding theo Risk, Impact và Effort và Website Security Audit Methodology để bảo đảm finding, fix và retest cùng bám một scope.
Khi nào có thể xác nhận remediation chưa thành công?
Không nên kết luận chỉ vì scanner vẫn hiển thị historical finding. Cần xác minh vulnerability còn hiện diện trong lần retest mới.
- Retest đúng asset/port/plugin vẫn tái hiện cùng vulnerability.
- Runtime state vẫn chứa vulnerable package, binary, config hoặc code path.
- Corrective action chưa được deploy tới toàn bộ node/instance liên quan.
- Reload/restart/redeploy cần thiết chưa xảy ra hoặc thất bại.
- Manual verification độc lập xác nhận attack path vẫn tồn tại.
Remediation: chuyển từ “đã làm” sang “đã xác minh”

Mở lại finding với evidence rõ ràng
- Ghi lại kết quả retest mới và evidence chứng minh vulnerability còn tồn tại.
- Map finding về đúng asset/node/service chưa được fix.
- Xác định bước remediation bị thiếu: patch, deploy, restart, reload, config hoặc dependency.
- Gán lại owner và due date thay vì giữ trạng thái Done.
- Không downgrade severity chỉ vì remediation đầu tiên thất bại.
Tenable coi mitigation là việc xác minh vulnerability không còn xuất hiện trong lần scan phù hợp, chứ không phải việc ticket đã được cập nhật. Nguồn: Tenable — Vulnerability Mitigation.
Thiết kế remediation plan có verification gate
- Definition of Done phải gồm retest PASS, không chỉ change completed.
- Fix plan phải nêu rõ asset scope, dependency và restart/redeploy requirement.
- Cluster/load-balanced environment phải xác minh từng node hoặc sample có căn cứ.
- Authenticated findings cần authenticated retest khi cần để tránh thiếu visibility.
- Nếu retest không thể chạy, finding không nên tự động được coi là Fixed.
Chi tiết quy trình xem Security Retest sau Audit và Security Audit Remediation Plan.
Validation sau remediation lần hai
| Kiểm tra | Kết quả mong đợi |
|---|---|
| Retest target | Đúng asset/node/port ban đầu |
| Detection plugin | Không còn phát hiện vulnerability |
| Runtime binary/config | Đã chuyển sang trạng thái patched |
| Cluster coverage | Không còn node chưa remediation |
| Service restart/redeploy | Hoàn tất và read-back đúng |
| Regression test | Business flow vẫn hoạt động bình thường |
| Finding status | Chỉ đóng sau khi evidence retest PASS |
Bài học vận hành và bước tiếp theo
- Change completed không đồng nghĩa vulnerability đã fixed.
- Retest phải đánh đúng asset, plugin, port và authentication context.
- Package update chưa đủ nếu runtime process vẫn dùng binary cũ.
- Cluster và container environment dễ tạo partial remediation.
- Definition of Done nên có verification evidence.
- Finding chỉ nên đóng khi trạng thái thực tế đã được read-back và retest xác nhận.
