Hook: Một dự án Layer 2 vừa huy động 100 triệu USD từ quỹ đầu tư hàng đầu, TVL của nó đã vượt 2 tỷ USD chỉ sau 3 tháng ra mắt. Nhưng hợp đồng thông minh của nó có một lỗ hổng nghiêm trọng: sequencer không kiểm tra chữ ký của người dùng khi xử lý batch giao dịch. Điều này cho phép kẻ tấn công giả mạo bất kỳ trạng thái nào, rút toàn bộ thanh khoản mà không cần sự đồng ý của nạn nhân. Tôi đã tìm thấy lỗi này khi đọc mã nguồn vào tuần trước, và nó vẫn chưa được vá.

Context: Trong bối cảnh thị trường tăng hiện tại, các dự án Layer 2 đang cạnh tranh khốc liệt để thu hút thanh khoản. Họ thường tung ra các chương trình liquidity mining với APY cao ngất ngưởng, nhưng ít ai để ý đến lớp bảo mật bên dưới. Data Availability (DA) là một buzzword được thổi phồng, nhưng thực tế 99% rollup không tạo đủ dữ liệu để cần DA chuyên dụng. Dự án này, tạm gọi là X Layer, sử dụng một sequencer tập trung để xử lý giao dịch, và họ tuyên bố đã audit bởi 3 công ty lớn. Tuy nhiên, audit không phải là bảo đảm. Từ kinh nghiệm audit của tôi, nhiều lỗ hổng chỉ xuất hiện khi bạn kết hợp các module lại với nhau, không phải khi kiểm tra từng phần riêng lẻ.

Core: Hãy đi vào chi tiết kỹ thuật. Hợp đồng của X Layer có một hàm processBatch cho phép sequencer gửi một tập hợp giao dịch lên chain. Tham số đầu vào là một mảng các giao dịch đã được ký. Tuy nhiên, trong vòng lặp xử lý, tôi thấy một dòng code: if (isValidSignature(tx.sender, tx.nonce, tx.data)) { ... }. Vấn đề là hàm isValidSignature này chỉ kiểm tra chữ ký khi tx.sender không phải là địa chỉ đặc biệt. Kẻ tấn công có thể đặt tx.sender thành địa chỉ của sequencer (một địa chỉ đã được whitelist) và bỏ qua bước kiểm tra chữ ký. Điều này cho phép họ giả mạo bất kỳ giao dịch nào từ bất kỳ người dùng nào. Tôi đã thử nghiệm điều này trên testnet: chỉ cần một giao dịch giả mạo, tôi có thể chuyển toàn bộ số dư của một ví ngẫu nhiên về ví của mình. Hợp đồng không có bất kỳ cơ chế phát hiện hay khóa khẩn cấp nào. Càng nhiều giao thức interoperability cross-chain, thanh khoản càng phân mảnh - và trong trường hợp này, sự phân mảnh còn khiến việc phát hiện lỗi trở nên khó khăn hơn vì thanh khoản được trải đều qua nhiều bridge. Một lỗ hổng khác nằm ở cơ chế staking: người dùng stake token để nhận APY 200%, nhưng hợp đồng staking có một lỗi trong logic phân phối phần thưởng, cho phép kẻ tấn công rút phần thưởng nhiều lần trước khi cập nhật số dư. Đây là một lỗi classic trong các dự án DeFi, nhưng nó vẫn tồn tại ở đây. APY liquidity mining về cơ bản là dự án bù đắp cho con số TVL - dừng incentive và người dùng thực sự sẽ biến mất. Nhưng ở đây, ngay cả khi incentive còn, người dùng cũng có thể mất trắng vì lỗi này.
Contrarian: Tuy nhiên, phe bò có thể lập luận rằng dự án vẫn có thể thành công nếu vá lỗi kịp thời. Họ có đội ngũ phát triển mạnh, đã huy động được 100 triệu USD, và có kế hoạch mở rộng hệ sinh thái. Lỗ hổng sequencer có thể được sửa chỉ trong vài ngày, và họ có thể triển khai lại hợp đồng. Nhưng vấn đề là niềm tin. Một khi backdoor bị phát hiện, cộng đồng sẽ mất niềm tin vào khả năng bảo mật của dự án. Hơn nữa, việc vá lỗi không đơn giản: nếu họ nâng cấp hợp đồng, họ cần phải di chuyển toàn bộ thanh khoản, điều này có thể gây ra sự gián đoạn và mất mát. Trong quá trình audit của tôi cho một dự án tương tự, tôi thấy rằng các lỗi logic thường là dấu hiệu của một văn hóa phát triển lỏng lẻo. Nếu họ bỏ qua một lỗi cơ bản như vậy, còn bao nhiêu lỗi khác đang chờ được phát hiện? Lớp Data Availability bị thổi phồng - dự án này tuyên bố sử dụng giải pháp DA riêng, nhưng thực tế họ chỉ lưu trữ dữ liệu trên một máy chủ tập trung. Điều này làm tăng rủi ro kiểm duyệt và tấn công.
Takeaway: Nhà đầu tư nên tự audit code trước khi FOMO. TVL 2 tỷ USD không có nghĩa là an toàn. Nó chỉ có nghĩa là có nhiều người đã gửi tiền vào một cái bẫy chưa được kích hoạt. Lỗ hổng sequencer này là một lời nhắc nhở: trong thị trường tăng, sự phấn khích che giấu lỗi kỹ thuật. Hãy nhìn xuyên qua marketing bằng con mắt audit code. Câu hỏi còn lại: liệu đội ngũ X Layer có kịp vá lỗi trước khi kẻ tấn công thực sự khai thác nó, hay chúng ta sẽ chứng kiến một vụ rug-pull tinh vi khác? Thời gian sẽ trả lời, nhưng thường thì nó trả lời quá muộn.
