Vì sao các cầu nối liên tục bị tấn công, và một mã thông báo bắc cầu thực chất là gì

·6 phút đọc·Bởi SSP Editorial Team
Ảnh bìa SSP Academy: các vụ tấn công cầu nối liên chuỗi và mã thông báo bọc

Vì sao các cầu nối liên tục bị tấn công, và một mã thông báo bắc cầu thực chất là gì

Suốt một quãng dài của năm 2021 và 2022, cầu nối liên chuỗi là thứ bị cướp đều đặn nhất trong cả thế giới tiền mã hóa. Không phải sàn giao dịch, không phải ví, cũng chẳng phải hợp đồng thông minh nói chung — mà là cầu nối.

Ronin mất khoảng 625 triệu đô la. Poly Network mất hơn 600 triệu. Wormhole mất chừng 320 triệu. Nomad mất gần 200 triệu. Ấy là hơn một tỷ rưỡi đô la chỉ trong bốn vụ, và danh sách còn dài hơn bốn.

Không vụ nào trong số đó là thất bại của Bitcoin, của Ethereum hay của bất kỳ chuỗi nền tảng nào. Hiểu được vì sao là điều hữu ích nhất bạn có thể học về cầu nối, bởi nó cho bạn biết chính xác mình đang tin vào cái gì khi dùng một cây cầu.

Các chuỗi không thể nói chuyện với nhau

Vấn đề gốc rất đơn giản và thường bị lướt qua. Bitcoin chẳng hề biết Ethereum tồn tại. Mỗi chuỗi chỉ xác thực giao dịch của chính nó và không có cơ chế nào để quan sát trạng thái của chuỗi khác. Không có cách nào sẵn có để bên này biết được điều gì đã xảy ra bên kia.

Vậy nên «gửi BTC sang Ethereum» là bất khả theo nghĩa đen. Bitcoin của bạn không thể rời khỏi Bitcoin.

Cái thực sự diễn ra là một sự thay thế. Bạn gửi BTC thật tới một địa chỉ do cầu nối kiểm soát. Cầu nối nhận thấy điều đó, và một thứ gì đó bên Ethereum phát hành cho bạn một mã thông báo đại diện cho số BTC ấy. Khi muốn ra, bạn đốt mã thông báo và cầu nối thả bản gốc ra.

Hệ quả then chốt: một mã thông báo bắc cầu không phải là tài sản. Nó là quyền đòi trên một hũ tài sản, do người vận hành cầu nối nắm giữ. Giá trị của nó đặt trọn vào việc cái hũ ấy còn ở đó và bên vận hành vẫn còn tôn trọng việc đổi lại. Nếu cái hũ bị vét sạch, mã thông báo bọc của bạn là tờ biên nhận cho hư không — và đó chính xác là điều người nắm giữ phát hiện ra trong từng vụ kể trên.

Phải có ai đó phán rằng khoản nạp đã xảy ra

Vì không chuỗi nào quan sát được chuỗi kia, phải có một bên thứ ba canh chuỗi A và chứng thực với chuỗi B rằng có một khoản nạp. Cơ chế chứng thực ấy chính là cầu nối, và đó cũng là nơi toàn bộ số tiền biến mất.

Các thiết kế khác nhau ở mức độ bạn buộc phải tin:

Một ví đa chữ ký hoặc một tập trình xác thực — một nhóm cố định những người ký, mà số phiếu đủ ngưỡng của họ cho phép giải ngân. Đơn giản, nhanh, và chỉ mạnh ngang với số khóa ít nhất có thể làm tiền dịch chuyển.

Một mô hình lạc quan — các thông điệp được mặc định là hợp lệ trừ khi bị phản đối trong một khoảng thời gian. Rẻ, nhưng phụ thuộc vào việc có ai đó thật sự đang canh và vào việc phần logic phản đối phải đúng.

Máy khách nhẹ và các bằng chứng — chuỗi đích xác minh bằng chứng mật mã về trạng thái của chuỗi nguồn. Cách tiếp cận vững nhất và cũng đắt nhất, nên nó ít phổ biến hơn mức đáng ra phải có.

Còn lại đều là biến thể. Điều quan trọng là gần như trong mọi trường hợp, chắn giữa cái hũ và kẻ tấn công chỉ là một nhóm nhỏ các bên hoặc một hàm xác minh duy nhất.

Bốn lần đổ vỡ, và điều mỗi lần dạy ta

Ronin — khóa bị chiếm, chứ không phải mã nguồn. Cầu nối dùng tập chín trình xác thực, cần năm chữ ký để chuẩn thuận một lệnh rút. Kẻ tấn công lấy được bốn khóa bằng lừa đảo có chủ đích, rồi với tới khóa thứ năm qua một bên thứ ba từng được cấp quyền ký và chưa bao giờ bị thu hồi. Năm trên chín, đủ ngưỡng, tiền được thả. Chẳng có gì bị bẻ gãy về mặt mật mã. Việc kiểm chữ ký chạy hoàn hảo — chỉ có điều nó xác minh chữ ký của kẻ tấn công.

Bài học không phải «đa chữ ký là dở». Bài học là một ngưỡng chỉ có ý nghĩa ngang bằng với mức độ độc lập của những người ký. Bốn khóa trong cùng một công ty cộng thêm một quyền cũ chưa gỡ thì không phải năm-trên-chín, mà gần với một-trên-hai khoác áo ngụy trang.

Poly Network — hợp đồng bị thuyết phục đổi chính người gác của nó. Kẻ tấn công tìm ra một đường gọi liên chuỗi cho phép đổi vai keeper — thứ quyết định thông điệp nào là chính đáng — sang một địa chỉ do hắn kiểm soát. Sau đó, mọi lệnh rút gian lận đều, xét theo hợp đồng, được chuẩn thuận đúng quy cách.

Bài học: hàm nguy hiểm nhất trong một cầu nối hiếm khi là hàm làm tiền dịch chuyển. Nó là hàm quyết định ai được phép làm điều đó.

Wormhole — bản thân phép kiểm chữ ký bị lỗi. Một thủ tục xác minh có thể bị lừa để chấp nhận một bộ chữ ký người gác giả mạo, cho phép kẻ tấn công đúc 120.000 wETH trên Solana mà chẳng có gì bên Ethereum bảo chứng.

Bài học: «đã xác minh bằng chữ ký» chẳng có nghĩa gì nếu bộ xác minh không đúng. Mật mã học thì ổn; đoạn mã bao quanh nó thì không.

Nomad — một thay đổi cấu hình mở toang cửa cho tất cả. Một lần nâng cấp thường lệ để lại một gốc tin cậy được đặt bằng giá trị không, khiến hầu như mọi thông điệp đều trông như đã được chứng minh. Vụ khai thác chẳng đòi kỹ năng gì đặc biệt: người ta sao chép giao dịch của kẻ tấn công đầu tiên, thay địa chỉ của mình vào, rồi lặp lại. Nó trở thành một cuộc vét sạch tập thể.

Bài học, và là bài học khó chịu: đó không phải một đòn tấn công kỳ dị. Đó là một sai sót khi triển khai. Phần lớn các khoản mất mát ở cầu nối trông giống vận hành hỏng hơn là mật mã bị đánh bại.

Điều này nghĩa là gì với bạn

Tài sản bắc cầu mang rủi ro của cây cầu, chứ không phải của chuỗi. Giữ BTC bọc trên một chuỗi khác không phải là giữ BTC. Đó là giữ một quyền đòi, được bảo đảm bởi bất kỳ thành phần yếu nhất nào của cây cầu ấy. Điều đó có thể hoàn toàn chấp nhận được — nhưng phải là một quyết định, chứ không phải một giả định.

Hãy ưu tiên không bắc cầu khi còn lựa chọn khác. Nếu bạn có thể mua tài sản đó ngay trên chuỗi đích, hoặc dùng một sàn tập trung làm điểm băng qua, bạn đã đổi rủi ro cầu nối lấy một rủi ro khác và thường được hiểu rõ hơn. Chẳng lựa chọn nào là không rủi ro; chúng chỉ hỏng theo những cách khác nhau, và các kiểu hỏng của sàn giao dịch ít ra đã được liệt kê tử tế.

Đừng để giá trị nằm đỗ dưới dạng bắc cầu. Rủi ro cầu nối tích lại theo thời gian. Băng qua, làm việc mình cần làm, rồi băng về thì chỉ phơi bạn ra trong chốc lát. Giữ một tài sản bọc suốt một năm thì phơi bạn ra suốt một năm.

Hãy đánh giá một cây cầu qua mô hình tin cậy, chứ không qua giao diện. Bao nhiêu người ký có thể làm tiền dịch chuyển? Họ là những tổ chức độc lập hay chỉ một đội? Mã nguồn đã được kiểm toán chưa và — điều nói lên nhiều hơn — nó đã sống sót qua thời gian và khối lượng chưa? Một giao diện bóng bẩy chẳng nói với bạn điều gì.

Hãy định cỡ khoản tiền theo mức độ tin cậy. Quy tắc thẳng thắn là đừng bắc cầu nhiều hơn số bạn sẵn lòng mất nếu bên vận hành biến mất, bởi trong trường hợp tệ nhất thì hai điều đó là một.

SSP đứng ở đâu

SSP hỗ trợ chuyển tài sản giữa các chuỗi EVM, và cần nói cho chính xác điều đó bảo vệ được gì và không bảo vệ được gì.

Cơ chế hai trên hai của chúng tôi bảo vệ khóa và các phê duyệt của bạn. Không ai khởi tạo được một giao dịch bắc cầu nếu thiếu chữ ký từ cả hai thiết bị của bạn, và trên mỗi thiết bị bạn sẽ thấy mình đang phê duyệt điều gì. Tính chất ấy vững nguyên vẹn.

Điều nó không làm được là khiến bản thân cây cầu trở nên an toàn. Một khi tài sản của bạn đã nằm trong hợp đồng của cầu nối, chúng bị chi phối bởi luật của hợp đồng ấy và cách quản khóa của bên vận hành ấy — chứ không phải bởi ví đa chữ ký của bạn. Phê duyệt bằng hai thiết bị là lớp bảo vệ tuyệt vời trước việc ai đó chuyển tiền của bạn mà không được phép. Nó chẳng bảo vệ gì trước việc tiền của bạn bị lấy đi từ một nơi mà chính bạn đã cố ý gửi tới.

Đó không phải giới hạn mà chúng tôi có thể lách qua bằng kỹ thuật, và giả vờ ngược lại thì thiếu trung thực. Cầu nối là một trong những chỗ của thế giới tiền mã hóa mà câu trả lời trung thực là: an toàn phụ thuộc gần như trọn vẹn vào người khác, và phản ứng đúng đắn là nhìn cho kỹ người ấy là ai trước khi băng qua.

Chia sẻ bài viết này

Bài viết liên quan