Theo thông tin tình báo của Slow Mist District, vào ngày 28 tháng 1 năm 2022, QBridge của dự án Qubit đã bị tấn công, gây thiệt hại khoảng 80 triệu đô la Mỹ. Nhóm bảo mật SlowMist đã tiến hành phân tích và chia sẻ nó với bạn dưới dạng phân tích ngắn gọn.
phân tích ngắn gọn
1. Kẻ tấn công tiến hành hoạt động gửi tiền thông qua hợp đồng QBridge trên ETH và chuyển dữ liệu bao gồm DestinationDomainID của chuỗi mục tiêu sẽ được vượt qua, ID tài sản của tài sản chuỗi chéo sẽ được vượt qua, số lượng chéo quỹ chuỗi và địa chỉ nhận khi gửi tiền.
2. Kẻ tấn công chỉ định rằng ID tài nguyên đến là giá trị được yêu cầu bởi Mã thông báo ETH chéo, nhưng kẻ tấn công gọi chức năng ký gửi của QBridge thay vì chức năng ký gửiETH, vì vậy việc kiểm tra số lượng quỹ liên chuỗi và msg.value là đầu tiên bỏ qua. Chức năng gửi tiền sẽ lấy địa chỉ trình xử lý khỏi ánh xạ theo ID tài nguyên để nạp tiền.Vì kẻ tấn công chuyển giá trị theo yêu cầu của Mã thông báo chéo ETH thực, chức năng gửi tiền của hợp đồng xử lý có thể được gọi thành công.
3. Chức năng nạp tiền của hợp đồng xử lý sẽ kiểm tra xem Token được nạp ra theo resourceID có nằm trong danh sách trắng hay không.Vì resourceID được kẻ tấn công chuyển vào có tương ứng với ETH nên Token được nạp ra trong ánh xạ là 0 và nó sẽ được coi là đang nạp ETH và đã vượt qua kiểm tra danh sách trắng. Tuy nhiên, chức năng gửi tiền đã không kiểm tra địa chỉ Mã thông báo để được nạp lại (việc nạp lại ETH phải được thực hiện xuyên chuỗi thông qua chức năng gửiETH), sau đó gọi trực tiếp chức năng transferFrom của Mã thông báo để được nạp lại thông qua safeTransferFrom.
4. Do địa chỉ Mã thông báo được nạp lại là địa chỉ 0 và kết quả thực hiện của lệnh gọi đến địa chỉ EOA không có kích thước mã sẽ là đúng và giá trị trả về sẽ trống, do đó, thao tác chuyển thông qua transferFrom vượt qua kiểm tra của safeTransferFrom, và cuối cùng kích hoạt sự kiện nạp tiền Gửi tiền xuyên chuỗi.
5. Vì ID tài nguyên đến là giá trị cần thiết cho cross-ETH, nên sự kiện Nạp tiền được kích hoạt giống với sự kiện nạp lại ETH thực, điều này khiến QBridge nghĩ rằng kẻ tấn công đã thực hiện cross-chain ETH, vì vậy nó đã được kích hoạt chuỗi BSC cho kẻ tấn công Một lượng lớn mã thông báo qXETH. Kẻ tấn công đã sử dụng thông tin xác thực qXETH này để rút cạn nhóm cho vay của Qubit.
Phân tích MistTrack
tóm tắt
tóm tắt
Nguyên nhân chính của cuộc tấn công này là do khi nạp riêng Token thông thường và Token gốc, khi chuyển Token trong danh sách trắng, địa chỉ không được kiểm tra lại xem có bằng 0 hay không, dẫn đến việc nạp tiền lẽ ra phải được thực hiện thông qua chức năng nạp lại riêng.Tuy nhiên, hoạt động có thể thông suốt thông qua logic nạp lại Mã thông báo thông thường. Nhóm bảo mật SlowMist gợi ý rằng sau khi kiểm tra danh sách trắng của mã thông báo đã nạp, vẫn cần kiểm tra xem mã thông báo đã nạp có phải là mã thông báo gốc hay không.
liên kết gốc
https://etherscan.io/tx/0x478d83f2ad909c64a9a3d807b3d8399bb67a997f9721fc5580ae2c51fab92acf
https://bscscan.com/tx/0x33628dcc2ca6cd89a96d241bdf17cdc8785cf4322dcaf2c79766c990579aea02