Thẻ hết hạn vẫn có thể “sống lại”: Lỗ hổng Zombie Card đánh lừa thanh toán contactless như thế nào?
Nghiên cứu tại USENIX Security 2026 cho thấy một số giao dịch Visa contactless có thể bị đánh lừa để chấp nhận thẻ đã hết hạn. Zombie Card không phá mã hóa của thẻ mà khai thác khoảng trống giữa kiểm tra của POS và ngân hàng phát hành.
Một chiếc thẻ thanh toán đã hết hạn tưởng như chỉ còn giá trị làm kỷ niệm có thể chưa thực sự “chết”. Các nhà nghiên cứu tại University of Massachusetts Amherst vừa trình diễn một lỗ hổng mà họ gọi là Zombie Card: trong một số cấu hình Visa contactless, kẻ tấn công có thể khiến máy POS nhìn thấy một ngày hết hạn hợp lệ trong khi chiếc thẻ vật lý thực tế đã quá hạn.
Điều đáng chú ý là cuộc tấn công không cần bẻ khóa khóa mật mã của thẻ, không cần sao chép chip và cũng không tạo ra một thẻ giả hoàn chỉnh. Thay vào đó, nó khai thác một khoảng trống trong cách các thành phần của hệ thống EMV chia sẻ trách nhiệm kiểm tra vòng đời của thẻ.
Nghiên cứu mang tên “Zombie Cards Back Online: Reviving Expired Credit Cards for Contactless Payments” của Raja Hasnain Anwar, Gerard DeCunha và Muhammad Taqi Raza được trình bày tại USENIX Security 2026. Nhóm thử nghiệm với thẻ từ năm ngân hàng lớn tại Mỹ, nhiều mạng thanh toán và máy POS thương mại. Kết quả cho thấy cấu hình Visa contactless mà họ kiểm tra có thể bị tác động, trong khi các cấu hình Mastercard, American Express và Discover được thử nghiệm đã từ chối dữ liệu ngày hết hạn bị thay đổi.
Đây không phải bằng chứng rằng mọi thẻ Visa hết hạn đều có thể “hồi sinh”. Thành công phụ thuộc vào kernel EMV được sử dụng, cách ngân hàng phát hành kiểm tra trạng thái của chính chiếc thẻ và cách thông tin từ POS được chuyển tới ngân hàng. Nhưng nghiên cứu đặt ra một câu hỏi quan trọng: tại sao một thuộc tính tưởng như đơn giản như ngày hết hạn lại không được bảo vệ thống nhất từ thẻ tới ngân hàng?
Zombie Card là gì?
“Zombie Card” là tên nhóm nghiên cứu đặt cho tình huống một thẻ đã hết hạn vẫn có thể tham gia vào một giao dịch contactless thành công sau khi thông tin ngày hết hạn mà máy POS nhìn thấy bị can thiệp.
Bình thường, khi người dùng chạm thẻ vào máy POS, thẻ và terminal trao đổi một loạt dữ liệu qua NFC. Máy POS kiểm tra nhiều thông tin, trong đó có ngày hết hạn của ứng dụng thanh toán trên thẻ. Nếu ngày đó nằm trong quá khứ, terminal có thể từ chối giao dịch.
Vấn đề được nhóm UMass phát hiện nằm ở chỗ trong Visa Kernel 3 mà họ nghiên cứu, giá trị ngày hết hạn dùng cho kiểm tra cục bộ tại terminal không được ràng buộc mật mã theo cách đủ mạnh với toàn bộ dữ liệu được xác thực sau đó. Một bên trung gian trên kênh NFC vì thế có thể làm terminal nhìn thấy một giá trị khác mà không nhất thiết khiến các kiểm tra mật mã còn lại thất bại.
Ngân hàng phát hành sau đó vẫn nhận được một cryptogram hợp lệ do chip thật tạo ra. Nếu ngân hàng chủ yếu xác minh rằng tài khoản hoặc số PAN còn hoạt động, nhưng không kiểm tra chặt trạng thái vòng đời của chính chiếc thẻ đã hết hạn, giao dịch có thể được chấp thuận.
Điều bất ngờ: thẻ hết hạn không tự mất khả năng mật mã
Người dùng thường hình dung rằng sau ngày in trên mặt thẻ, con chip bên trong sẽ tự ngừng hoạt động. Trên thực tế, ngày hết hạn chủ yếu là một điều kiện chính sách được các bên trong hệ thống thanh toán kiểm tra, chứ không nhất thiết là một “công tắc vật lý” khiến chip không thể giao tiếp nữa.
Điều này có lý do vận hành. Tài khoản ngân hàng hoặc hạn mức tín dụng gắn với thẻ có thể vẫn tiếp tục tồn tại sau khi thẻ cũ hết hạn và thẻ mới được phát hành. Hệ thống thanh toán còn phải xử lý các tình huống như hoàn tiền cho một giao dịch cũ.
Vì vậy, chip của thẻ hết hạn vẫn có thể giữ các khóa và tạo phản hồi mật mã. Chính sự khác biệt giữa “thẻ vẫn có thể chứng minh nó là thẻ thật” và “thẻ này còn được phép thanh toán hay không” tạo ra khoảng trống mà Zombie Card khai thác.
EMV contactless không phải một hệ thống duy nhất
Một giao dịch tap-to-pay tưởng như chỉ có hai bên: thẻ và máy POS. Nhưng phía sau là cả chuỗi gồm thẻ, terminal, ngân hàng của người bán, mạng thanh toán và ngân hàng phát hành thẻ.
EMV contactless còn sử dụng nhiều kernel khác nhau. Có thể hiểu kernel là bộ quy tắc mà terminal dùng để xử lý giao dịch theo từng mạng thanh toán. Trong nghiên cứu, nhóm nhắc tới Mastercard Kernel 2, Visa Kernel 3, American Express Kernel 4 và Discover Kernel 6.
Các kernel có mục tiêu tương tự nhưng không xử lý mọi trường dữ liệu giống nhau. Một số ràng buộc chặt các giá trị quan trọng vào dữ liệu đã ký hoặc cryptogram. Một số khác ưu tiên khả năng tương thích, tốc độ và cơ chế chuyển giao dịch lên ngân hàng xử lý trực tuyến.
Zombie Card xuất hiện chính ở ranh giới đó: một trường dữ liệu quan trọng đối với quyết định của terminal có thể không được bảo vệ end-to-end giống với dữ liệu mà ngân hàng sử dụng khi cấp phép.
Ngày hết hạn tồn tại ở nhiều nơi trong cùng một giao dịch
Một trong những phát hiện cốt lõi của nghiên cứu là ngày hết hạn không chỉ tồn tại dưới một biểu diễn duy nhất.
Trong Visa Kernel 3, terminal có thể sử dụng Application Expiration Date để kiểm tra xem ứng dụng thanh toán trên thẻ còn hiệu lực hay không. Trong khi đó, dữ liệu gửi tới ngân hàng phát hành cho quá trình cấp phép trực tuyến có thể mang ngày hết hạn qua một trường khác, chẳng hạn dữ liệu tương đương Track 2.
Nếu hai biểu diễn này không được ràng buộc và kiểm tra nhất quán, terminal có thể nhìn thấy một ngày trong tương lai trong khi ngân hàng nhìn thấy dữ liệu khác. Hệ thống lúc này không còn một “sự thật duy nhất” về trạng thái của thẻ.
Ở các cấu hình khác mà nhóm thử nghiệm, việc thay đổi ngày hết hạn làm phát sinh lỗi hoặc bị phát hiện do dữ liệu được kiểm tra tính nhất quán tốt hơn. Đây là lý do kết quả không nên được khái quát thành “mọi thẻ contactless đều có lỗ hổng”.
Cuộc tấn công không phá khóa mã hóa của thẻ
Zombie Card dễ bị hiểu nhầm thành một kiểu clone thẻ. Thực tế, nhóm nghiên cứu không lấy được khóa bí mật từ chip và cũng không giả mạo cryptogram của ngân hàng.
Họ chứng minh một dạng tấn công trung gian trên kênh giao tiếp NFC. Ở mức khái niệm, dữ liệu trao đổi giữa thẻ và POS được chuyển tiếp qua một hệ thống trung gian, trong đó một trường về ngày hết hạn mà terminal sử dụng có thể bị thay đổi trước khi terminal xử lý.
Những phản hồi mật mã quan trọng vẫn đến từ chiếc thẻ thật. Vì trường ngày hết hạn bị can thiệp không được bảo vệ theo cùng cách trong cấu hình Visa được thử nghiệm, terminal có thể tiếp tục coi phần còn lại của phiên giao dịch là hợp lệ.
Đây là một lớp lỗi rất khác so với “mật mã yếu”. Mỗi thành phần có thể thực hiện đúng phần việc riêng của mình, nhưng toàn bộ hệ thống vẫn không đảm bảo một thuộc tính end-to-end mà người dùng mặc nhiên kỳ vọng.
Thử nghiệm dùng phần cứng phổ thông
Nhóm UMass cho biết hệ thống thử nghiệm có thể vận hành với thiết bị NFC phổ thông thay vì phần cứng chuyên dụng đắt tiền. Họ dùng điện thoại Android làm các thành phần chuyển tiếp và mô phỏng giao tiếp giữa thẻ với terminal, đồng thời thử nghiệm trên các đầu đọc thanh toán thương mại.
Độ trễ của relay cũng không đủ lớn để giao dịch tự động bị timeout trong các thử nghiệm. Theo bài báo, thời gian trung bình của một giao dịch trong thiết lập relay vào khoảng 415 ms, trong khi giới hạn phản hồi ở từng lệnh vẫn nằm trong khoảng mà hệ thống chấp nhận.
EMV có một cơ chế tùy chọn gọi là Relay Resistance Protocol nhằm phát hiện độ trễ bất thường của relay. Tuy nhiên, nhóm cho biết cơ chế này không được bật trên các thẻ và terminal mà họ thử nghiệm.
Chi tiết này cho thấy một bài học rộng hơn trong bảo mật thanh toán: một biện pháp phòng vệ tồn tại trong tiêu chuẩn không có nghĩa nó được triển khai đồng đều trong thực tế.
Nhóm đã thanh toán thành công tới 500 USD trong môi trường kiểm soát
Trong các thử nghiệm với một thẻ Visa hết hạn của ngân hàng được ẩn danh là Bank A, giao dịch không sửa đổi bị từ chối như mong đợi. Sau khi nhóm áp dụng kỹ thuật Zombie Card trong môi trường kiểm soát, cùng chiếc thẻ đã thực hiện thành công các giao dịch 1 USD, 100 USD và 500 USD trên hệ thống thử nghiệm của họ.
Nhóm cũng xác nhận hiện tượng ở các điểm bán thực tế với các giao dịch nhỏ tại cửa hàng bán lẻ và cửa hàng thực phẩm. Các nhà nghiên cứu cho biết những người bán liên quan được thông báo và mọi khoản thử nghiệm đều được thanh toán đầy đủ.
Tuy nhiên, đây không phải khảo sát quy mô toàn ngành. Các tác giả nhấn mạnh rằng thử nghiệm thực địa chỉ nhằm xác nhận vấn đề có tồn tại ngoài phòng lab, không chứng minh rằng mọi máy POS, ngân hàng hay giao dịch đều có thể bị tấn công.
Ngân hàng mới là lớp phòng vệ quyết định
Kết quả giữa các ngân hàng trong nghiên cứu khác nhau rõ rệt.
Ở Bank A, một số giao dịch Zombie Card đã được terminal chấp nhận và ngân hàng cũng cấp phép. Với Bank B, terminal có thể đi qua bước kiểm tra cục bộ sau khi dữ liệu bị thay đổi, nhưng ngân hàng vẫn từ chối thẻ hết hạn và yêu cầu sử dụng thẻ thay thế.
Điều này cho thấy một POS bị đánh lừa chưa chắc dẫn tới mất tiền. Nếu issuer duy trì trạng thái chính xác của từng credential và kiểm tra rằng chính chiếc thẻ đang xuất trình vẫn còn hiệu lực, ngân hàng có thể chặn giao dịch ở lớp cuối.
Ngược lại, nếu backend chỉ nhìn thấy PAN còn hoạt động và một cryptogram hợp lệ, nhưng không kiểm tra chặt cặp thông tin gồm danh tính credential và ngày hết hạn hiện hành, thẻ cũ có thể được đối xử gần như vẫn thuộc cùng tài khoản đang hoạt động.
Tại sao ngân hàng lại không kiểm tra lại mọi thứ?
Hệ thống thanh toán toàn cầu phải xử lý khối lượng giao dịch rất lớn với yêu cầu độ trễ thấp. Vì vậy, trách nhiệm kiểm tra được phân chia giữa thẻ, terminal, mạng thanh toán và ngân hàng.
Một số quyết định được thực hiện cục bộ tại POS để giao dịch diễn ra nhanh. Ngân hàng phát hành không nhất thiết tái tạo toàn bộ quá trình kiểm tra mà terminal vừa thực hiện. Cách thiết kế này giúp giảm độ trễ và tránh từ chối nhầm, nhưng cũng tạo ra rủi ro nếu terminal và issuer không có cùng một cái nhìn về dữ liệu bảo mật quan trọng.
Các tác giả cho rằng đây là vấn đề phân mảnh trách nhiệm. Không thành phần nào hoàn toàn “sai”, nhưng mỗi bên có thể giả định bên khác đã kiểm tra một điều kiện nào đó.
Ngày hết hạn là ví dụ đặc biệt trực quan: người dùng coi đây là thuộc tính tuyệt đối của thẻ, trong khi hệ thống có thể đang thực thi nó như một tập hợp các kiểm tra chính sách rời rạc.
Visa bị ảnh hưởng trong thử nghiệm, Mastercard và các mạng khác thì sao?
Kết quả của nghiên cứu có phạm vi cụ thể.
Visa contactless Kernel 3 là cấu hình mà nhóm xác nhận có bề mặt cho việc thay đổi ngày hết hạn trong quá trình truyền mà không làm hỏng các kiểm tra mật mã cần thiết ở terminal.
Mastercard Kernel 2 trong thử nghiệm đã từ chối khi biểu diễn ngày hết hạn bị thay đổi không còn nhất quán với dữ liệu khác. Theo nhóm, kernel này thực hiện kiểm tra giúp phát hiện sự khác biệt.
American Express Kernel 4 và Discover Kernel 6 mà nhóm kiểm tra cũng không cho phép cùng kiểu thay đổi đi qua như Visa Kernel 3.
Điều này không có nghĩa các mạng còn lại miễn nhiễm với mọi tấn công contactless. Nó chỉ có nghĩa Zombie Card theo đúng cơ chế được bài báo mô tả không thành công trên các cấu hình mà nhóm đã thử nghiệm.
Apple Pay và Google Pay có trở thành “Zombie Wallet” không?
Nhóm nghiên cứu cũng thử Apple Pay và Google Pay để so sánh cách hệ thống token hóa xử lý vòng đời credential.
Ví số không đơn giản sao chép PAN và ngày hết hạn của thẻ vật lý. Chúng thường sử dụng token thanh toán được quản lý bởi issuer và dịch vụ token, nhờ đó các thuộc tính liên quan tới vòng đời có thể được cập nhật hoặc thu hồi từ xa.
Trong các thử nghiệm của nhóm, việc thay đổi ngày hết hạn theo kiểu Zombie Card không tạo ra cùng vấn đề như với thẻ Visa vật lý. Các tác giả cho rằng cơ chế quản lý vòng đời tập trung hơn của token giúp giảm khả năng một credential vật lý đã cũ tiếp tục tồn tại trong trạng thái mơ hồ.
Tuy nhiên, đây không phải tuyên bố rằng Apple Pay hay Google Pay miễn nhiễm với mọi lỗ hổng. Nghiên cứu chỉ cho thấy chúng có khả năng chống lại kiểu lỗi vòng đời cụ thể này tốt hơn trong các cấu hình được thử.
Thẻ được thay mới trước khi hết hạn cũng đặt ra câu hỏi
Một phát hiện đáng chú ý khác không cần đến việc chỉnh sửa dữ liệu NFC.
Nhóm kiểm tra một chiếc thẻ chưa hết hạn nhưng đã được ngân hàng tự động thay thế vì sắp đến ngày hết hạn. Trong trường hợp đó, cả thẻ cũ và thẻ thay thế đều tiếp tục thực hiện giao dịch trên cùng tài khoản.
Điều này cho thấy vấn đề rộng hơn ngày hết hạn. “Đã được thay thế” là một trạng thái do ngân hàng quản lý, nhưng không phải lúc nào cũng được biểu diễn theo cách khiến tất cả đường cấp phép tự động từ chối credential cũ.
Với người dùng, việc nhận thẻ mới thường mang hàm ý thẻ trước đó chuẩn bị bị vô hiệu hóa. Nhưng phía backend có thể duy trì một giai đoạn chuyển tiếp để tránh gián đoạn dịch vụ. Nếu trạng thái này không được quản lý chặt, nó làm tăng thời gian mà một thẻ cũ vẫn có khả năng tạo giao dịch.
Vì sao gọi là “lỗ hổng hệ thống” thay vì lỗi của một chiếc thẻ?
Zombie Card không nằm gọn trong firmware của một model thẻ hay phần mềm của một ứng dụng duy nhất. Nó xuất hiện khi nhiều lớp của hệ sinh thái cùng có những giả định không khớp nhau.
Terminal tin vào một trường ngày hết hạn mà nó đọc từ thẻ. Mạng thanh toán định nghĩa cách kernel xử lý trường đó. Ngân hàng tin rằng terminal đã thực hiện một số kiểm tra nhất định. Trong khi đó, ngân hàng có thể dùng một biểu diễn khác của ngày hết hạn cho quyết định cấp phép.
Khi dữ liệu ở các lớp này không được ràng buộc mật mã end-to-end, một sự thay đổi giữa đường có thể khiến các bên đưa ra hai kết luận khác nhau về cùng một chiếc thẻ.
Đây là kiểu lỗi đặc biệt khó giải quyết vì vá một ứng dụng không đủ. Biện pháp hoàn chỉnh có thể đòi hỏi thay đổi ở kernel, terminal, mạng thanh toán và logic cấp phép của ngân hàng.
Các nhà nghiên cứu đề xuất sửa Zombie Card như thế nào?
Nhóm UMass đưa ra một số hướng phòng vệ ở nhiều lớp.
Bảo vệ tính toàn vẹn của dữ liệu hết hạn. Các trường ảnh hưởng trực tiếp tới quyết định về tính hợp lệ của thẻ nên được ràng buộc vào dữ liệu có chữ ký hoặc cryptogram để việc sửa giữa đường bị phát hiện.
Kiểm tra tính nhất quán của mọi biểu diễn ngày hết hạn. Nếu terminal và issuer sử dụng nhiều trường khác nhau, hệ thống cần đảm bảo chúng cùng mô tả một trạng thái và từ chối khi có mâu thuẫn.
Ngân hàng phải coi ngày hết hạn và trạng thái thay thẻ là điều kiện cấp phép cứng. Thay vì chỉ kiểm tra PAN còn hoạt động, issuer nên kiểm tra credential cụ thể đang được sử dụng còn hợp lệ hay đã bị thay thế.
Truyền kết quả kiểm tra của terminal tới issuer. Ngân hàng cần nhìn thấy các tín hiệu rủi ro có ý nghĩa thay vì nhận một trạng thái không phản ánh đầy đủ những gì đã xảy ra tại POS.
Triển khai khả năng chống relay. Relay Resistance Protocol có thể giúp phát hiện sự hiện diện của một lớp trung gian bằng cách giới hạn thời gian phản hồi.
Điểm chung của các biện pháp này là biến ngày hết hạn từ một “chính sách cục bộ” thành thuộc tính được xác thực xuyên suốt toàn bộ đường giao dịch.
Người dùng nên làm gì với thẻ hết hạn?
Phát hiện mới không có nghĩa người dùng cần ngừng thanh toán contactless. Cuộc tấn công có điều kiện tiền đề quan trọng: kẻ xấu phải có quyền truy cập vào chiếc thẻ vật lý đã hết hạn hoặc bị thay thế.
Vì vậy, biện pháp thiết thực nhất vẫn rất đơn giản: đừng coi thẻ hết hạn là một miếng nhựa vô hại.
Nhóm nghiên cứu khuyến nghị làm theo hướng dẫn của ngân hàng khi tiêu hủy thẻ. Với thẻ nhựa, cần phá hỏng chip EMV và dải từ trước khi vứt bỏ; với thẻ kim loại, nên sử dụng chương trình thu hồi hoặc tiêu hủy của tổ chức phát hành nếu có.
Ngoài ra, người dùng nên tiếp tục theo dõi giao dịch trên tài khoản ngay cả sau khi thẻ cũ hết hạn hoặc đã được thay thế. Nếu xuất hiện khoản thanh toán không nhận ra, cần báo ngân hàng càng sớm càng tốt.
Đây có phải nguy cơ với thẻ tại Việt Nam?
Nghiên cứu được thực hiện trên thẻ và ngân hàng tại Mỹ, vì vậy không thể suy ra trực tiếp rằng thẻ Visa contactless do các ngân hàng Việt Nam phát hành sẽ có cùng hành vi.
Kết quả giao dịch phụ thuộc vào nhiều yếu tố: phiên bản kernel trên POS, cấu hình của ngân hàng thanh toán, mạng thẻ, chính sách của ngân hàng phát hành, giới hạn contactless, yêu cầu xác thực bổ sung và cách hệ thống quản lý vòng đời credential.
Vì vậy, kết luận phù hợp hiện tại là lỗ hổng cho thấy một vấn đề thiết kế có thể tồn tại trong hệ sinh thái Visa contactless, chứ chưa phải bằng chứng về một cuộc tấn công phổ quát trên mọi quốc gia.
“Hết hạn” cần trở thành một sự thật end-to-end
Zombie Card gây chú ý vì nó đi ngược một trực giác rất cơ bản: ngày hết hạn đã qua thì thẻ phải ngừng thanh toán.
Nhưng nghiên cứu tại USENIX Security 2026 cho thấy trong một hệ thống phân tán như thanh toán EMV, điều tưởng như là một thuộc tính đơn giản có thể thực chất được kiểm tra bởi nhiều bên theo những cách khác nhau. Khi terminal và ngân hàng không cùng xác nhận một trạng thái đã được bảo vệ mật mã, kẻ tấn công có thể tìm thấy khoảng trống giữa hai lớp.
Vấn đề vì thế không phải một con chip “quên” rằng nó đã hết hạn. Vấn đề là cả chuỗi thanh toán chưa luôn thống nhất được ai có trách nhiệm tuyên bố chiếc thẻ đã chết — và ai phải kiểm tra lại tuyên bố đó.
Cho đến khi vòng đời của thẻ được ràng buộc end-to-end chặt hơn, lời khuyên đơn giản nhất cho người dùng vẫn là: khi ngân hàng gửi thẻ mới, hãy xử lý chiếc thẻ cũ như một credential bảo mật còn nhạy cảm, không phải một mảnh nhựa đã vô dụng.
Nguồn tham khảo
- USENIX Security 2026 – “Zombie Cards Back Online: Reviving Expired Credit Cards for Contactless Payments”.
- Raja Hasnain Anwar, Gerard DeCunha và Muhammad Taqi Raza – toàn văn bài nghiên cứu tại 35th USENIX Security Symposium.
- UMass Amherst, “When Zombie Credit Cards Attack”, 17/8/2026.
- Khwarizmi Lab – trang dự án Zombie Cards Back Online, FAQ và phạm vi thử nghiệm.