Tác giả: Phòng thí nghiệm Mã hóa Chain析
Nguyên nhân của vụ tấn công bắt nguồn từ một đề xuất quản trị (MIP-X43), đề xuất này đã kích hoạt cấu hình Chainlink oracle mới trên thị trường Moonwell của mạng Base và Optimism. (Lưu ý: Oracle là công cụ lấy dữ liệu thời gian thực trước khi dữ liệu đó được gửi lên blockchain)

Trong các giao thức vay mượn như Moonwell, người dùng gửi vào các tài sản như cbETH làm tài sản thế chấp để vay các token khác. Nếu thị trường giảm giá, giá trị tài sản thế chấp giảm xuống, khi giá trị tài sản thế chấp < nợ, robot sẽ tự động thanh lý vị thế (tổng số vốn của người dùng), trả nợ và giữ lại tài sản thế chấp với giá chiết khấu.

Trước khi sự kiện xảy ra, thị trường cbETH của Moonwell có lượng vốn lớn, nhiều tài sản thế chấp, nhưng việc kiểm thử oracle chưa đầy đủ, thiếu một bước nhân, dẫn đến giá bị sai lệch nghiêm trọng, rủi ro bị phóng đại đột ngột.
Sự kiện lần này là vụ cố tình gây ra sự cố an ninh trên chuỗi đầu tiên do Vibe Coding (công cụ hỗ trợ lập trình AI) gây ra, trung tâm của vấn đề là một lỗ hổng cấu hình oracle sơ đẳng nhưng chết người.

1. Nguyên nhân của lỗ hổng
Nguyên nhân gốc rễ của vụ việc là do oracle định giá sai tài sản cbETH. cbETH là token staking có tính thanh khoản cao, giá trị của nó bao gồm phần thưởng staking tích lũy. Trong điều kiện bình thường, 1 cbETH có thể quy đổi khoảng 1.12 ETH.

Vì vậy, công thức tính giá USD chính xác của cbETH là:
Giá USD của cbETH = (tỷ lệ quy đổi cbETH/ETH) × (giá ETH/USD)
Ví dụ: Giả sử 1 cbETH ≈ 1.12 ETH, và 1 ETH ≈ 2200 USD, thì giá trị thực của 1 cbETH sẽ là khoảng 2464 USD.
Tuy nhiên, trong mã do AI Claude sinh ra, do thiếu kiểm tra logic hoàn chỉnh, đã sai khi trực tiếp lấy nguồn giá cbETH trỏ tới cbETHETH_ORACLE. Nguồn dữ liệu này chỉ cung cấp tỷ lệ quy đổi cbETH/ETH (khoảng 1.12), không thể lấy giá ETH/USD.

Sai sót này bỏ qua bước nhân quan trọng, khiến chương trình hiểu nhầm “tỷ lệ” chính là “giá trị USD”. Tài sản có giá trị hơn 2400 USD ban đầu, trong hệ thống lại bị ghi nhận là 1.12 USD, giảm giá nghiêm trọng hơn 99.9%, chênh lệch gần 2000 lần.
2. Phân tích vụ tấn công
Việc hệ thống đánh giá thấp giá trị tài sản đã dẫn đến nhiều vị thế thế chấp của người dùng bình thường bị hệ thống hiểu nhầm là “không đủ khả năng thanh toán”. Quá trình khai thác lỗ hổng diễn ra cực kỳ hiệu quả, rõ ràng mang đặc điểm tự động hóa cao:
Ngày 16 tháng 2 năm 2026, lúc 2:01 sáng UTC+8: đề xuất MIP-X43 được thực thi, oracle cbETH sai cấu hình trên chuỗi Base được kích hoạt.

Robot thanh lý trên chuỗi theo dõi các cơ hội lợi nhuận, bằng cách vay nhanh qua flashloan một lượng nhỏ USDC với chi phí cực thấp, để trả nợ cho người vay (vì hệ thống cho rằng 1 cbETH chỉ trị hơn 1 USD), từ đó nắm quyền thanh lý.

Sau khi thu giữ tài sản thế chấp cbETH có giá trị thực cao, robot lập tức bán ra trên DEX theo giá thị trường để kiếm lời. Nhiều robot đã hoạt động vòng vòng trong vài phút, tổng cộng đã thu giữ 1.096,317 cbETH.

Cuộc tấn công này không phải do hacker có chủ đích, mà chỉ là các robot thanh lý thực thi mã ngu ngốc. Không có “kẻ trộm” theo nghĩa truyền thống, vậy số tiền 1,78 triệu USD bốc hơi này rốt cuộc rơi vào tay ai? Câu trả lời phụ thuộc vào dòng chảy của tiền sau đó.
Vì không có hacker theo kiểu truyền thống, số tiền 1,78 triệu USD bốc hơi này thực ra rơi vào tay ai?
Tiền đã đi đâu?
Câu trả lời là: Các nhà arbitrage đứng sau việc triển khai robot thanh lý.
Các robot thanh lý không tự nhiên sinh ra, mà do các lập trình viên hoặc nhóm định lượng (gọi là MEV searchers) viết và triển khai các script tự động trên chuỗi. Khi hệ thống vì AI bỏ quên một dấu nhân, bán tài sản trị 2400 USD với giá hơn 1 USD như rác rưởi, thì các robot săn mồi này lập tức bắt được cơ hội.

Chúng tự động giúp người dùng trả nợ khoản nợ hơn 1 USD, cướp lấy tài sản thế chấp giá trị cao rồi bán ra theo giá thị trường thật. Cuối cùng, khoản chênh lệch gần 1,78 triệu USD này đều chảy vào ví cá nhân của chủ robot. Họ đã lợi dụng lỗ hổng hệ thống, hợp pháp và hợp lệ, để rút tiền hàng triệu USD.
Trong vụ việc này, hệ thống đã thiệt hại tổng cộng 11 loại tài sản, số tiền thiệt hại cụ thể như sau:

Sau khi xảy ra, đội ngũ Moonwell đã nhanh chóng tạm dừng các chức năng vay mượn và thanh lý, đồng thời gấp rút trình các đề xuất sửa lỗi mới, cấu hình lại tham số oracle. Để lấy lại niềm tin, họ buộc phải dùng quỹ dự trữ, tự bỏ tiền ra bù đắp khoản nợ xấu 1,78 triệu USD, và đền bù toàn bộ cho các người dùng vô tội bị thanh lý.

Sau vụ việc, phần lớn dư luận đều đổ lỗi “Claude viết ra lỗ hổng chết người”, nhưng khách quan mà nói, đổ tội cho AI về khoản 1,78 triệu USD này cũng có phần oan uổng.
Lỗ hổng này hoàn toàn không phải là một lỗ hổng phức tạp, mà là một lỗi cực kỳ đơn giản — thiếu một dấu nhân trong phép nhân.
Thành thật mà nói, lỗi sơ đẳng kiểu này, dù là con người viết code, cũng có thể mắc phải.
Điều thực sự chết người là toàn bộ quy trình kiểm duyệt dự án gần như không có. Trước khi ra mắt, không ai kiểm tra thủ công xem “giá có hợp lý không”. Nếu bạn đưa ra đúng lệnh, AI hoàn toàn có thể giúp bạn viết rõ ràng các test case để phòng tránh lỗi.
Vì vậy, bài học lớn nhất rút ra từ vụ này không phải là “AI không thể viết code”, mà là con người vì muốn nhanh mà bỏ qua các bước kiểm duyệt quan trọng nhất.
Dù AI có tốt đến đâu, có mạnh đến đâu, nó cũng không có khái niệm về tiền thật, và không thể chịu trách nhiệm. AI mãi mãi không thể thay thế con người, nó chỉ là một công cụ cực kỳ hữu ích, người dùng AI là chính, chứ không phải AI ra lệnh và con người theo sau.
Năm, Kết luận: Khi AI viết code, con người càng cần cảnh giác hơn
Vụ việc Moonwell này về bản chất không phức tạp, không có hacker hàng đầu, không lỗ hổng cao siêu, thậm chí không có tấn công phức tạp. Chỉ là AI viết nhầm một đoạn mã, và con người không để ý kiểm tra kỹ.
Nhưng trong thế giới blockchain, một sơ suất nhỏ trong code có thể là hàng triệu USD tiền thật. Trong DeFi, code chính là luật lệ, khi luật lệ đã viết vào chuỗi, thì máy móc sẽ thi hành không do dự. Khi ngày càng nhiều dự án dựa vào “Vibe Coding”, thì việc kiểm tra mã và quản lý rủi ro lại càng cần trở thành lớp phòng thủ cuối cùng.
Công nghệ có thể tự động hóa ngày càng nhiều, nhưng an toàn thì không thể tự động hóa.