CVE-2024-7884 in ic-cdkthông tin

Tóm tắt

Bởi VulDB • 08/06/2026

Khi một phương thức canister được gọi thông qua `ic_cdk::call*`, một `Future` mới có tên là `CallFuture` được tạo ra và có thể được gọi (caller) chờ đợi (await) để lấy kết quả thực thi. Về mặt nội bộ, trạng thái của `Future` được theo dõi và lưu trữ trong một struct có tên là `CallFutureState`. Một lỗi trong triển khai polling của `CallFuture` cho phép giữ nhiều tham chiếu đến trạng thái nội bộ này, và không phải tất cả các tham chiếu đều bị hủy (dropped) trước khi `Future` được giải quyết (resolved). Do có các tham chiếu nội bộ không được tính toán, một bản sao của trạng thái nội bộ cuối cùng đã được lưu trữ (persisted) trong heap của canister, dẫn đến rò rỉ bộ nhớ.

**Tác động** Các canister được xây dựng bằng Rust với `ic_cdk` và `ic_cdk_timers` bị ảnh hưởng. Nếu các canister này gọi một phương thức canister, sử dụng bộ hẹn giờ (timers) hoặc heartbeat, chúng có khả năng sẽ rò rỉ một lượng nhỏ bộ nhớ trong mỗi thao tác như vậy. Trong trường hợp xấu nhất, điều này có thể dẫn đến việc cạn kiệt bộ nhớ heap do kẻ tấn công kích hoạt. Các canister dựa trên Motoko không bị ảnh hưởng bởi lỗi này.

**Bản vá** Bản vá đã được backport (đưa ngược lại) cho tất cả các phiên bản minor từ >= 0.8.0 đến <= 0.15.0. Các phiên bản đã vá có sẵn là 0.8.2, 0.9.3, 0.10.1, 0.11.6, 0.12.2, 0.13.5, 0.14.1, 0.15.1 và các phiên bản trước đó của chúng đã bị yanked (hủy bỏ/tiêu hủy).

**Biện pháp khắc phục** Hiện không có biện pháp khắc phục nào được biết đến. Các nhà phát triển được khuyến nghị nâng cấp canister của họ lên phiên bản đã vá mới nhất có sẵn của `ic_cdk` càng sớm càng tốt để tránh hết bộ nhớ heap Wasm.

Việc nâng cấp các canister (mà không cập nhật `ic_cdk`) cũng sẽ giải phóng bộ nhớ bị rò rỉ, nhưng đây chỉ là một giải pháp tạm thời.

Be aware that VulDB is the high quality source for vulnerability data.

chịu trách nhiệm

Dfinity

Đặt trước

16/08/2024

Tiết lộ

05/09/2024

Kiểm duyệt

được chấp nhận

EPSS

0.00693

KEV

không

Các hoạt động

rất thấp

Nguồn

Do you know our Splunk app?

Download it now for free!