Gần đây, giao thức Cork trên chuỗi Ether đã bị tấn công, kẻ tấn công đã thu lợi 12 triệu đô la Mỹ thông qua lỗ hổng logic trong hợp đồng dự án (không xác minh các tham số quan trọng). Bài viết này đã phân tích chi tiết sự kiện tấn công này và theo dõi dòng tiền.
Tác giả: Beosin
Gần đây, giao thức Cork trên chuỗi Ether đã bị tấn công, kẻ tấn công đã thu lợi 12 triệu USD thông qua lỗ hổng logic của hợp đồng dự án (không xác minh các tham số quan trọng). Đội ngũ an ninh Beosin đã thực hiện phân tích chi tiết về sự kiện tấn công này và theo dõi nguồn tiền, và đã chia sẻ kết quả như sau:
Các bước tấn công chi tiết
Trước khi phân tích một cuộc tấn công, chúng ta cần hiểu logic kinh doanh đặc biệt của Cork Protocol. Nó giới thiệu cơ chế hoán đổi mặc định tín dụng tương tự như tài chính truyền thống (được gọi là Depeg Swap), mã hóa rủi ro khử neo của tài sản được chốt (chẳng hạn như stETH) và người dùng có thể bảo hiểm rủi ro hủy chốt của tài sản được neo. Các loại token là:
Tài sản chuộc lại (Redemption Asset, RA): Tài sản cơ bản (như Ether)
Tài sản neo (Pegged Asset, PA): Tài sản neo với tài sản cơ sở (như stETH)
Depeg Swaps (DS): Tương tự như quyền chọn bán, phòng ngừa rủi ro với giá giảm
Token bảo hiểm (Cover Token, CT) — Tương tự như quyền chọn mua, chưa xảy ra mất giá, có thể kiếm lợi nhuận; nếu xảy ra mất giá, thì cần phải chịu tổn thất.
Khi người dùng gửi RA, Cork Protocol sẽ mint các token DS và CT, người dùng có thể giao dịch hoặc đổi lại để đặt cược hoặc phòng ngừa rủi ro.
Cuộc tấn công này liên quan đến thị trường mã thông báo thực sự và thị trường giả mà kẻ tấn công tạo ra:
(1) Kẻ tấn công trước tiên tạo ra một thị trường giả, thị trường này có RA là token weETH8DS-2 và PA là wstETH. Có thể thấy rằng, weETH8DS-2 vốn dĩ là DS trong thị trường thực, nhưng lại có thể được sử dụng như RA trong thị trường giả, điều này lẽ ra phải bị cấm thông qua việc xác minh token giữa các thị trường.
(2) Kẻ tấn công mua weETH8CT-2 từ thị trường thực.
(3) tấn công đã khai thác việc thiếu kiểm soát truy cập thích hợp của hàm beforeSwap trong hàm CorkHook để gửi dữ liệu Hook tùy chỉnh đến hàm CorkCall, buộc nó phải chia weETH8DS-2 của mình thành giả _DS và giả _CT. Điều này có thể xảy ra vì weETH8DS-2 là RA của thị trường giả mạo và chức năng này coi _DS giả và _CT giả là thuộc về những kẻ tấn công.
(4) fake_DS và fake_CT token đã được chuyển cho kẻ tấn công, theo quy tắc của Cork Protocol: DS và CT token có thể được đổi thành RA token. Kẻ tấn công đã đổi fake_DS và fake_CT token nhận được qua thị trường ảo thành weETH8DS-2.
(5) Hiện tại, kẻ tấn công sở hữu weETH8CT-2 đã mua từ bước 2, weETH8DS-2 đã được lắp ráp lại, và điều này có thể được đổi từ thị trường thực sang RA (tức là wstETH).
Do đó, kẻ tấn công có thể chuyển đổi tính thanh khoản DS của thị trường thực sang một thị trường khác (thị trường giả được xây dựng) để thực hiện việc đổi RA, từ đó rút ra tính thanh khoản RA trong thị trường thực. Kẻ tấn công đã đánh cắp 3761 wstETH trong sự kiện này và đổi nó thành ETH có giá trị khoảng 12 triệu đô la.
Phân tích lỗ hổng
Qua quy trình tấn công trên, chúng ta có thể thấy rằng lý do khai thác lỗ hổng của toàn bộ sự kiện có ba điểm sau:
Thiếu xác minh: Không kiểm tra xem DS được sử dụng làm RA đã được sử dụng trên các thị trường khác hay chưa.
CorkCall dữ liệu callback do người dùng đáng tin cậy cung cấp mà không có xác minh thích hợp.
Giao thức này cho phép tạo ra các thị trường không cần cấp phép và không bị hạn chế.
Mặc dù Cork Protocol đã trải qua nhiều cuộc kiểm tra bảo mật và cuộc thi kiểm toán, nhưng lỗ hổng logic này đã bị bỏ qua. Cuộc tấn công này có thể tránh được nếu có các cuộc kiểm tra nghiêm ngặt hơn về khả năng tái sử dụng token, xác minh nghiêm ngặt dữ liệu callback và kiểm soát chặt chẽ hơn đối với việc tạo ra thị trường.
Theo dõi tiền bị đánh cắp
Beosin Trace đã theo dõi các quỹ bị đánh cắp và phát hiện: địa chỉ của kẻ tấn công 0xea6f30e360192bae715599e15e2f765b49e4da98 đã thu lợi khoảng 3761 wstETH, sau đó đã đổi wstETH thành ETH thông qua các giao thức DeFi như Uniswap, 1inch, tổng số lượng là 4530.6.
Hiện tại, số tiền bị đánh cắp vẫn chưa được chuyển đi. Beosin Trace đã thêm các địa chỉ liên quan đến hacker vào danh sách đen, và sẽ tiếp tục theo dõi trong thời gian tới.
Theo phân tích của Beosin Trace, tất cả các khoản tiền bị đánh cắp vẫn đang được lưu trữ tại địa chỉ của kẻ tấn công.
Tóm tắt
Trọng tâm của cuộc tấn công là một lỗ hổng logic kinh doanh cốt lõi trong Cork Protocol, dẫn đến việc kẻ tấn công đánh cắp một lượng lớn wstETH thông qua các token giả mạo. Các giao thức DeFi phức tạp như Cork Protocol yêu cầu kiểm tra và xem xét chi tiết logic kinh doanh của hợp đồng thông qua kiểm tra bảo mật nhiều mặt và nhiều lớp. Trước đây, đội ngũ bảo mật Beosin đã hoàn thành kiểm tra bảo mật của nhiều giao thức DeFi (ví dụ: Surf Protocol, SyncSwap, LeverFi, Owlto Finance), tập trung vào việc tìm ra các lỗ hổng logic hợp đồng và các trường hợp cạnh có thể bị bỏ qua, đảm bảo rằng giao thức được kiểm tra đầy đủ.
Xem bản gốc
Nội dung chỉ mang tính chất tham khảo, không phải là lời chào mời hay đề nghị. Không cung cấp tư vấn về đầu tư, thuế hoặc pháp lý. Xem Tuyên bố miễn trừ trách nhiệm để biết thêm thông tin về rủi ro.
Phân tích lỗ hổng|Phân tích sự kiện 12 triệu đô la bị đánh cắp của giao thức Cork Protocol và theo dõi tài sản.
Tác giả: Beosin
Gần đây, giao thức Cork trên chuỗi Ether đã bị tấn công, kẻ tấn công đã thu lợi 12 triệu USD thông qua lỗ hổng logic của hợp đồng dự án (không xác minh các tham số quan trọng). Đội ngũ an ninh Beosin đã thực hiện phân tích chi tiết về sự kiện tấn công này và theo dõi nguồn tiền, và đã chia sẻ kết quả như sau:
Các bước tấn công chi tiết
Trước khi phân tích một cuộc tấn công, chúng ta cần hiểu logic kinh doanh đặc biệt của Cork Protocol. Nó giới thiệu cơ chế hoán đổi mặc định tín dụng tương tự như tài chính truyền thống (được gọi là Depeg Swap), mã hóa rủi ro khử neo của tài sản được chốt (chẳng hạn như stETH) và người dùng có thể bảo hiểm rủi ro hủy chốt của tài sản được neo. Các loại token là:
Tài sản chuộc lại (Redemption Asset, RA): Tài sản cơ bản (như Ether)
Tài sản neo (Pegged Asset, PA): Tài sản neo với tài sản cơ sở (như stETH)
Depeg Swaps (DS): Tương tự như quyền chọn bán, phòng ngừa rủi ro với giá giảm
Token bảo hiểm (Cover Token, CT) — Tương tự như quyền chọn mua, chưa xảy ra mất giá, có thể kiếm lợi nhuận; nếu xảy ra mất giá, thì cần phải chịu tổn thất.
Khi người dùng gửi RA, Cork Protocol sẽ mint các token DS và CT, người dùng có thể giao dịch hoặc đổi lại để đặt cược hoặc phòng ngừa rủi ro.
Cuộc tấn công này liên quan đến thị trường mã thông báo thực sự và thị trường giả mà kẻ tấn công tạo ra:
(1) Kẻ tấn công trước tiên tạo ra một thị trường giả, thị trường này có RA là token weETH8DS-2 và PA là wstETH. Có thể thấy rằng, weETH8DS-2 vốn dĩ là DS trong thị trường thực, nhưng lại có thể được sử dụng như RA trong thị trường giả, điều này lẽ ra phải bị cấm thông qua việc xác minh token giữa các thị trường.
(2) Kẻ tấn công mua weETH8CT-2 từ thị trường thực.
(3) tấn công đã khai thác việc thiếu kiểm soát truy cập thích hợp của hàm beforeSwap trong hàm CorkHook để gửi dữ liệu Hook tùy chỉnh đến hàm CorkCall, buộc nó phải chia weETH8DS-2 của mình thành giả _DS và giả _CT. Điều này có thể xảy ra vì weETH8DS-2 là RA của thị trường giả mạo và chức năng này coi _DS giả và _CT giả là thuộc về những kẻ tấn công.
(4) fake_DS và fake_CT token đã được chuyển cho kẻ tấn công, theo quy tắc của Cork Protocol: DS và CT token có thể được đổi thành RA token. Kẻ tấn công đã đổi fake_DS và fake_CT token nhận được qua thị trường ảo thành weETH8DS-2.
(5) Hiện tại, kẻ tấn công sở hữu weETH8CT-2 đã mua từ bước 2, weETH8DS-2 đã được lắp ráp lại, và điều này có thể được đổi từ thị trường thực sang RA (tức là wstETH).
Do đó, kẻ tấn công có thể chuyển đổi tính thanh khoản DS của thị trường thực sang một thị trường khác (thị trường giả được xây dựng) để thực hiện việc đổi RA, từ đó rút ra tính thanh khoản RA trong thị trường thực. Kẻ tấn công đã đánh cắp 3761 wstETH trong sự kiện này và đổi nó thành ETH có giá trị khoảng 12 triệu đô la.
Phân tích lỗ hổng
Qua quy trình tấn công trên, chúng ta có thể thấy rằng lý do khai thác lỗ hổng của toàn bộ sự kiện có ba điểm sau:
Thiếu xác minh: Không kiểm tra xem DS được sử dụng làm RA đã được sử dụng trên các thị trường khác hay chưa.
CorkCall dữ liệu callback do người dùng đáng tin cậy cung cấp mà không có xác minh thích hợp.
Giao thức này cho phép tạo ra các thị trường không cần cấp phép và không bị hạn chế.
Mặc dù Cork Protocol đã trải qua nhiều cuộc kiểm tra bảo mật và cuộc thi kiểm toán, nhưng lỗ hổng logic này đã bị bỏ qua. Cuộc tấn công này có thể tránh được nếu có các cuộc kiểm tra nghiêm ngặt hơn về khả năng tái sử dụng token, xác minh nghiêm ngặt dữ liệu callback và kiểm soát chặt chẽ hơn đối với việc tạo ra thị trường.
Theo dõi tiền bị đánh cắp
Beosin Trace đã theo dõi các quỹ bị đánh cắp và phát hiện: địa chỉ của kẻ tấn công 0xea6f30e360192bae715599e15e2f765b49e4da98 đã thu lợi khoảng 3761 wstETH, sau đó đã đổi wstETH thành ETH thông qua các giao thức DeFi như Uniswap, 1inch, tổng số lượng là 4530.6.
Hiện tại, số tiền bị đánh cắp vẫn chưa được chuyển đi. Beosin Trace đã thêm các địa chỉ liên quan đến hacker vào danh sách đen, và sẽ tiếp tục theo dõi trong thời gian tới.
Theo phân tích của Beosin Trace, tất cả các khoản tiền bị đánh cắp vẫn đang được lưu trữ tại địa chỉ của kẻ tấn công.
Tóm tắt
Trọng tâm của cuộc tấn công là một lỗ hổng logic kinh doanh cốt lõi trong Cork Protocol, dẫn đến việc kẻ tấn công đánh cắp một lượng lớn wstETH thông qua các token giả mạo. Các giao thức DeFi phức tạp như Cork Protocol yêu cầu kiểm tra và xem xét chi tiết logic kinh doanh của hợp đồng thông qua kiểm tra bảo mật nhiều mặt và nhiều lớp. Trước đây, đội ngũ bảo mật Beosin đã hoàn thành kiểm tra bảo mật của nhiều giao thức DeFi (ví dụ: Surf Protocol, SyncSwap, LeverFi, Owlto Finance), tập trung vào việc tìm ra các lỗ hổng logic hợp đồng và các trường hợp cạnh có thể bị bỏ qua, đảm bảo rằng giao thức được kiểm tra đầy đủ.