Quay lại Tiêu điểm
Bài chuyên sâuCrypto

Term Finance có timelock bảy ngày và quyền phủ quyết của LP. Chính lớp bọc quản trị bao quanh chúng lại trở thành bề mặt tấn công.

Hai công ty an ninh ước tính khoản thất thoát khoảng 8,5 triệu USD. Term Labs đã xác nhận có lỗ hổng quản trị bị khai thác, nhưng chưa xác nhận con số, chưa nói vai trò nào bị lạm dụng, và chưa giải thích vì sao độ trễ một tuần cùng quyền phủ quyết của người gửi tiền không ngăn được. Dưới đây là những gì đã được xác lập, những gì mới là ước tính, và những gì chưa ai nói.

Minh họa biên tập: một kho nguyên vẹn nằm trong các lớp quản trị trong suốt, còn một tuyến kiểm soát đi vòng ra mô-đun bên ngoài.
Minh họa biên tậpMinh họa biên tập: một kho nguyên vẹn nằm trong các lớp quản trị trong suốt, còn một tuyến kiểm soát đi vòng ra mô-đun bên ngoài.

Một giao thức đã ghi rõ trong tài liệu rằng mọi hành động quản trị phải qua độ trễ bảy ngày, và trao cho các nhà cung cấp thanh khoản quyền phủ quyết những giao dịch đang xếp hàng, vậy mà vẫn mất quyền kiểm soát các kho tài sản của mình. Chính sự kết hợp đó — kiểm soát mạnh trên giấy, lỗ hổng quản trị bị khai thác thành công trên thực tế — mới là lý do sự cố này đáng giá hơn con số USD của nó.

Những gì đã được xác nhận. Term Labs công khai thừa nhận sự cố, cho biết họ đã nắm được việc một lỗ hổng quản trị ảnh hưởng đến các kho Term và sẽ bổ sung chi tiết sau khi điều tra. Họ không nêu tên các kho bị ảnh hưởng và không xác nhận con số thiệt hại. The Block đưa tin về vụ khai thác vào Chủ nhật ngày 23/8, mô tả việc ether và stablecoin bị chuyển ra khỏi các Strategy Vault của giao thức mà không có ủy quyền hợp lệ.

Những gì mới là ước tính, và do ai đưa ra. PeckShield truy vết khoảng 2.843 ETH — tương đương chừng 6,9 triệu USD tại thời điểm đó — cộng với 1,68 triệu USDC, sau đó được chuyển đổi sang DAI. CertiK đưa tổng mức thiệt hại vào khoảng 8,5 triệu USD. Đó là hai ước tính on-chain độc lập, không phải khoản lỗ đã được kiểm toán hay được giao thức xác nhận, và sự phân biệt này rất quan trọng với bất kỳ ai đang mô hình hóa khả năng thu hồi: truy vết on-chain đo lượng tài sản đã rời khỏi một địa chỉ, chứ không đo phần cuối cùng không thể thu hồi, và nó có thể được điều chỉnh. The Block ghi nhận tổng giá trị khóa trước đó khoảng 12,45 triệu USD trên các chuỗi, trong đó khoảng 8,8 triệu USD nằm trên Ethereum — bối cảnh cho thấy đây là một giao thức nhỏ mất một tỷ trọng lớn tài sản, chứ không phải một sự kiện mang tính hệ thống.

Cái gì bị tấn công, và cái gì không. Các hợp đồng bị ảnh hưởng là Strategy Vault của Term, tức các kho token hóa theo chuẩn ERC-4626 dựng trên hạ tầng Yearn V3. Yearn cho biết vụ khai thác diễn ra qua một lớp bọc quản trị tùy chỉnh, tách biệt với vận hành tiêu chuẩn của Yearn. Đây là dữ kiện dễ bị đọc sai nhất trong một sự cố có hình dạng như vậy: bên dưới đúng là hạ tầng kho dùng chung, nhưng bề mặt bị khai thác lại là lớp phân quyền đặt riêng nằm bên trên. Không có gì trong hồ sơ hiện có ủng hộ khẳng định rằng các kho Yearn tiêu chuẩn đã bị xâm phạm, và bài này cũng không nên được hiểu theo nghĩa đó.

Những kiểm soát vốn đã tồn tại. Tài liệu dành cho nhà phát triển của chính Term mô tả một thiết kế phân lớp có chủ đích. Hai vai trò được tách bạch: manager thực thi các nghiệp vụ đấu giá và quản lý chào giá; governor giám sát các hành động quản trị, cấu hình tham số rủi ro và các kiểm soát khẩn cấp — bao gồm đặt ngưỡng thời gian đến hạn, tỷ lệ dự trữ, giới hạn tập trung, yêu cầu tài sản thế chấp và danh sách chặn token. Hành động quản trị không thực thi trực tiếp. Đường đi được ghi trong tài liệu chạy từ Proposer Safe, qua Zodiac Delay Module mang timelock bảy ngày, tới Governor Safe, rồi mới đến kho. Trong thời gian trễ, các nhà cung cấp thanh khoản của kho đóng vai trò thành viên DAO, với quyền được ghi nhận là xem xét đề xuất đang xếp hàng và bỏ phiếu bỏ qua nó — vô hiệu hóa giao dịch trong Delay Module trước khi nó kịp thực thi.

Trên giấy, đó là một thiết kế mạnh. Một tuần là khoảng thời gian dài để nhận ra một thay đổi tham số mang tính thù địch, và trao quyền phủ quyết cho chính những người có tiền trong đó là đúng đối tượng.

Đường đi quản trị được ghi trong tài liệu của Term Strategy Vault: Proposer Safe, rồi Zodiac Delay Module với timelock bảy ngày mà trong đó LP của kho có thể bỏ phiếu bỏ qua giao dịch, rồi Governor Safe, rồi tới kho. Attacker đã đi qua bước nào thì chưa được công bố.
Minh họa biên tậpĐường đi quản trị được ghi trong tài liệu của Term Strategy Vault: Proposer Safe, rồi Zodiac Delay Module với timelock bảy ngày mà trong đó LP của kho có thể bỏ phiếu bỏ qua giao dịch, rồi Governor Safe, rồi tới kho. Attacker đã đi qua bước nào thì chưa được công bố.

Những gì chưa ai nói. Term chưa công bố attacker đã giành được vai trò nào, độ trễ bảy ngày có nằm trên đường đi của những giao dịch rút cạn kho hay không, và vì sao quyền phủ quyết của LP không được kích hoạt. Mỗi khả năng hàm ý một bài học khác nhau, và chúng không thể thay thế cho nhau. Nếu timelock có nằm trên đường đi và chỉ đơn giản hết hạn mà không ai phản đối, thất bại thuộc về giám sát và mức độ tham gia — cơ chế vẫn hoạt động, chỉ là không ai dùng. Nếu dòng rút tiền đi qua một đường mà Delay Module không quản, thất bại thuộc về phạm vi: một kiểm soát không bao phủ mọi tuyến đặc quyền thì không phải là kiểm soát đối với cái kho, mà chỉ với một phần của nó. Nếu một vai trò được chuyển giao hoặc giành lấy theo cách khiến attacker trở nên hợp lệ trong mắt hệ thống, thì timelock và quyền phủ quyết đã vận hành đúng như thiết kế, chỉ là phục vụ nhầm người chủ. Cho đến khi Term công bố báo cáo hậu sự cố nêu rõ đường đi, coi bất kỳ giả thuyết nào trong ba giả thuyết trên là đã xác lập đều là phỏng đoán.

PeckShield cho biết dòng tiền chảy về một địa chỉ duy nhất, ban đầu được nạp 2 ETH rút từ Tornado Cash. Điều đó cho thấy chiến dịch có chi phí khởi động rất thấp và đã chuẩn bị để chống truy vết quy trách nhiệm. Nhưng nó không nói gì về việc trong ba chế độ thất bại nêu trên, cái nào đã thực sự xảy ra.

Bài học về thiết kế kiểm soát. Điểm có thể khái quát hóa không phụ thuộc vào việc giải xong câu hỏi đó, nên đáng nói ngay bây giờ. Độ trễ không phải là phòng thủ; nó là cơ hội để phòng thủ, và chỉ chuyển hóa thành phòng thủ khi có người thực sự theo dõi hàng đợi, đồng thời vừa đủ năng lực vừa đủ động cơ để hành động trong cửa sổ đó. Quyền phủ quyết phân tán cho các nhà cung cấp thanh khoản mang theo một điều kiện tham gia mà hợp đồng thông minh không thể cưỡng chế: những người gửi tiền phân tán trong một giao thức quy mô như vậy không phải là một đội an ninh trực chiến. Và một lớp bọc quản trị có quyền gán vai trò trên kho vẫn là một phần biên giới tin cậy của chính cái kho đó, ngay cả khi bản thân kho đã được rà soát kỹ — tính kết hợp đẩy bề mặt tấn công về đúng lớp nào ít được soi nhất, và một lớp phân quyền viết riêng cho một giao thức gần như luôn là lớp đó.

Hệ quả khó chịu cho người đọc đang đánh giá bất kỳ sản phẩm kho được tuyển chọn nào: tình trạng kiểm toán của chuẩn kho nền tảng không đồng nghĩa với mức an toàn của lần triển khai cụ thể. Câu hỏi cần đặt ra là: hợp đồng nào có thể thay đổi tham số của kho hoặc dịch chuyển tài sản của nó, cơ chế nào làm trễ đường đi đó, và trên thực tế ai đang theo dõi trong thời gian trễ.

Các mốc cần theo dõi. Thứ nhất, báo cáo hậu sự cố của Term Labs có nêu tên vai trò bị chiếm và nói rõ timelock có nằm trên đường bị khai thác hay không — riêng công bố đó đã tách bạch được ba chế độ thất bại. Thứ hai, số ETH và khoảng 1,68 triệu DAI có dịch chuyển tiếp hay không, và có diễn ra thu hồi hoặc thương lượng nào không, vì điều đó sẽ làm thay đổi các con số ước tính. Thứ ba, hai ước tính của hai công ty an ninh sẽ hội tụ hay được điều chỉnh khi toàn bộ tập giao dịch được tái dựng. Thứ tư, các giao thức khác đang chạy lớp bọc quản trị tùy chỉnh trên hạ tầng kho dùng chung có công bố rà soát các tuyến đặc quyền của chính họ hay không — đó mới là phản ứng khiến sự cố này đáng với cái giá của nó đối với thị trường rộng hơn.