CVE-2024-7884 in ic-cdk정보

요약

\~에 의해 VulDB • 2026. 06. 06.

`ic_cdk::call*`를 통해 캔스터 메서드를 호출할 때, 새로운 Future인 `CallFuture`가 생성되며 호출자는 실행 결과를 얻기 위해 이를 대기(await)할 수 있습니다. 내부적으로 이 Future의 상태는 `CallFutureState`라는 구조체에 추적되어 저장됩니다. `CallFuture`의 폴링(polling) 구현에 있는 버그로 인해 해당 내부 상태를 참조하는 여러 개의 레퍼런스가 유지될 수 있으며, Future가 해결(resolved)되기 전에 모든 레퍼런스가 해제되지 않았습니다. 이로 인해 관리되지 않는 레퍼런스들이 남아있어 내부 상태의 사본이 캔스터 힙(heap)에 영구적으로 저장되었고, 결과적으로 메모리 누수가 발생했습니다.

**영향(Risk)** `ic_cdk` 및 `ic_cdk_timers`로 작성된 Rust 기반 캔스터가 영향을 받습니다. 이러한 캔스터들이 다른 캔스터 메서드를 호출하거나 타이머/하트비트를 사용하는 경우, 해당 작업마다 소량의 메모리가 누수될 가능성이 높습니다. 최악의 경우 공격자에 의해 힙 메모리 고갈(heap memory exhaustion)이 유발될 수 있습니다. Motoko 기반 캔스터는 이 버그로부터 영향을 받지 않습니다.

**패치(Patches)** 해당 패치는 0.8.0 이상 0.15.0 이하의 모든 마이너 버전으로 백포트되었습니다. 사용 가능한 패치된 버전은 0.8.2, 0.9.3, 0.10.1, 0.11.6, 0.12.2, 0.13.5, 0.14.1, 0.15.1이며, 이전 버전들은 yanked(삭제/무효화) 처리되었습니다.

**우회 방법(Workarounds)** 현재 알려진 우회 방법은 없습니다. Wasm 힙 메모리 고갈을 방지하기 위해 개발자는 가능한 한 빨리 `ic_cdk`의 최신 패치된 버전으로 캔스터를 업그레이드하는 것이 권장됩니다.

캔스터만 업그레이드하고(`ic_cdk`는 업데이트하지 않음) 누수된 메모리를 해제할 수도 있지만, 이는 임시 해결책에 불과합니다.

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

책임이 있는

Dfinity

예약하다

2024. 08. 16.

모더레이션

수락

항목

VDB-276647

EPSS

0.00693

출처

Want to know what is going to be exploited?

We predict KEV entries!