CVE-2024-7884 | Memory leak when calling a canister method via `ic_cdk::call`

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. PatchesThe 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. WorkaroundsThere 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. Upgrading the canisters (without updating `ic_cdk`) also frees the leaked memory but it's only a temporary solution.

Published: 2024-09-05 Last update: 2024-09-12 Assigner: 6b35d637-e00f-4228-858c-b20ad6e1d07b Source: 6b35d637-e00f-4228-858c-b20ad6e1d07b

Conclusion & alert: CVE-2024-7884 is rated Moderate Risk (40.9/100): CVSS High severity, with low exploitation likelihood (EPSS 0.12%). Mandatory action: Review affected assets and schedule remediation.

Risk is dynamic; we continuously reassess and refresh what is shown on this page as upstream context changes.

Exploit prediction scoring system (EPSS) score for CVE-2024-7884

EPSS lead: Daily EPSS estimates relative likelihood of exploitation; percentile ranks this CVE among scored vulnerabilities (higher = more severe relative rank).

# Date Old EPSS score New EPSS score Delta (New - Old)
1 2025-11-30 0.15% 0.12% -0.04%
2 2025-11-21 0.65% 0.15% -0.49%
3 2025-11-18 0.65%

Full EPSS history (14 records total)

Common vulnerability scoring system (CVSS) metrics for CVE-2024-7884

CVSS metrics for this CVE.

Base score Version Severity Vector Exploitability Impact Score source
7.5 3.1 HIGH
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H Click to expand
Attack vector (AV:N)
Could be attacked over the internet or any normal routed network—not just someone sitting at the machine.
Attack complexity (AC:L)
Once they can reach the bug, pulling it off is straightforward—no weird race conditions or rare setup.
Privileges required (PR:N)
No account or special rights needed—anonymous or random user is enough.
User interaction (UI:N)
Nobody has to click “OK” or open a trap file; it can work without a victim helping.
Scope (S:U)
Damage stays in the same “trust bubble” as the broken component—no big spill into unrelated systems.
Confidentiality (C:N)
Doesn’t really leak secrets in a meaningful way.
Integrity (I:N)
Data isn’t meaningfully altered or forged.
Availability (A:H)
Could take the service down hard or make it unusable for people who depend on it.
3.9 3.6 6b35d637-e00f-4228-858c-b20ad6e1d07b
7.5 3.1 HIGH
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H Click to expand
Attack vector (AV:N)
Could be attacked over the internet or any normal routed network—not just someone sitting at the machine.
Attack complexity (AC:L)
Once they can reach the bug, pulling it off is straightforward—no weird race conditions or rare setup.
Privileges required (PR:N)
No account or special rights needed—anonymous or random user is enough.
User interaction (UI:N)
Nobody has to click “OK” or open a trap file; it can work without a victim helping.
Scope (S:U)
Damage stays in the same “trust bubble” as the broken component—no big spill into unrelated systems.
Confidentiality (C:N)
Doesn’t really leak secrets in a meaningful way.
Integrity (I:N)
Data isn’t meaningfully altered or forged.
Availability (A:H)
Could take the service down hard or make it unusable for people who depend on it.
3.9 3.6 [email protected]

Weakness enumeration for CVE-2024-7884

GitHub Security Advisory for CVE-2024-7884

GHSA-rwq6-crjg-9cpw · Severity: high · Ecosystem: rust — ic-cdk has a memory leak when calling a canister method via `ic_cdk::call`

Affected software / configurations for CVE-2024-7884

Vendor Product Version Raw CPE
dfinity canister_developer_kit_for_the_internet_computer >= 0.8.0, < 0.8.2 cpe:2.3:a:dfinity:canister_developer_kit_for_the_internet_computer:*:*:*:*:*:rust:*:*
dfinity canister_developer_kit_for_the_internet_computer >= 0.9.0, < 0.9.3 cpe:2.3:a:dfinity:canister_developer_kit_for_the_internet_computer:*:*:*:*:*:rust:*:*
dfinity canister_developer_kit_for_the_internet_computer >= 0.11.0, < 0.11.6 cpe:2.3:a:dfinity:canister_developer_kit_for_the_internet_computer:*:*:*:*:*:rust:*:*
dfinity canister_developer_kit_for_the_internet_computer >= 0.12.0, < 0.12.2 cpe:2.3:a:dfinity:canister_developer_kit_for_the_internet_computer:*:*:*:*:*:rust:*:*
dfinity canister_developer_kit_for_the_internet_computer >= 0.13.0, < 0.13.5 cpe:2.3:a:dfinity:canister_developer_kit_for_the_internet_computer:*:*:*:*:*:rust:*:*
dfinity canister_developer_kit_for_the_internet_computer 0.10.0 cpe:2.3:a:dfinity:canister_developer_kit_for_the_internet_computer:0.10.0:*:*:*:*:rust:*:*
dfinity canister_developer_kit_for_the_internet_computer 0.14.0 cpe:2.3:a:dfinity:canister_developer_kit_for_the_internet_computer:0.14.0:*:*:*:*:rust:*:*
dfinity canister_developer_kit_for_the_internet_computer 0.15.0 cpe:2.3:a:dfinity:canister_developer_kit_for_the_internet_computer:0.15.0:*:*:*:*:rust:*:*

References for CVE-2024-7884

cvelogic Threat Intelligence