Các cuộc tấn công chi tiêu gấp đôi: Tại sao bạn không thể chỉ nhìn vào "Đã gửi" để xem các giao dịch blockchain

Trung cấp
Double-Spend Attacks: Why You Can't Just Look at "Sent" for Blockchain Transactions
Nhiều người dùng cho rằng khi một giao dịch blockchain đã được “gửi”, số tiền đã đến nơi an toàn. Nhưng thực tế không đơn giản như vậy. Đối với các sàn giao dịch, bên chấp nhận thanh toán và người dùng thông thường, điều quan trọng thực sự không chỉ là giao dịch đã được phát sóng hay chưa, mà còn là giao dịch đã được xác nhận bởi một khối chưa, số lần xác nhận có đủ không, và chuỗi cơ sở có nguy cơ bị tái tổ chức hay không. Hiểu rõ những khái niệm này là nền tảng để ngăn chặn các cuộc tấn công “chi tiêu đôi”.
 
Bài viết này tập trung chủ yếu vào các mạng proof-of-work, nơi độ sâu xác nhận và bằng chứng công việc tích lũy đóng vai trò trung tâm trong rủi ro tái tổ chức. Các hệ thống đồng thuận khác sử dụng các cơ chế tính cuối khác nhau.

Giao dịch chi tiêu kép là gì?

Một “cuộc tấn công chi tiêu kép” về cơ bản là nỗ lực của kẻ tấn công nhằm chi tiêu cùng một tài sản kỹ thuật số hai lần.
 
Để lấy ví dụ trực quan nhất: một kẻ tấn công chỉ sở hữu 1 BTC nhưng đồng thời khởi tạo hai giao dịch xung đột. Một giao dịch thanh toán cho bên chấp nhận thanh toán hoặc nền tảng để nạp, mua hàng hoặc sử dụng dịch vụ; giao dịch còn lại gửi cùng 1 BTC trở lại một địa chỉ ví do kẻ tấn công kiểm soát. Vì cả hai giao dịch đều sử dụng cùng một nguồn tiền, chỉ một trong số chúng cuối cùng sẽ hợp lệ trên chuỗi. Nếu bên chấp nhận thanh toán hoặc nền tảng tin tưởng vào một giao dịch “chưa được xác nhận ổn định” quá sớm, kẻ tấn công có thể sau đó khai thác việc tái tổ chức chuỗi hoặc ghi đè bởi chuỗi dài hơn, khiến bản ghi nạp trước đó trở nên không hợp lệ — trong khi tài sản đã được giải phóng cho kẻ tấn công.
 
Do đó, một cuộc tấn công chi tiêu kép không phải là về việc “nhân đôi tài sản” — nó khai thác việc xác nhận giao dịch chưa đủ, sản xuất khối cạnh tranh hoặc tái tổ chức chuỗi để khiến cùng một tài sản được sử dụng hai lần trong một quy trình kinh doanh.

Tại sao các cuộc tấn công chi tiêu kép lại xảy ra?

Mặc dù blockchain nhấn mạnh rằng các giao dịch là không thể hoàn tác, nhưng tính "không thể hoàn tác" này thường không áp dụng ngay lập tức khi giao dịch vừa được gửi. Nó dần tiến gần đến mức không thể hoàn tác sau khi được đóng gói, truyền播 và xác nhận.
 
Một giao dịch trên chuỗi thường trải qua một số trạng thái:
 
Trạng thái Mô tả
Được tạo Ví tạo giao dịch
Phát sóng Giao dịch được phát sóng đến mạng blockchain
Đang chờ Đang chờ thợ mỏ hoặc người xác thực đóng gói và xác nhận
Đã xác nhận Giao dịch đã được đưa vào một khối và bắt đầu tích lũy xác nhận
Thất bại / Bị bỏ qua / Được thay thế Giao dịch không thành công, hoặc đã được thay thế hoặc hủy bỏ
Rủi ro thường xuất hiện trong giai đoạn Đang chờ và giai đoạn Đã xác nhận nhưng còn quá ít lần xác nhận. Tại những thời điểm này, giao dịch “dường như tồn tại” nhưng chưa đủ ổn định. Nếu mạng lưới phân nhánh, hoặc nếu một kẻ tấn công kiểm soát lượng sức mạnh băm đáng kể và xây dựng một chuỗi dài hơn, khối chứa giao dịch ban đầu có thể bị loại bỏ — và bản ghi giao dịch có thể “biến mất.”
 
Đây là điều được gọi là "tái tổ chức chuỗi." Việc tái tổ chức chuỗi không đơn giản là xóa một bản ghi; nó có nghĩa là toàn bộ mạng lưới cuối cùng công nhận một chuỗi khác, khiến một số khối trên chuỗi ban đầu trở nên không hợp lệ. Nếu giao dịch nạp chỉ tồn tại trên nhánh bị loại bỏ, bản ghi nạp mà nền tảng đã thấy trước đó có thể mất tính hợp lệ.

Tại sao các xác nhận lại quan trọng đến vậy?

Số lần xác nhận xác định mức độ khó để hoàn tác một giao dịch.
 
Khi một giao dịch lần đầu tiên được đưa vào một khối, nó thường chỉ có 1 xác nhận. Với mỗi khối mới được tạo ra, số lượng xác nhận tăng lên — 2 xác nhận, 3 xác nhận, 6 xác nhận, thậm chí 12 xác nhận. Số lượng xác nhận càng cao, thì càng nhiều khối cần phải lùi lại để đảo ngược giao dịch, và chi phí tấn công càng lớn.
 
Đó là lý do tại sao các sàn giao dịch thường không ghi có cho người dùng ngay lập tức ở 0 đến 1 xác nhận. Rủi ro cao hơn ở giai đoạn này, đặc biệt đối với các blockchain có sức mạnh băm yếu hoặc từng trải qua các cuộc tấn công 51% hoặc tái tổ chức chuỗi, nơi cần ngưỡng xác nhận cao hơn.

📌 Trường hợp nổi bật: Cuộc tấn công 51% sức mạnh băm ETC năm 2019 và sự cố chi tiêu hai lần

Các cuộc tấn công chi tiêu gấp đôi không phải là mối đe dọa lý thuyết. Vào tháng 1 năm 2019, Ethereum Classic (ETC) đã trải qua một cuộc tấn công 51% lớn liên quan đến các giao dịch chi tiêu gấp đôi.
 
Quy trình tấn công điển hình:
 
Bước Hành động
1 Kẻ tấn công đầu tiên đã giành được sự thống trị đáng kể về sức mạnh hash trên mạng ETC, cho phép chúng khai thác riêng một chuỗi dài hơn
2 Kẻ tấn công đã gửi ETC đến một sàn giao dịch
3 Sau khi sàn giao dịch xác nhận giao dịch nạp đã đạt đủ số lần xác nhận yêu cầu, nó đã ghi có vào tài khoản của kẻ tấn công
4 Kẻ tấn công đã nhanh chóng bán ETC trên sàn giao dịch, chuyển đổi thành USDT, BTC hoặc các tài sản khác, và rút tiền.
5 Trong khi đó, kẻ tấn công tiếp tục khai thác riêng một chuỗi dài hơn không bao gồm giao dịch nạp
6 Khi chuỗi dài hơn này được công bố lên mạng, mạng đã chấp nhận chuỗi chính mới, và chuỗi nạp mà sàn giao dịch đã thấy đã bị hoàn tác
Kết quả của mô hình tấn công này: Số tiền nạp đã được “xác nhận” trong hồ sơ của sàn giao dịch đã biến mất, nhưng kẻ tấn công đã rút trước đó các tài sản đã được chuyển đổi, hoàn tất giao dịch chi tiêu kép.
 
Trường hợp này minh họa một sự thật quan trọng: Ngay cả khi một giao dịch đã nằm trên blockchain, nếu độ an toàn của mạng nền tảng không đủ hoặc kẻ tấn công có khả năng sắp xếp lại các khối, giao dịch vẫn có thể bị hoàn tác. Tính “kết thúc” của một giao dịch blockchain không hoàn toàn tức thì — nó được củng cố dần dần khi số lần xác nhận tăng lên.

🛡️ Cách tránh các cuộc tấn công chi tiêu gấp đôi trong quá trình giao dịch

Ngăn chặn các cuộc tấn công chi tiêu hai lần không phải dựa vào “ảnh chụp màn hình của bên kia” hay “hash giao dịch tồn tại” — mà là về việc thiết lập các cơ chế xác nhận và kiểm soát rủi ro phù hợp.

Đầu tiên, đừng xem "Broadcast" là "Đã nhận"

Một người dùng nhìn thấy trạng thái “đã gửi” trong ví của họ, hoặc bên đối tác cung cấp mã giao dịch, không có nghĩa là tiền đã an toàn. Việc phát sóng chỉ có nghĩa là giao dịch đã bước vào giai đoạn lan truyền trên mạng — không có nghĩa là đã được xác nhận bởi một khối. Các hành động như ghi có khoản nạp, giải phóng coin, giao hàng hoặc cung cấp dịch vụ không thể dựa trên trạng thái Đang chờ.

Thứ hai, bạn phải xác minh trạng thái xác nhận trên chuỗi

Để đánh giá xem một giao dịch có đáng tin cậy hay không, ít nhất hãy kiểm tra:
  • Giao dịch đã được đóng gói vào một khối chưa
  • Số lần xác nhận hiện tại là bao nhiêu
  • Giao dịch có mang rủi ro thay thế bất thường, xung đột giao dịch hoặc bị loại bỏ hay không
Đối với các tình huống rủi ro cao, đừng chỉ xem xét “giao dịch có tồn tại hay không” — hãy xem xét “việc xác nhận có ổn định hay không”.

Thứ ba, thiết lập số lần xác nhận hợp lý dựa trên mức độ rủi ro của chuỗi

Các blockchain khác nhau có mức độ bảo mật khác nhau. Các chuỗi chính có sức mạnh băm cao khác biệt đáng kể so với các chuỗi vốn hóa nhỏ, sức mạnh băm thấp về chi phí để chịu một cuộc tấn công 51% hoặc tái tổ chức chuỗi. Đối với các chuỗi rủi ro cao hơn, các nền tảng nên tăng ngưỡng xác nhận nạp; đối với các giao dịch lớn, cũng nên đặt yêu cầu xác nhận cao hơn — không nên áp dụng cách tiếp cận một kích cỡ phù hợp tất cả.

Bốn, Áp dụng giám sát kiểm soát rủi ro đối với hành vi nạp bất thường

Các hành vi sau đây sẽ kích hoạt việc xem xét bổ sung:
 
Hành vi bất thường Giải thích rủi ro
Nhiều khoản nạp lớn tiếp theo là bán nhanh và rút tiền trong thời gian ngắn Con đường tấn công chi tiêu kép điển hình
Nạp thường xuyên bằng các đồng tiền có mức bảo mật yếu trong quá khứ Các chuỗi có sức mạnh băm thấp có chi phí tấn công thấp
Yêu cầu rút tài sản ngay lập tức sau khi đạt số lần xác nhận tối thiểu Có thể khai thác lỗ hổng xác nhận không đủ
Giao dịch có độ trễ bất thường, dấu hiệu xung đột hoặc trạng thái không ổn định trên các Nhà thám hiểm blockchain Có thể đang xảy ra tái tổ chức chuỗi
Các hành vi này thường khớp chặt chẽ với các mô hình hoạt động của các cuộc tấn công chi tiêu gấp đôi.

Thứ năm, đừng tin vào ảnh chụp màn hình thanh toán hoặc trạng thái một trang duy nhất

Ảnh chụp màn hình là dễ bị làm giả và dễ gây hiểu lầm nhất. Dù là đối với thanh toán cho bên chấp nhận thanh toán, giao dịch OTC, hay kiểm tra nạp tiền, luôn dựa vào Nhà thám hiểm blockchain và xác minh kiểm soát rủi ro hệ thống — không phải tin nhắn trò chuyện, ảnh chụp màn hình thanh toán hoặc lời nói miệng.

Thứ sáu, hiểu rằng "không thể hoàn tác" không có nghĩa là "tức thì"

Một khi giao dịch blockchain đạt đủ số lần xác nhận, nó thường rất khó để hoàn tác. Nhưng khi số lần xác nhận chưa đủ, giao dịch vẫn có thể thay đổi do phân nhánh, tắc nghẽn, thay thế hoặc tái tổ chức chuỗi. Sai lầm phổ biến nhất trong giáo dục bảo mật là hiểu “giao dịch blockchain là không thể hoàn tác” nghĩa là “một khi đã gửi, thì tuyệt đối an toàn.” Đây chính là khoảng cách nhận thức cho phép các cuộc tấn công chi tiêu gấp đôi thành công.

💎 Mẹo bảo mật cho người dùng thông thường và các nền tảng

Đối với người dùng thông thường, điều quan trọng nhất là không giao hàng, tài sản kỹ thuật số hoặc dịch vụ trước khi xác nhận. Đặc biệt trong các giao dịch ngoại hối, chuyển khoản ngang hàng và thanh toán với người lạ — chỉ nhìn vào ảnh chụp màn hình mà không kiểm tra xác nhận sẽ mang rủi ro cực kỳ cao.
 
Đối với các bên chấp nhận thanh toán và nền tảng, sự bảo vệ thực sự hiệu quả không phải là “kinh nghiệm thủ công” mà là các cơ chế chuẩn hóa:
  • Ngưỡng xác nhận rõ ràng
  • Các cấp độ rủi ro được phân biệt theo chuỗi
  • Xác định các đường dẫn rút tiền bất thường
  • Gia hạn thời gian xem xét đối với các khoản nạp tài sản rủi ro cao
  • Tăng cường cảnh giác với các đồng tiền có lịch sử tái tổ chức hoặc các cuộc tấn công 51%

Kết luận

Hạt nhân của một cuộc tấn công chi tiêu kép không phải là “một tin tặc sao chép một đồng tiền” — mà là một kẻ tấn công khai thác các giao dịch chưa được xác nhận ổn định để tạo ra ảo giác “đã thanh toán” trong một quy trình kinh doanh. Sự cố ETC năm 2019 đã chứng minh rằng, miễn là chuỗi cơ sở vẫn có khả năng tái tổ chức, các giao dịch chưa được xác nhận đầy đủ không nên được coi là đã nhận cuối cùng.
 
Nguyên tắc cơ bản của các giao dịch an toàn được tóm gọn trong một câu:
 
Hãy xem xét các xác nhận, không phải ảnh chụp màn hình; hãy xem xét tính cuối cùng, không phải trạng thái bề ngoài.
Số lần xác nhận càng cao, khoảng thời gian cho một cuộc tấn công chi tiêu kép thành công càng nhỏ.

Disclaimer: The information on this page may come from third parties and does not necessarily reflect KuCoin’s views. It is provided for general reference only and should not be interpreted as financial or investment advice.

Virtual asset investments may involve risk. Please carefully assess the product risks and your own risk tolerance. For more information, please refer to our Terms of Use and Risk Disclosure.