Loading...
Skip to main content

CVE-2024-7884 — Vulnerability in ic_cdk — CVE Details

HIGH

ic-cdk has a memory leak when calling a canister method via `ic_cdk::call`

Published September 5, 2024Updated September 9, 2024Source: osv

Summary

When a canister method is called via `ic_cdk::call*`, a new Future `CallFuture` is created and can be awaited by the caller to get the execution result. Internally, the state of the Future is tracked and stored in a struct called `CallFutureState`. A bug in the polling implementation of the `CallFuture` allows multiple references to be held for this internal state and not all references were dropped before the `Future` is resolved. Since we have unaccounted references held, a copy of the internal state ended up being persisted in the canister's heap and thus causing a memory leak. ### Impact Canisters built in Rust with `ic_cdk` and `ic_cdk_timers` are affected. If these canisters call a canister method, use timers or heartbeat, they will likely leak a small amount of memory on every such operation. **In the worst case, this could lead to heap memory exhaustion triggered by an attacker.** Motoko based canisters are not affected by the bug. ### Patches The patch has been backported to all minor versions between `>= 0.8.0, <= 0.15.0`. The patched versions available are `0.8.2, 0.9.3, 0.10.1, 0.11.6, 0.12.2, 0.13.5, 0.14.1, 0.15.1` and their previous versions have been yanked. ### Workarounds There are no known workarounds at the moment. Developers are recommended to upgrade their canister as soon as possible to the latest available patched version of `ic_cdk` to avoid running out of Wasm heap memory. > [!NOTE] > Upgrading the canisters (without updating `ic_cdk`) also frees the leaked memory but it's only a temporary solution. ### References - [dfinity/cdk-rs/pull/509](https://github.com/dfinity/cdk-rs/pull/509) - [ic_cdk docs](https://docs.rs/ic-cdk/latest/ic_cdk/) - [Internet Computer Specification](https://internetcomputer.org/docs/current/references/ic-interface-spec)

Advisory Timeline

  • First published September 5, 2024 (767 days ago).
  • Last revised September 9, 2024 — 4 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

Cargo
Update ic_cdk to 0.10.1 or later
cargo update -p ic_cdk --precise 0.10.1
Cargo
Update ic_cdk to 0.14.1 or later
cargo update -p ic_cdk --precise 0.14.1
Cargo
Update ic_cdk to 0.8.2 or later
cargo update -p ic_cdk --precise 0.8.2
Cargo
Update ic_cdk to 0.9.3 or later
cargo update -p ic_cdk --precise 0.9.3
Cargo
Update ic_cdk to 0.15.1 or later
cargo update -p ic_cdk --precise 0.15.1
Cargo
Update ic_cdk to 0.12.2 or later
cargo update -p ic_cdk --precise 0.12.2
Cargo
Update ic_cdk to 0.11.6 or later
cargo update -p ic_cdk --precise 0.11.6
Cargo
Update ic_cdk to 0.13.5 or later
cargo update -p ic_cdk --precise 0.13.5

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (8)

Affects 1 ecosystem: crates.io (1).

PackageEcosystemAffectedFixed In
ic_cdk
crates.io
All versions0.10.1
ic_cdk
crates.io
All versions0.14.1
ic_cdk
crates.io
All versions0.8.2
ic_cdk
crates.io
All versions0.9.3
ic_cdk
crates.io
All versions0.15.1
ic_cdk
crates.io
All versions0.12.2
ic_cdk
crates.io
All versions0.11.6
ic_cdk
crates.io
All versions0.13.5

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 7.5 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Frequently Asked Questions

What is CVE-2024-7884?
ic-cdk has a memory leak when calling a canister method via `ic_cdk::call` This vulnerability has been assigned a severity rating of HIGH (CVSS score: 7.5/10).
How do I check if my project is affected by CVE-2024-7884?
CVE-2024-7884 affects ic_cdk. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2024-7884 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
7.5

High exploitability or significant impact. Prioritize remediation within days.

Also Known As

GHSA-rwq6-crjg-9cpw
RUSTSEC-2024-0372

Related CVEs

  • CVE-2026-93657
    HIGH

    hickory-resolver: Resolver::lookup() and Resolver::lookup_ip() APIs obscure DNSSEC validation failures

  • CVE-2026-18140
    HIGH

    aws-smithy-json: Uncontrolled recursion in the aws-smithy-json unknown-key skip path allows unauthenticated remote denial of service in smithy-rs generated servers

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies