

Vào ngày 16 tháng 1 năm 2024, Socket Tech bị tấn công, dẫn đến thiệt hại khoảng 3,3 triệu USD. Kẻ tấn công đã khai thác 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 dữ liệu đầu vào độ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ới 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 vụ hack, 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 khả 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. 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ừ 0x e 620 và có liên quan đến 10 BNB được rút từ Tornado Cash.
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 mục tiêu 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 với số tiền khoảng 2,5 triệu USD.
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 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
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. Sử dụng hợp đồng tấn công, kẻ tấn công gọi 0x 00000196() trên hợp đồng Cổng cổng.
2.fallback() gọi hợp đồng địa chỉ định tuyến dễ bị tấn công (routerAddress) bằng chữ ký thập lục phân 196.
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.
4. Tiếp theo, WrappedTokenSwapperImpl.performAction() sẽ được gọi để thực hiện Hoán đổi.
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.
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 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
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 của 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.
Việc giải quyết sự cố Socket chắc chắn là kết quả nỗ lực của tất cả các bên. CertiK sẽ tiếp tục cam kết cung cấp kiểm tra và thử nghiệm 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 và cải thiện niềm tin của cộng đồng cũng như mức độ bảo mật của toàn ngành .
