Kỷ nguyên hậu an Safe: Một mô hình mới về bảo mật đa chữ ký mà mọi người dùng an Safe nên nắm vững

avatar
ODAILY
02-28
Bài viết này được dịch máy
Xem bản gốc

Tác giả bài viết: Moonbeam

Dòng thời gian

  • 21 tháng 2 năm 2025: Ví tiền ký nhiều chữ ký của Bybit bị tấn công, 1,5 tỷ USD đã chảy ra ngoài thông qua các giao dịch ký hợp pháp.

  • Truy vết trên chuỗi: Tiền được chuyển vào các địa chỉ ẩn danh và chia nhỏ, kẻ tấn công có liên quan tiềm ẩn với một số nút xác thực.

  • Phân tích sau sự cố: Kiểm toán an ninh phát hiện kẻ tấn công đã lợi dụng lỗ hổng chuỗi cung ứng của giao diện người dùng Safe để cài đặt mã độc.

Tại sao cuộc tấn công lại xảy ra

Hacker đã sử dụng mã độc trên giao diện để khiến các chủ sở hữu ví tiền ký nhiều chữ ký của Bybit tin rằng đây là một giao dịch hợp pháp (ví dụ như chuyển Token thường xuyên), nhưng thực tế họ đã bị lừa ký vào các giao dịch bất hợp pháp. Để ngăn chặn các chủ sở hữu phát hiện vấn đề với nội dung giao dịch thông qua các cách khác, hacker thậm chí đã giả mạo cuộc tấn công này thành một giao dịch 'chuyển tiền', khiến các chủ sở hữu ví Bybit càng ít có cơ hội kiểm tra nội dung gọi dữ liệu giao dịch (thường được gọi là calldata).

Tóm lại, cách thức tấn công như sau:

  1. Hacker đã có quyền truy cập vào giao diện người dùng của Safe, chỉnh sửa mã và cài đặt mã độc nhắm vào Bybit;

  2. Các thành viên ký nhiều chữ ký của Bybit truy cập vào trang web bị nhiễm mã độc và nhìn thấy thông tin giao dịch giả mạo:

  3. Họ nhìn thấy trang web hiển thị: "Chuyển 100 ETH đến địa chỉ A"

  4. Nhưng thực tế họ được yêu cầu ký vào là: "Thay đổi logic ví lạnh"

Đây giống như một máy ATM có màn hình hiển thị bị thay thế, màn hình hiển thị rút 100 đô la nhưng thực tế lại rút 1 triệu đô la.

Ứng dụng chính thức —— Điểm mù của sự tin tưởng của người dùng

Trong nhận thức của người dùng, quy trình giao dịch ký nhiều chữ ký rất đơn giản: Nhìn thấy giao dịch → Ký → Gửi lên chuỗi, nhưng thực tế còn ẩn chứa một lớp tách biệt quan trọng:

  1. Giao dịch mà người dùng nhìn thấy

  2. Giao dịch thực sự được ký

Và việc sử dụng ứng dụng chính thức sẽ khiến người dùng giảm đi rất nhiều cảnh giác, đến mức bỏ qua lớp tách biệt này. Nếu trang web của ứng dụng chính thức bị tấn công, sẽ dẫn đến việc người dùng ký vào giao dịch thực, nhưng họ lại không biết mình đang ký vào nội dung gì.

Nếu có thể có kênh độc lập để xác minh nội dung ký, sẽ có thể giảm rất nhiều rủi ro do tấn công giao diện mang lại. Đây chính là điều mà blockchain đề xướng: Đừng tin tưởng, hãy XÁC MINH.

Nền tảng lý thuyết của "Xác minh qua kênh độc lập"

Trước hết, chúng ta hãy xem nguyên lý hoạt động của hợp đồng Safe (tính đến hiện tại, hợp đồng Safe vẫn đủ an toàn):

  1. Trước tiên, tính toán một giá trị băm (hash) từ nội dung giao dịch (giống như tạo "dấu vân tay" của giao dịch)

  2. Ký giá trị băm này bằng private key

  3. Khi đủ số lượng chữ ký, gửi nội dung giao dịch và các chữ ký lên chuỗi

  4. Trên chuỗi, tính lại giá trị băm từ nội dung giao dịch và xác minh các chữ ký, nếu đủ số lượng hợp lệ thì thực hiện giao dịch, nếu không thì từ chối.

Tính an toàn và khó giả mạo của băm và chữ ký là hai trụ cột chính của blockchain.

Do đó, nếu có kênh độc lập để có thể nhận được nội dung giao dịch và các chữ ký trước khi giao dịch được gửi lên chuỗi, có thể xác minh "giao dịch mà người dùng ký là gì" và "người dùng có thực sự ký vào giao dịch đó không".

Do đó, ngay cả khi giao diện hoặc phía sau bị tấn công, trường hợp tồi tệ nhất chỉ là nhận được dữ liệu sai, và dữ liệu sai trong "kênh độc lập" sẽ dẫn đến các tình huống sau:

  • Nội dung giao dịch sai, chữ ký sai - Người dùng từ chối gửi giao dịch lên chuỗi

  • Nội dung giao dịch sai, chữ ký hợp lệ - Người dùng từ chối gửi giao dịch lên chuỗi

  • Nội dung giao dịch sai, chữ ký sai - Người dùng từ chối gửi giao dịch lên chuỗi

Chúng ta có thể thấy, trường hợp tồi tệ nhất cũng chỉ là giao dịch không được gửi lên chuỗi, ngoài ra không gây ra bất kỳ tổn thất nào trên chuỗi. Vì vậy, đối với loại tấn công "hiển thị" như vậy, cách tốt nhất là xác minh qua nhiều kênh, điều này cũng phù hợp với tinh thần của blockchain: Đừng tin tưởng, hãy XÁC MINH.

Các giải pháp hiện có

Các sản phẩm ký nhiều chữ ký kiểm tra lẫn nhau

Hiện tại trên thị trường có rất nhiều sản phẩm tương thích với Safe, ví dụ như chính Safe đã triển khai hai giao diện độc lập:

https://eternalsafe.vercel.app/welcome/
https://eternalsafe.eth.limo/welcome/
Sau khi ký vào một giao dịch ký nhiều chữ ký, người dùng hoặc các chủ sở hữu ký tiếp theo có thể đăng nhập vào trang web của sản phẩm ký nhiều chữ ký khác, kiểm tra lại nội dung giao dịch, nếu các sản phẩm ký nhiều chữ ký hiển thị hoàn toàn giống nhau, có thể tin rằng "nội dung giao dịch mà mình ký là chính xác".

Tuy nhiên, điều này đòi hỏi các sản phẩm ký nhiều chữ ký phải cùng sử dụng backend của {Safe} để lưu trữ dữ liệu giao dịch và chữ ký ở chuỗi, và cũng phải chia sẻ dữ liệu chữ ký mà họ thu thập với {Safe}, yêu cầu hợp tác giữa các sản phẩm rất khắt khe; hơn nữa, Safe không thân thiện với việc giải mã nội dung giao dịch phi thường, ngay cả khi nhiều giao diện Safe hiển thị cùng một calldata, nhưng nếu chỉ là một chuỗi 0x abcdefsf vô nghĩa, cũng sẽ khiến người ký chữ ký do dự.

Lưu ý: Hiện tại, hai trang web thay thế độc lập do Safe cung cấp đều yêu cầu người dùng cung cấp liên kết RPC:

Công cụ xác minh giao dịch Safe độc lập

Đối với sự cố tấn công giao diện Safe, cộng đồng cũng phản ứng rất nhanh, chúng tôi đã tìm thấy một công cụ xác minh giao dịch Safe độc lập trên nhóm Telegram chính thức của Safe, cách này trông đơn giản và trực tiếp hơn.

Chúng tôi cũng đã kiểm tra công cụ này. Như hình, chỉ cần dán liên kết chia sẻ giao dịch từ trang Safe vào, công cụ sẽ tự động đọc dữ liệu từ backend của Safe và độc lập xác minh giá trị băm nội dung giao dịch và tính hợp lệ của các chữ ký. Tóm lại, nếu chắc chắn calldata được giải mã là giao dịch mình muốn gửi, và "Kiểm tra giá trị băm Safe" và "Kiểm tra chữ ký" đều thành công, có thể tin rằng "đây là giao dịch mình muốn gửi" và "mình đã ký chính xác".

Tất nhiên, để an toàn hơn, cũng cần kiểm tra kỹ Địa chỉ Safe, địa chỉ người ký được giải mã,

Đừng tin tưởng, hãy XÁC MINH nó (Don't trust it, VERIFY it.) là nguyên tắc cốt lõi của an ninh Web3. Hy vọng rằng trong tương lai, hệ sinh thái Safe và nhiều sản phẩm ký nhiều chữ ký hơn có thể tăng cường cơ chế xác minh độc lập, tránh các cuộc tấn công tương tự xảy ra một lần nữa.

Nguồn
Tuyên bố từ chối trách nhiệm: Nội dung trên chỉ là ý kiến của tác giả, không đại diện cho bất kỳ lập trường nào của Followin, không nhằm mục đích và sẽ không được hiểu hay hiểu là lời khuyên đầu tư từ Followin.
Thích
Thêm vào Yêu thích
Bình luận