Web3 tấn công phía trước: Hacker thiên đường mới của họ

robot
Đang tạo bản tóm tắt

Chúng ta quên bảo vệ lớp vô hình

Khi hầu hết mọi người nói về bảo mật Web3, họ thường nghĩ đến hợp đồng thông minh. Điều này là hợp lý. Rốt cuộc, những đoạn mã này nắm giữ tài sản thực, định nghĩa logic của giao thức và bảo vệ hàng tỷ đô la quỹ của người dùng. Trong nhiều năm qua, các đội ngũ bảo mật đã dành vô số công sức để phát hiện các lỗ hổng tái nhập, vấn đề kiểm soát truy cập, lỗi số học và những lỗ hổng tinh vi chỉ xuất hiện dưới những con đường thực thi cụ thể. Nhưng trong tất cả sự cuồng nhiệt đối với những gì xảy ra trên chuỗi, chúng ta đã bỏ qua điều đầu tiên mà phần lớn người dùng thực sự tương tác: giao diện người dùng.

Giao diện người dùng luôn được coi là lớp vỏ sáng bóng, giúp người dùng tương tác với blockchain. Nhưng "lớp vỏ" này đang nhanh chóng trở thành một trong những lớp bị lạm dụng nhiều nhất trong toàn bộ hệ sinh thái. Mặc dù hợp đồng thông minh là không thể thay đổi và có thể kiểm toán, nhưng giao diện người dùng lại có thể thay đổi, tập trung và được cung cấp dịch vụ bởi cơ sở hạ tầng hoàn toàn nằm ngoài sự đảm bảo của blockchain. Tuy nhiên, chính chúng đã xây dựng giao dịch mà ví yêu cầu người dùng ký tên. Nếu điều này vẫn chưa khiến bạn cảm thấy lo lắng, thì nó chắc chắn nên khiến bạn cảm thấy như vậy.

Giao diện tin cậy có nghĩa là tin tưởng kẻ tấn công

Mối nguy thực sự của front-end không nhất thiết là độ phức tạp của công nghệ; mà là sự tin tưởng không đúng chỗ. Hầu hết người dùng không biết họ thực sự ký gì khi xác nhận giao dịch. Họ hoàn toàn phụ thuộc vào những gì front-end trình bày cho họ.

Một nút "Swap" có thể đang kích hoạt phê duyệt. Một giao diện staking có thể đang truyền một cuộc gọi ủy quyền. Trừ khi ví giải mã dữ liệu theo định dạng dễ đọc cho con người, và nhiều ví vẫn chưa làm như vậy, người dùng không thể xác minh những gì họ đang làm.

Điều này khiến cho việc xâm nhập vào frontend trở thành một trong những phương pháp hiệu quả nhất để đánh cắp tiền trong Web3. Kẻ tấn công không cần phải phá hủy hợp đồng hoặc tìm thấy lỗ hổng trong giao thức cốt lõi. Những gì họ cần chỉ là một cách để thao túng frontend, ngay cả khi chỉ trong thời gian ngắn, họ có thể ngồi ẩn mình giữa người dùng và blockchain. Mỗi cú nhấp chuột đều trở thành một cơ hội cho ý đồ bắt cóc.

Những cuộc tấn công này xảy ra như thế nào

Cách thực hiện những cuộc tấn công này không có gì đặc biệt. Đôi khi nó đơn giản như việc chiếm đoạt DNS, kẻ tấn công có thể truy cập vào bản ghi tên miền của dự án và trỏ nó đến máy chủ độc hại. Trong những trường hợp khác, kẻ tấn công tiêm mã thông qua các phụ thuộc bị nhiễm, thay thế logic độc hại, và sửa đổi dữ liệu giao dịch trước khi truyền nó đến ví. Còn một số trường hợp khác, giao diện phía trước bị xâm nhập trực tiếp qua việc truy cập bảng điều khiển đám mây hoặc cấu hình CDN, cho phép kẻ tấn công thay đổi kịch bản UI theo thời gian thực.

Hiệu quả luôn giống nhau. Người dùng như thường lệ truy cập ứng dụng, kết nối ví của họ và ký các giao dịch mà họ cho là an toàn. Nhưng những gì họ ký lại là hoàn toàn khác, thường là chấp thuận một hợp đồng không đáng tin cậy, hoặc chuyển tokens đến một ví do kẻ tấn công kiểm soát. Hơn nữa, vì blockchain hoàn toàn thực hiện theo chữ ký, nên không có nút hủy.

Sự kiện gần đây chứng minh điều này

Chúng tôi đã thấy một số ví dụ đau đớn trong lĩnh vực này. Một trong những ví dụ nổi tiếng nhất là sự cố Curve Finance năm 2022, kẻ tấn công đã kiểm soát DNS của Curve và cung cấp cho người dùng một giao diện giả mạo. Trang web trông giống hệt nhau. Các thông báo ví cũng trông bình thường. Nhưng ở phía sau, mỗi giao dịch đều được chuyển hướng đến ví của kẻ tấn công. Chỉ trong vài giờ, gần 600.000 USD đã bị mất.

Một ví dụ khác là BadgerDAO, đã mất hơn 100 triệu đô la sau khi kẻ tấn công tiêm mã JavaScript độc hại vào giao diện phía trước của nó. Mã này đã lén lút thay đổi tải trọng giao dịch của một số người dùng nhất định (đặc biệt là cá voi), khiến những người dùng này tự nhấp vào sự hủy diệt.

Những điểm chung của các sự kiện này là hợp đồng thông minh vẫn giữ nguyên. Logic là hợp lý, kiểm toán là sạch, nhưng khi đầu cuối kể một câu chuyện khác, thì tất cả những điều này trở nên vô nghĩa.

Tại sao vấn đề này không biến mất

Nguyên nhân khiến an ninh front-end trong Web3 đặc biệt khó khăn là vì nó thuộc về một vùng xám kỳ lạ. Nó là off-chain, vì vậy hầu hết các công cụ an ninh on-chain không thể giám sát nó. Nó thường bị bỏ qua trong quá trình kiểm toán, đặc biệt là trong các dự án ưu tiên giao hàng hơn là an ninh. Hơn nữa, nó rất phụ thuộc vào cơ sở hạ tầng tập trung như DNS, lưu trữ đám mây và các kho đăng ký gói JavaScript, những thứ này không cung cấp đảm bảo giống như blockchain.

Thậm chí tồi tệ hơn, các công cụ xung quanh xác thực phía trước vẫn chưa trưởng thành. Khác với mã byte của hợp đồng có thể được xác thực trên chuỗi, mã phía trước thường thay đổi, hiếm khi được cố định hoặc băm, và hầu như không bao giờ được phát hành theo cách mà người dùng có thể kiểm tra. Điều này tạo ra một môi trường hoàn hảo cho các cuộc tấn công có mục tiêu, đặc biệt là trong các thời điểm nhạy cảm như khởi động token, airdrop hoặc nâng cấp giao diện người dùng.

Cần thay đổi điều gì

Để Web3 phát triển một cách an toàn, tính bảo mật cần được mở rộng ra ngoài hợp đồng thông minh. Các nhà phát triển phải đối xử với phần frontend với cùng sự cẩn trọng và nghiêm ngặt như khi đối xử với backend. Điều này có nghĩa là khóa các phụ thuộc, tránh các script của bên thứ ba không cần thiết, bảo vệ cấu hình DNS, và coi việc kiểm toán frontend là một phần của mỗi lần phát hành lớn.

Các nhà cung cấp ví cũng nên đóng vai trò. Người dùng cần hiểu rõ hơn về những gì họ đang ký. Điều này có thể có nghĩa là cải thiện việc giải mã, cảnh báo tốt hơn, thậm chí là kiểm tra tính xác thực ở phía trước. Hiện tại, mọi người có độ tin cậy quá cao vào giao diện, trong khi nỗ lực xác minh tính toàn vẹn lại chưa đủ.

Từ góc độ của người dùng, lời khuyên là nghiêm khắc nhưng chân thành: Đừng mù quáng tin tưởng bất kỳ giao diện người dùng nào. Nếu bạn đang tương tác với các giao thức có giá trị cao, đừng chỉ kiểm tra tên miền. Kiểm tra mã nguồn. Sử dụng tiện ích mở rộng trình duyệt để theo dõi hợp đồng độc hại. Nếu có điều gì cảm thấy không đúng, đừng ký.

Kết luận

Web3 không chỉ là về việc thực thi mà không cần tin tưởng. Nó liên quan đến toàn bộ ranh giới tin cậy, điểm khởi đầu của nó, cách chuyển giao và điểm kết thúc của nó. Hiện tại, phần giao diện người dùng nằm ngay giữa ranh giới đó và đã trở thành một sân chơi cho bất kỳ ai đủ thông minh để tận dụng khoảng cách giữa những gì người dùng thấy và nội dung đã ký.

Hợp đồng của bạn có thể hoàn hảo, nhưng nếu giao diện người dùng của bạn bị tấn công, kết quả cũng giống nhau. Mất tiền, lòng tin bị phá vỡ, người dùng muốn biết mọi thứ đã sai ở đâu. Đã đến lúc ngành công nghiệp ngừng xem giao diện người dùng như một vấn đề được xem xét sau cùng. Bởi vì đối với những kẻ tấn công, nó đã trở thành mục tiêu đầu tiên của họ.

CRV0.07%
Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • Bình luận
  • Chia sẻ
Bình luận
0/400
Không có bình luận
  • Ghim
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)