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ới 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 nền tảng phục vụ bảo mật chuỗi chéo và dữ liệu hiệu quả và giao thức tương tác vận chuyển. 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 và thêm một 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 sự kiện< /h1>< p style="text-align: left;">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 dùng cho cuộc tấn công. Phân tích thời gian của chúng tôi cho thấy số tiền đã đến từ 0xe620, giống như từ Tornado Cash. Đã rút khoảng 10 BNB.
p> p>
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 trong một địa chỉ được ủy quyền cho SocketGateway (ả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.
p> p>
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 đã mất các tài sản sau:
- 42.47526105 WETH
- 347.005,65 USDT
- 2.88962154 WBTC
- 13.821.01 DAI
- 165.356,99 MATIC
4. Kẻ tấn công chuyển đổi USDC thành USDT ETH.
p> p>
Nguồn của lỗ hổng
Lỗ hổng bị kẻ tấn công khai thác tồn tại trong định tuyến mới được thêm vào địa chỉ RouteAddress trong hàm performanceAction.
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 ý.
p> p>
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 kiểm tra số dư, chức năng này không xem xét số tiền do kẻ tấn công thiết lập là 0.
p> p>
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 có thể trên hợp đồng Cổng cổng 0x00000196() đã được gọi.
p> p>
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).
p> p>
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.
p> p>
4. WrappedTokenSwapperImpl.performAction() sẽ được gọi bên cạnh để thực hiện Hoán đổi.
p> p>
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.
p> p>
6. Kẻ tấn công lặp lại quá trình trên cho đến khi tài sản của nạn nhân cạn kiệt. 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.
p> p>
Tóm tắt sự kiện
Trong các hợp đồng định tuyến với quyền hạ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 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.
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. Chúng tôi rất vui khi thấy sự cố Socket có thể được giải quyết. CertiK sẽ tiếp tục cam kết cung cấp dịch vụ kiểm tra và kiểm tra 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, đồng thời 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.