Nguồn: Cộng đồng người Hoa CertiK
Vào ngày 16 tháng 1 năm 2024, Socket Tech bị tấn công, gây 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 cơ bản
Socket là một giao thức có khả năng tương tác phục vụ bảo mật chuỗi chéo cũng như truyền dữ liệu và tài sản hiệu quả. 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 Socket, nhưng nó vô tình tạo ra một lỗ hổng nghiêm trọng.
Hình ảnh sau đây hiển thị bản ghi thêm định tuyến thông qua quản trị viên hợp đồng:
Tóm tắt vụ việc
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 vụ tấn công. Phân tích theo thời gian của chúng tôi cho thấy rằng số tiền đến từ 0xe620 và có liên quan đến việc rút 10 BNB từ Tornado Cash.
2.Những khoản tiền này được sử dụng để tạo ra và thực hiện hai hợp đồng khai thác lỗ hổng của Socket. Hợp đồng đầu tiên dành cho USDC theo đị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.
3. Tiếp theo, hợp đồng thứ hai sẽ Mục tiêu là 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 đã mất khoảng tài sản sau:
-42,48 WETH
-347.005,65 USDT
-2,89 WBTC
-13.821,01 DAI
-165.356,99 MATIC
4. Kẻ tấn công đã chuyển đổi USDC và USDT thành ETH.
Nguồn lỗ hổng h2>
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 này có nghĩa là kẻ tấn công có thể thực thi tùy ý chức năng độc hại.
Trong sự cố này, kẻ tấn công đã tạo đầ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 số dư, chức năng này không xem xét trường hợp kẻ tấn công đặt số tiền thành 0.
Khôi phục quá trình tấn công< /h2>
1. Sử dụng hợp đồng tấn công, kẻ tấn công gọi 0x00000196() trên hợp đồng Socket Gateway.
2.fallback() sử dụng chữ ký thập lục phân 196 Dễ bị tổn thương hợp đồng địa chỉ định tuyến (routerAddress) đã được gọi.
3. Trong ảnh chụp màn hình bên dưới, chúng ta có thể thấy To đầu vào giả được kẻ tấn công sử dụng, số Hoán đổi đều bằng 0.
4. Tiếp theo, WrappedTokenSwapperImpl.performAction() sẽ là được gọi là Thực hiện Hoán đổi.
5. Nếu không có bất kỳ xác minh nào, SwapExtraData sai sẽ được chấp nhận và được thực thi bởi fromToken (WETH).
6. Kẻ tấn công lặp lại quy trình trên cho đến khi tài sản bị nạn nhân đang kiệt sức. Sau khi giao dịch độc hại xuất hiện, Socket nhanh chóng gọi là vô hiệu hóaRoute, chặn tuyến đường dễ bị tổn thương trước đó và ngăn chặn phạm vi tấn công rộng hơn.
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 h2>
Trong các hợp đồng định tuyến với sự ủy quyền người dùng không giới hạ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.
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 blockchain thường cải thiện tính thanh khoản và giảm tổn thất bằng cách gói gọn 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.