BTC
$96,000
5.73%
ETH
$3,521.91
3.97%
HTX
$0.{5}2273
5.23%
SOL
$198.17
3.05%
BNB
$710
3.05%
lang
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
Trang chủ
AI AI
Tin nhanh
Bài viết
Sự kiện
BlockBeats Pro
Thêm
Thông tin tài chính
Chuyên đề
Hệ sinh thái chuỗi khối
Mục nhập
Podcast
Data
OPRR
Partnered With:

Giải thích chi tiết về lỗ hổng hợp đồng thông minh AirSwap: Tài sản của người dùng có thể bị kẻ tấn công lấy đi một cách ác ý không?

Đọc bài viết này mất 16 phút
Lỗ hổng nhận lệnh độc hại của AirSwap đã khiến mọi người chú ý hơn đến vấn đề bảo mật của hợp đồng thông minh.
Tiêu đề gốc: "Giải thích chi tiết về lỗ hổng hợp đồng thông minh AirSwap: Tài sản của người dùng có thể bị kẻ tấn công lấy đi một cách ác ý không?" 》
Nguồn gốc: PeckShield


Vào ngày 13 tháng 9 năm 2019, nhóm AirSwap đã thông báo về một lỗ hổng nghiêm trọng trong hợp đồng thông minh AirSwap. có thể cho phép tài sản của người dùng bị đối thủ độc hại "đánh cắp" trong một số trường hợp nhất định. Nhân viên an ninh của PeckShield đã phân tích độc lập lỗ hổng và thông báo chi tiết cũng như kế hoạch sửa chữa với nhóm AirSwap.


Tổng quan về tác động của lỗ hổng  


PeckShield Security After Phân tích chuyên sâu về hợp đồng thông minh AirSwap, nhân viên nhận thấy lỗ hổng này chỉ ảnh hưởng đến Wrapper mới ra mắt gần đây. Sau khi phát hiện ra sự cố, nhóm AirSwap đã ngay lập tức ngoại tuyến hợp đồng hiện tại và khôi phục trang web AirSwap về hợp đồng đã sử dụng trước đó. Toàn bộ quá trình từ lên mạng đến khắc phục sự cố chỉ kéo dài 24 giờ, điều này cho thấy đội ngũ AirSwap rất coi trọng vấn đề bảo mật hợp đồng.

Nhân viên bảo mật của PeckShield đã phân tích độc lập các chi tiết về lỗ hổng, trao đổi chi tiết và cách khắc phục với nhóm AirSwap, đồng thời đặt tên cho lỗ hổng này là "ItchySwap".

PeckShield muốn nhắc bạn rằng vì lỗ hổng này có thể cho phép những kẻ tấn công đánh cắp tài sản của người dùng một cách ác ý nên tổng cộng 18 tài khoản bị ảnh hưởng và một số trong số đó có With tài sản từ hàng chục đến hàng trăm nghìn đô la, những tài khoản này cần được nâng cấp càng sớm càng tốt hoặc liên hệ với nhóm AirSwap.


Giải thích chi tiết về lỗ hổng ItchySwap


1. Hợp đồng AirSwap


Để thuận tiện, trước khi phân tích , trước tiên chúng ta hãy định nghĩa một số khái niệm:


1. nhà sản xuất: bên bán tài sản;

2. người nhận: bên mua

3. order: lệnh giao tài sản giữa người sản xuất và người nhận

4. Người lập chỉ mục: sổ lệnh trong AirSwap, thu thập thông tin về những tài sản hiện đang được bán và những tài sản đó cái đó cần phải mua.


Hình dưới đây minh họa quá trình tương tác giữa người tạo, người lấy và người lập chỉ mục:



AirSwap là một sàn giao dịch phi tập trung ngang hàng dựa trên Ethereum, tích hợp Giao thức hoán đổi và phục vụ như một dịch vụ lưu ký tự động, cho phép cả hai bên tham gia giao dịch (tức là người tạo và người nhận) giao dịch an toàn bất kỳ tài sản nào trên Ethereum. Không giống như nhiều sàn giao dịch phi tập trung, AirSwap triển khai mô hình ngang hàng hoàn toàn để giao dịch và khớp lệnh, mặc dù nó không có quyền kiểm soát giám sát đối với tiền nhưng vẫn có sổ đặt hàng tập trung cho mục đích khớp lệnh.

Điều đặc biệt đáng nói là có một dịch vụ ngoài chuỗi tên là Indexer có thể tổng hợp ý định giao dịch từ người tạo và người nhận, sau đó cung cấp cho họ các dịch vụ phù hợp. Đặc biệt, khi người mua tìm được nhà sản xuất phù hợp sẽ bắt đầu thương lượng giá ngoài cơ sở. Sau khi đạt được thỏa thuận, đơn đặt hàng sẽ được thực hiện và tài sản sẽ được Taker phân phối trên chuỗi thông qua Giao thức hoán đổi.

Trong hợp đồng thông minh AirSwap, quá trình người nhận tải đơn đặt hàng lên chuỗi và phân phối tài sản diễn ra trong hàm AirSwap swap(Types.Order calldata _order). Điều này chức năng được triển khai như sau Hiển thị:



1) Xác minh tính hợp lệ của đơn hàng

Kiểm tra tính hợp lệ của các thông số của đơn hàng. Thông tin này do người nhận chỉ định khi nó được tải lên chuỗi, điều đó cũng có nghĩa là Thông tin này có thể bị giả mạo bởi người lấy, bao gồm:



1. Đơn hàng vẫn còn hiệu lực;

2. Đơn hàng chưa được người nhận khác thực hiện;

3. đơn hàng chưa bị hủy;

4. Giá trị nonce của đơn hàng lớn hơn giá trị tối thiểu;

5. Đặt trạng thái đơn hàng thành trạng thái ĐÃ ĐÃ.


2) Xác minh thông tin người thực hiện


Thiết lập người nhận hợp lệ theo thông điệp người gọi được chỉ định trong đơn đặt hàng hoặc tương đương với hợp đồng.

3) Xác minh thông tin nhà sản xuất


Xác minh tính hợp lệ của người lập. Việc xác minh ở đây chia làm 2 trường hợp:


1. Lệnh không có chữ ký của người lập: Cần đảm bảo rằng msg.sender có quyền vận hành địa chỉ của người tạo, tức là người khởi tạo lệnh này có quyền vận hành tài sản của người tạo;

2. được chỉ định theo thứ tự: xác minh tính hợp lệ của giới tính chữ ký.


4) Giao tài sản


Nếu không có vấn đề gì với quy trình xác minh ở trên thì việc giao tài sản của người tạo và người nhận sẽ được thực hiện trực tiếp.

2. Hợp đồng Wrapper

Trong hợp đồng AirSwap ở trên, người dùng thực hiện hoán đổi tài sản thông qua hàm swap(). Quá trình này rất rõ ràng và không có vấn đề gì. Tuy nhiên, hợp đồng này còn một số điểm chưa hoàn hảo, người dùng chỉ có thể thực hiện hoán đổi tài sản thông qua Token và không thể tham gia trực tiếp bằng tiền tệ nền tảng ETH. Trước tiên, người dùng có thể chuyển đổi ETH thành WETH, sau đó sử dụng WETH để tham gia trao đổi, nhưng trong mọi trường hợp, trải nghiệm người dùng chỉ là một bước nữa.

Để giảm bớt khó khăn trong trải nghiệm người dùng, nhóm AirSwap đã ra mắt hợp đồng Wrapper vào ngày 12 tháng 9 năm 2019, hợp đồng này được sử dụng để tự động chuyển đổi ETH do người dùng chuyển thành WETH Then tham gia vào quá trình hoán đổi tài sản. Các quy trình chính như sau:



1. Xác minh rằng người khởi tạo và người nhận swap() giống nhau;

2. Nếu người dùng khởi tạo swap() bằng nội dung ETH và mã thông báo cần được chuyển đổi là WETH thì Nó sẽ tự động chuyển đổi ETH thành WETH;

3. Gọi trực tiếp hoạt động swap() của hợp đồng AirSwap.


Xem xét một kịch bản đặc biệt, Alice hy vọng sẽ thực hiện hoán đổi tài sản AirSwap thông qua hợp đồng Wrapper. Quá trình này yêu cầu Alice ủy quyền cho Wrapper trong hợp đồng AirSwap trước tiên. cho phép các hợp đồng Wrapper thực hiện các quy trình phân phối tài sản tương ứng của họ.

Do tính minh bạch của blockchain, Eve nhìn thấy hoạt động ủy quyền của Alice, sau đó anh ta có thể khởi tạo một lệnh độc hại đối với hợp đồng Wrapper, trong đó có nội dung sau:


1. Thời gian hợp lệ và nonce trong đơn hàng có giá trị rất lớn,

2. Tài khoản tương ứng với người tạo trong đơn hàng là tài khoản của Alice;

3. Người nhận đơn hàng trống,

4. Chữ ký trong đơn hàng trống.


Đặt lệnh đã xây dựng ở trên vào hàm swap() của AirSwap. Vì việc xác minh hai bước của bước 1 và 2 do người thực hiện kiểm soát nên sẽ có không vấn đề gì. Hãy tập trung vào bước thứ ba của việc xác minh thông tin nhà sản xuất:


Vì hợp đồng AirSwap được gọi bởi hợp đồng Wrapper tại thời điểm này nên msg.sender là địa chỉ của hợp đồng Wrapper. Như đã đề cập ở trên, hợp đồng Wrapper được Alice ủy quyền để trực tiếp kiểm soát tài sản của Alice. Mặc dù Eve không có quyền vận hành tài sản của Alice tại thời điểm này, nhưng tại thời điểm này, nó có thể được kiểm soát thông qua Wrapper, cơ quan này gián tiếp kiểm soát tài sản của Alice.


Kiểm soát an ninh


Nhân viên bảo mật PeckShield đã phân tích và nhận thấy tính đến ngày 28/09/2019, có tổng cộng 6 tài khoản đã thực hiện thao tác thu hồi() để hủy ủy quyền hợp đồng Wrapper và 12 tài khoản gặp rủi ro bảo mật, tất cả các tài khoản còn lại nên thực hiện ngay thao tác thu hồi() hoặc chuyển tài sản trong tài khoản sang tài khoản bảo mật chưa được ủy quyền cho Wrapper.

Bất kỳ mã nào cũng phải được kiểm tra và xác minh đầy đủ trước khi đưa vào môi trường sản xuất, đặc biệt là nền tảng DEX mang lại giá trị cho người dùng. Khi thêm các tính năng mới vào sản phẩm, phải xem xét tính tương thích và bảo mật của các tính năng cũ, việc đưa ra các tính năng mới không được dẫn đến các thiết kế chưa hoàn thiện ở các sản phẩm cũ.



Link gốc: https://mp.weixin.qq.com/ s/tkA-PAM8zlIkhmivnKwKLQ



Chào mừng bạn tham gia cộng đồng chính thức của BlockBeats:

Nhóm Telegram đăng ký: https://t.me/theblockbeats

Nhóm Telegram thảo luận: https://t.me/BlockBeats_App

Tài khoản Twitter chính thức: https://twitter.com/BlockBeatsAsia

Chọn thư viện
Thêm mới thư viện
Hủy
Hoàn thành
Thêm mới thư viện
Chỉ mình tôi có thể nhìn thấy
Công khai
Lưu
Báo lỗi/Báo cáo
Gửi