953 cửa hàng trực tuyến dính đoạn mã né máy quét: quét sạch chưa có nghĩa là cửa hàng đã sạch
Sansec đếm được 953 cửa hàng mang đoạn mã tải về từ tháng 7 năm 2025. Đoạn mã mới nhất tự phân biệt khách thật với máy quét, nên một lần quét sạch không đủ để kết luận cửa hàng an toàn.
Ngày 24 tháng 10 năm 2026, công ty an ninh mạng Sansec công bố một chiến dịch đã kéo dài từ tháng 7 năm 2025 và chạm tới 953 cửa hàng trực tuyến, phần lớn chạy Magento. Điểm khiến chiến dịch này khác thường không phải quy mô. Đoạn mã mới nhất tự phân biệt khách thật với máy quét, rồi chỉ trả lời khách thật.
Đoạn mã nằm trong khối nội dung của cửa hàng
Đoạn mã nằm trong bảng khối nội dung của Magento, nơi chủ cửa hàng đặt những phần như đầu trang, chân trang hay băng rôn khuyến mãi. Kẻ tấn công sửa một khối có sẵn hoặc tạo thêm một khối mới. Khi khách mở trang, đoạn mã hỏi máy chủ của kẻ tấn công xem nên làm gì tiếp theo. Máy chủ kiểm tra xem người xem là khách thật hay máy quét. Máy quét ở đây là công cụ tự động mở trang web để tìm mã độc. Nếu nhận ra máy quét, máy chủ trả về câu trả lời rỗng. Sansec thử nghiệm với dịch vụ urlscan.io và thấy trình duyệt tự động của dịch vụ này không nhận được nội dung bị chèn. Nói cách khác, cửa hàng có thể trông sạch trước máy quét trong khi vẫn chứa mã độc.
Năm tên miền, ba lần đổi cách lẩn trốn
Chiến dịch đã dùng năm tên miền. Tên miền đầu tiên xuất hiện tháng 7 năm 2025, rồi tới tháng 12 năm 2025, tháng 3 năm 2026, tháng 6 năm 2026 và cuối cùng là tháng 10 năm 2026. Tên miền mới nhất được đăng ký ngày 6 tháng 10 và xuất hiện trong khối nội dung của 83 cửa hàng. Trong số đó, 60 cửa hàng từng mang một phiên bản cũ hơn của cùng chiến dịch. Ban đầu, kẻ tấn công dùng hệ thống phân phối lưu lượng Keitaro để chọn một trong ba phản ứng: gửi mã độc, chuyển hướng trình duyệt hoặc không trả gì. Phiên bản ngày 7 tháng 10 bỏ Keitaro và gọi thẳng tên miền mới. Nó còn lưu mã trong trình duyệt của khách, nên mã chạy lại ở lần ghé sau ngay cả khi tên miền đã ngoại tuyến hoặc bị chặn. Bản viết lại ngày 23 tháng 10 bổ sung kỹ thuật nhận dạng trình duyệt. Kỹ thuật này thu thập dấu hiệu trình duyệt tự động, thông số phần cứng, kích thước màn hình, múi giờ và ngôn ngữ trước khi máy chủ chọn câu trả lời. Một lưu ý quan trọng về con số: 953 là tổng tích lũy của cả chiến dịch, không phải số cửa hàng mới bị trong tháng 10. Riêng tên miền mới nhất chỉ xuất hiện ở 83 cửa hàng.
Vì sao vá lỗi chưa đủ để dọn sạch
Lối vào ban đầu của nhiều cửa hàng là hai lỗ hổng tải tập tin lên. Tháng 3 năm 2026, 471 cửa hàng bị chèn mã qua lỗ hổng PolyShell, mã định danh CVE-2026-48356. Hơn 100 cửa hàng bị tải tập tin lên qua PolyShell hoặc lỗ hổng SessionReaper, mã CVE-2025-54236. Vá lỗi chỉ đóng lối vào đó. Vá lỗi không gỡ đoạn mã đã nằm trong khối nội dung, không xóa tài khoản quản trị lạ và không đóng cửa hậu đã cài. Một trường hợp cho thấy rõ điều này. Một cửa hàng chạy Magento bản 2.4.7-p10, không thiếu bản vá lõi nào, vẫn nhận tên miền mới nhất lúc 16 giờ 46 phút UTC ngày 23 tháng 10, chỉ một giờ sau một lần quét sạch. Trước đó, công cụ eComscan của Sansec đã phát hiện một tài khoản quản trị lạ trên cửa hàng này ngày 16 tháng 9 và một cửa hậu GSocket ngày 24 tháng 9. Cửa hậu là một lối đi bí mật để kẻ tấn công quay lại sau. Mục đích cuối cùng của chiến dịch vẫn chưa rõ, vì Sansec chưa lấy được đoạn mã cuối cùng. Điều đã rõ là cơ chế lẩn trốn, chứ chưa phải thứ đoạn mã cuối cùng đánh cắp.
Kiểm tra cửa hàng theo thứ tự nào
Với chủ cửa hàng, thứ tự dọn dẹp quan trọng hơn tốc độ xóa mã. Xóa đoạn mã mà bỏ sót lối vào chỉ giúp kẻ tấn công quay lại bằng cùng một đường. Sáu bước dưới đây đi từ dấu vết tới gốc rễ.
- Tìm năm tên miền trong nội dung khối cms_block: manulfie[.]click, neswnsssn[.]click, lanhd6549tdhse[.]top, additionalver[.]com và deepveindrilling[.]com. Nếu thấy tên miền nào trong số đó thì khối đã bị chèn mã.
- Rà soát tài khoản quản trị và các kết nối API. Tài khoản lạ hoặc tài khoản mới mà không ai nhận cần xử lý trước khi dọn mã.
- Tìm cửa hậu còn sót, gồm tập tin lạ và tập tin ngụy trang thành dạng khác.
- Đổi mật khẩu cơ sở dữ liệu, tài khoản quản trị và khóa API sau khi dọn xong. Mật khẩu cũ có thể đã lộ trong lần xâm nhập trước.
- Vá PolyShell và SessionReaper, rồi kiểm tra lại bằng nhiều cách khác nhau. Một lần quét duy nhất không đủ, vì chính chiến dịch này cho thấy máy quét có thể bị đánh lừa.
- Theo dõi cửa hàng thêm một thời gian sau khi dọn. Sáu mươi trong số 83 cửa hàng mang tên miền mới nhất từng bị chèn mã trước đó, nên tái nhiễm là kịch bản cần tính tới, không phải ngoại lệ.
Bài liên quan trên blog: Ngày 21/10: bốn sự cố bảo mật dồn dập và việc bạn cần làm ngay.
Nguồn tham khảo
- Infosecurity Magazine, "Hackers Infect 953 Online Stores With Scanner-Evading Code": https://www.infosecurity-magazine.com/news/hackers-infect-953-online-stores/
- SecurityWeek, "953 Online Stores Infected in Long-Lasting Malware Campaign": https://www.securityweek.com/953-online-stores-infected-in-long-lasting-malware-campaign/
- The Hacker News, "Hackers Infect 953 Online Stores With Scanner-Evading JavaScript, Mostly on Magento": https://thehackernews.com/2026/10/hackers-infect-953-online-stores-with.html
Cả ba bài báo đều dẫn nghiên cứu của Sansec, công bố ngày 24 tháng 10 năm 2026.