logo
  • Tin tức
  • Báo cáo
  • Sự kiện
  • Nổi bật
  • Coin68 TV
  • E-Magazine
  • Góc nhìn
  • Báo cáo
  • Sự kiện
  • Nổi bật
  • Coin68 TV
  • E-Magazine
  • Góc nhìn

Lỗi tràn số trong AMM là nguyên nhân khiến Cetus bị hack 223 triệu USD

-26/05/2025

Dedaub xác nhận nguyên nhân vụ hack sàn DEX Cetus nằm ở lỗi tràn số trong hàm tính thanh khoản của AMM, chứ không phải do bất kỳ sai sót nội bộ nào từ đội ngũ Cetus hay Sui.

Lỗi tràn số trong AMM là nguyên nhân khiến Cetus bị hack 223 triệu USD

Như Coin68 đưa tin, vào ngày 22/05 vừa qua, giao thức AMM DEX hàng đầu hệ Sui là Cetus Protocol đã bị tin tặc khai thác lỗ hổng, gây thiệt hại hơn 223 triệu USD, trở thành một trong những vụ tấn công DeFi nghiêm trọng nhất trong năm 2025.

Ban đầu, Giám đốc công nghệ của HackenProof cho rằng kẻ tấn công có thể đã dùng token giả để swap, thêm thanh khoản gần bằng 0 nhằm thao túng pool, rồi liên tục rút thanh khoản để chiếm đoạt SUI/USDC thật mà không cần tài sản thực. 

Tuy nhiên, báo cáo kỹ thuật chính thức từ công ty bảo mật Dedaub đã bác bỏ giả thuyết trên và khẳng định nguyên nhân gốc rễ đến từ một lỗi tràn số (overflow). Lỗi này nằm trong hàm get_delta_a của thư viện clmm_math.move, nơi hệ thống kiểm tra sai điều kiện tính toán, dẫn đến việc cấp lượng thanh khoản khổng lồ chỉ với 1 token, tạo điều kiện cho hacker rút sạch tài sản khỏi pool.

Trong lập trình, tràn số (overflow) xảy ra khi một phép tính tạo ra kết quả vượt quá giới hạn lưu trữ của dữ liệu. Hãy tưởng tượng bạn có một cái đồng hồ đếm giờ từ 0 đến 999. Khi đồng hồ đếm tới 999 và tiếp tục cộng thêm 1, nó không thể hiển thị 1000 vì bộ đếm chỉ cho phép tối đa 3 chữ số. Lúc này, đồng hồ sẽ quay về 000 và hiện tượng đó gọi là tràn số.

Trong trường hợp của Cetus, lỗi tràn số xảy ra khi hệ thống tính sai lượng thanh khoản người dùng nên nhận. Kẻ tấn công lợi dụng lỗ hổng này để nhập một con số cực lớn vào hệ thống, khiến nó hiểu nhầm rằng chỉ cần 1 token cũng có thể mở ra một vị thế thanh khoản trị giá hàng trăm triệu USD.

Thông thường, khi người dùng muốn thêm token vào pool thanh khoản của Cetus, hệ thống sẽ tính toán xem họ đã nạp bao nhiêu token và đổi lại sẽ nhận được bao nhiêu phần trăm thanh khoản tương ứng trong pool.

Tuy nhiên, vấn đề lại phát sinh ở hàm get_delta_a, khi hacker cố tình nhập vào một giá trị thanh khoản (liquidity) cực lớn, tức số lượng thanh khoản mà họ “muốn nhận lại”. Con số này lớn đến mức vượt quá khả năng xử lý của hàm tính toán.

Theo Dedaub, dù thường gọi là lỗi “tràn số” (overflow), nhưng thực chất nguyên nhân đến từ việc hàm kiểm tra tràn số bị viết sai. Cụ thể, các con số vượt ngưỡng 192 bit lẽ ra phải bị hệ thống chặn lại, thì nay lại lọt qua một cách âm thầm mà không có cảnh báo nào.

Khi hacker nhập vào một giá trị “liquidity” cực lớn, hệ thống thực hiện phép nhân với các tham số giá. Nhưng do kiểm tra sai, phần bit quan trọng nhất trong kết quả đã bị cắt mất, khiến hệ thống tính sai nghiêm trọng. Thay vì yêu cầu hàng triệu token để nhận thanh khoản, hệ thống tưởng nhầm chỉ cần 1 token là đủ.

Từ đó, hệ thống hiểu lầm rằng người dùng chỉ cần nạp 1 token nhỏ xíu cũng có thể nhận được một lượng thanh khoản khổng lồ trị giá hàng trăm triệu USD. Cụ thể, dưới đây là cách hacker thực hiện vụ tấn công:

  • Mượn nhanh 10 triệu haSUI mà không cần thế chấp.

  • Hacker dùng số tiền mượn này để tạo một vị thế cung cấp thanh khoản ở vùng giá cực kỳ hẹp, cụ thể là khoảng [300000–300200].

  • Hacker sau đó đưa vào đúng 1 đơn vị token để gửi vào vị thế nhưng vì lỗi hệ thống tính sai, kẻ tấn công lại nhận được một lượng thanh khoản khổng lồ (hơn 10 triệu tỷ tỷ) do lỗi “cắt mất phần số quan trọng” (bitwise truncation) khiến hệ thống hiểu nhầm giá trị.
  • Hacker lập tức rút toàn bộ lượng thanh khoản "ảo" này ra khỏi pool.

  • Sau khi rút hết tiền, hacker trả lại 10 triệu haSUI đã mượn lúc đầu và vẫn lời khoảng 5,7 triệu SUI.

Điều đáng nói là lỗi này từng được phát hiện và sửa trong phiên bản cũ trên Aptos từ năm 2023. Nhưng khi đội ngũ Cetus chuyển mã sang mạng Sui, họ vô tình đưa lỗi trở lại. Cả hai công ty kiểm toán trước đó là Ottersec và Zellic đều không phát hiện ra lỗ hổng này trong bản mã mới, dù đã tiến hành kiểm tra.

Mặc dù vậy, quyết định đóng băng tài sản bị đánh cắp sau vụ hack Cetus đã tạo ra làn sóng tranh cãi trong cộng đồng crypto. Nhiều người ủng hộ tính phi tập trung tỏ ra bất bình khi các validator mạng Sui can thiệp trực tiếp vào giao dịch của người dùng. Người dùng @ItsDave_ADA viết trên X:

“Các validator trên mạng Sui đang chủ động chặn giao dịch trên toàn bộ blockchain. Hành động này cho thấy Sui đã đi ngược lại hoàn toàn với tinh thần phi tập trung, biến cả mạng lưới thành một hệ thống tập trung có kiểm soát."

Người dùng @buytheirsouls cũng lên tiếng châm biếm trên X ngày 23/05:

“Thật mỉa mai khi nhiều dự án mang danh nghĩa Web3 nhưng lại nghiêng hẳn về hướng tập trung, dù luôn miệng nói rằng mình kế thừa tinh thần phi tập trung của Bitcoin.”

Tại thời điểm viết bài, đà giảm của CETUS vẫn chưa có dấu hiệu dừng lại, ghi nhận mức giảm gần 50% từ mức 0,245 USD vào ngày 22/05 xuống còn 0,138 USD vào ngày 26/05. 

Biến động giá CETUS trong 7 ngày qua, ảnh chụp màn hình trên CoinGecko lúc 12:20 PM ngày 26/05/2025

Coin68 tổng hợp

-26/05/2025
logo-footer
Kết nối với chúng tôi
    Coin68 là nơi cung cấp cái nhìn tổng quan nhanh và chính xác nhất về tiến bộ công nghệ blockchain trên toàn cầu.
      Copyright © 2016 by Coin68