Nguồn: Beosin
Vào ngày 17 tháng 1 năm 2024, theo giám sát rủi ro bảo mật EagleEye của Beosin, cảnh báo sớm và giám sát nền tảng chặn,Giao thức socket đã bị kẻ tấn công tấn công chèn lệnh gọi, dẫn đến trong một số lượng lớn tiền của người dùng được ủy quyền đã bị đánh cắp. Hiện tại, kẻ tấn công chuyển số tiền bị đánh cắp thành ETH và lưu chúng vào địa chỉ của kẻ tấn công.
Sau khi cuộc tấn công xảy ra, Socket đã chính thức xác nhận rằng nó đã bị tấn công và ngay lập tức đình chỉ các hợp đồng bị ảnh hưởng.
Đồng thời, MetaMask ban hành văn bản về X nền tảng cho biết, Người dùng MetaMask Bridge không bị ảnh hưởng bởi lỗ hổng Socket xảy ra ngày hôm nay. MetaMask cho biết họ đã áp dụng một kiến trúc độc đáo khi thiết kế hợp đồng cầu nối chuỗi chéo để ngăn chặn các cuộc tấn công như vậy.
Về cuộc tấn công này, nhóm bảo mật Beosin đã phân tích.
Phân tích lỗ hổng
Lý do chính cho sự cố này là Chức năng performanceAction của hợp đồng socket thực hiện không tồn tại Gọi cuộc gọi an toàn. Như trong hình bên dưới, chức năng cơ bản của chức năng này là chuyển đổi ETH và WETH của người dùng. Nếu người gọi chọn fromToken là ETH thì số dư toToken (WETH) của hợp đồng sẽ được truy vấn và sau đó toToken được gọi thông qua lệnh gọi (logic thông thường. Tiếp theo, chức năng gửi tiền của WETH phải được gọi ở đây) và số lượng ETH do người dùng chỉ định sẽ được chuyển. Tiếp theo, số dư mới của toToken (WETH) của hợp đồng sẽ được truy vấn. Nếu có bằng với số ETH mà người dùng chuyển, sau đó nó được chuyển và toToken được chuyển. Chỉ định địa chỉ của người gọi. Nếu người gọi chọn fromToken không phải ETH thì cũng tương tự như trên, chức năng là chuyển đổi WETH của người gọi thành ETH (trong trường hợp bình thường, cuộc gọi phải gọi hàm rút của WETH) và gửi đến địa chỉ người dùng chỉ định. Địa chỉ.
Mặc dù không có hạn chế kiểm tra nào đối với fromToken và toToken trong hàm, ngoại trừ địa chỉ WETH được truyền vào, các địa chỉ ERC20 khác sẽ khiến việc kiểm tra số dư không thành công, khiến không thể giả mạo hai tham số này và gián tiếp thay đổi địa chỉ mã thông báo. Giới hạn ở WETH.
Mặc dù có những hạn chế về địa chỉ mã thông báo, chức năng này cũng có vấn đề là không có giới hạn về số tiền. Nếu số tiền người gọi chuyển vào là 0 thì điều kiện kiểm tra của hàm sẽ luôn đạt và không cần phải gọi hàm gửi và rút tiền của WETH. Tại thời điểm này, dữ liệu bất thường có thể được đưa vào cuộc gọi để đạt được mục đích tấn công.
Quy trình tấn côngBây giờ chúng ta đã hiểu vấn đề với hàm này, hãy xem kẻ tấn công làm thế nào thực hiện cuộc tấn công.
1. Kẻ tấn công trước tiên tạo ra một hợp đồng tấn công.
2. Sau đó, kẻ tấn công đã truy vấn số dư WETH của các địa chỉ khác nhau nhiều lần, và Truy vấn số địa chỉ được ủy quyền cho hợp đồng Socket: Gateway và cuối cùng gọi hợp đồng Socket: Gateway.
3. Như bạn có thể thấy, khi hàm performanceAction được gọi ở đây , swapExtraData Tham số được truyền vào là 0x23b872dd..., là chữ ký hàm của transferfrom, cho biết rằng hàm transferfrom của token sẽ được gọi trực tiếp tại đây.
4. Có thể thấy rằng kẻ tấn công chuyển fromToken dưới dạng WETH và số tiền là chính xác. Đó là số 0 mà chúng tôi đã đề cập ở trên. Hợp đồng đã chuyển WETH của kẻ tấn công vào hợp đồng, nhưng nó là 0. Trong cuộc gọi cuộc gọi, kẻ tấn công đã chỉ định một địa chỉ người dùng và chuyển 16 WETH cho kẻ tấn công.
5. Kẻ tấn công chuyển WETH của vô số người dùng cho hắn thông qua một số lượng lớn của các hoạt động.
6. Kẻ tấn công sử dụng phương pháp tương tự để ủy quyền hợp đồng Chuyển giao USDT cho chính bạn.
7. Nó cũng bao gồm ba token: WBTC, DAI và MATIC.
Tính đến thời điểm báo chí, gần 3,3 triệu USD đã đã bị đánh cắp Một số tiền đã được kẻ tấn công chuyển đổi thành ETH và địa chỉ của hacker vẫn chưa được di chuyển. Beosin Trace sẽ tiếp tục theo dõi số tiền bị đánh cắp.
Hiện tại, giao thức tương tác Socket phát hành các bản cập nhật sự kiện bảo mật trên nền tảng X : Ổ cắm hiện đã hoạt động trở lại, các hợp đồng bị ảnh hưởng đã bị đình chỉ và thiệt hại đã được khắc phục hoàn toàn. Cầu nối giữa Bungee và hầu hết các giao diện đối tác của nó đã được khôi phục. Một phân tích chi tiết về vụ việc và các bước tiếp theo sẽ sớm được công bố.
Socke nhắc nhở: "Hãy cẩn thận với các tài khoản Socket giả mạo trong các thư trả lời cố gắng lừa đảo bạn. Luôn kiểm tra kỹ tài khoản trước khi thực hiện bất kỳ hành động nào."
Sự việc này cũng nhắc nhở mọi người rằng không thể xem nhẹ sự an toàn.