Cointime

Download App
iOS & Android

Giải thích chi tiết về sự cố tấn công Socket

Validated Project

Vào ngày 16 tháng 1 năm 2024, Socket Tech bị tấn công và thiệt hại khoảng 3,3 triệu USD. Kẻ tấn công đã lợi dụng lỗ hổng trong liên kết xác minh dữ liệu của hợp đồng Socket và đánh cắp tiền của người dùng trong hợp đồng được ủy quyền thông qua việc nhập dữ liệu độc hại. Cuộc tấn công này đã gây thiệt hại cho tổng cộng 230 địa chỉ và thiệt hại lớn nhất về một địa chỉ là khoảng 656.000 USD.

Giới thiệu bối cảnh

Ổ cắm là một giao thức có khả năng tương tác phục vụ việc truyền tải tài sản và dữ liệu an toàn và hiệu quả trên chuỗi chéo. Hợp đồng Cổng cổng là điểm truy cập cho tất cả các tương tác với lớp thanh khoản của Ổ cắm, nơi tất cả các cầu nối tài sản và DEX hội tụ thành một cầu nối meta duy nhất và chọn các giao dịch tốt nhất dựa trên tùy chọn của người dùng như chi phí, độ trễ hoặc định tuyến bảo mật.

Ba ngày trước cuộc tấn công của hacker, quản trị viên hợp đồng Socket đã thực thi lệnh addRoute để thêm tuyến mới vào hệ thống. Mục đích của việc thêm định tuyến là để mở rộng chức năng của Cổng ổ cắm, nhưng nó đã vô tình tạo ra một lỗ hổng nghiêm trọng.

Hình ảnh bên dưới hiển thị bản ghi định tuyến được thêm thông qua quản trị viên hợp đồng.

Tóm tắt các sự kiện

  1. 1. Vào lúc 15:03 ngày 16 tháng 1, giờ Bắc Kinh, ví của kẻ tấn công đã chuyển số tiền được sử dụng cho cuộc tấn công. Phân tích theo thời gian của chúng tôi cho thấy số tiền đến từ 0xe620 và có liên quan đến 10 BNB được rút từ Tornado Cash.
  1. 2. Số tiền này được sử dụng để tạo và thực hiện hai hợp đồng khai thác lỗ hổng của Socket. Hợp đồng đầu tiên nhắm vào USDC tại một địa chỉ được SocketGateway ủy quyền (ảnh chụp màn hình bên dưới); 127 nạn nhân đã bị lừa đảo với số tiền khoảng 2,5 triệu USD.
  1. 3. Tiếp theo, hợp đồng thứ hai nhắm mục tiêu WETH, USDT, WBTC, DAI và MATIC trong địa chỉ của nạn nhân. Kết quả là 104 nạn nhân khác bị mất tài sản sau:
  • 42.47526105 WETH
  • 347.005,65 USDT
  • 2.88962154 WBTC
  • 13.821,01 ĐẠI
  • 165.356,99 MATIC
  1. 4. Kẻ tấn công đã chuyển đổi USDC và USDT thành ETH.

Nguồn lỗ hổng

Lỗ hổng bị kẻ tấn công khai thác tồn tại trong hàm performanceAction trong địa chỉ định tuyến mới được thêm vào RouteAddress.

Chức năng ban đầu của hàm performanceAction trong địa chỉ này là hỗ trợ các chức năng Gói và Mở gói. Tuy nhiên, một lỗ hổng nghiêm trọng xuất hiện trong chức năng này: người dùng gọi trực tiếp dữ liệu bên ngoài thông qua swapExtraData trong .call() mà không cần xác minh, điều đó có nghĩa là kẻ tấn công có thể thực thi các chức năng độc hại tùy ý.

Trong sự cố này, kẻ tấn công đã tạo một đầu vào swapExtraData độc hại để kích hoạt chức năng transferFrom. Cuộc gọi độc hại đã lợi dụng quyền của người dùng đối với hợp đồng SocketGateway và lấy trộm tiền từ họ.

Mặc dù hợp đồng sẽ đảm bảo rằng số dư của người dùng sẽ thay đổi chính xác sau khi fromToken.call() được gọi bằng cách kiểm tra kiểm tra số dư, chức năng này không tính đến tình huống kẻ tấn công đặt số tiền thành 0.

Khôi phục quá trình tấn công

  1. 1. Sử dụng hợp đồng tấn công, kẻ tấn công gọi 0x00000196() trên hợp đồng Cổng cổng.
  1. 2. fallback() sử dụng chữ ký thập lục phân 196 để gọi hợp đồng địa chỉ định tuyến dễ bị tấn công (routerAddress).
  1. 3. Trong ảnh chụp màn hình bên dưới, chúng ta có thể thấy đầu vào giả được kẻ tấn công sử dụng và số Hoán đổi đều bằng 0.
  1. 4. Tiếp theo, WrappedTokenSwapperImpl.performAction() sẽ được gọi để thực hiện Hoán đổi.
  1. 5. SwapExtraData giả mạo được fromToken (WETH) chấp nhận và thực thi mà không cần bất kỳ xác minh nào.
  1. 5. SwapExtraData giả mạo được fromToken (WETH) chấp nhận và thực thi mà không cần bất kỳ xác minh nào.
  1. 6. Kẻ tấn công lặp lại quá trình trên cho đến khi hết tài sản của nạn nhân. Sau khi giao dịch độc hại xảy ra, Socket nhanh chóng gọi là vô hiệu hóaRoute, chặn các tuyến dễ bị tổn thương trước đó và ngăn chặn các cuộc tấn công rộng hơn.
  2. 7. Vào ngày 23 tháng 1, Socket thông báo rằng họ đã thu hồi được 1.032 ETH và thông báo vào ngày 25 rằng họ sẽ bồi thường đầy đủ mọi tổn thất. Sự cố này đã được giải quyết.

Tóm tắt sự kiện

Các cuộc tấn công dữ liệu cuộc gọi độc hại không phải là hiếm trong các hợp đồng định tuyến với quyền người dùng không giới hạn. Các cuộc tấn công tương tự trước đây bao gồm Dexible và Hector Bridge. Vào ngày 17 tháng 2 năm 2023, sàn giao dịch phi tập trung Dexible bị tấn công, gây thiệt hại hơn 1,5 triệu USD. Kẻ khai thác nhập dữ liệu cuộc gọi độc hại vào hàm fill() của Dexible để đánh cắp tài sản của người dùng. Vào ngày 2 tháng 6 năm 2023, giao thức mạng Hector bị tấn công. Kẻ tấn công đã triển khai hợp đồng USDC giả và chuyển 652.000 USDC thật từ hợp đồng của nạn nhân thông qua dữ liệu cuộc gọi độc hại.

Các nền tảng tổng hợp chuỗi khối thường cải thiện tính thanh khoản và giảm tổn thất bằng cách đóng gói một loạt các hợp đồng cầu nối và định tuyến. Tuy nhiên, việc đóng gói phức tạp này tạo ra nhiều thách thức về bảo mật hơn. Chúng tôi rất vui khi thấy rằng sự cố Socket có thể được giải quyết. CertiK sẽ tiếp tục cam kết cung cấp khả năng kiểm tra và phát hiện toàn diện cho nền tảng, giảm thiểu các rủi ro tổng hợp khác nhau cũng như cải thiện niềm tin của cộng đồng và mức độ bảo mật của toàn ngành.

Các bình luận

Tất cả bình luận

Recommended for you