
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-82677 is a double free vulnerability in the Module Timer Subsystem of Valkey 9.1.0, specifically within the moduleTimerHandler() function in src/module.c. The flaw occurs when a module timer callback invokes ValkeyModule_StopTimer() on its own currently-firing timer, causing the timer object to be freed twice — once inside the callback and again by the dispatcher after the callback returns. The vulnerability was reported on July 17, 2026, publicly disclosed on August 31, 2026, and affects only Valkey version 9.1.0. It carries a CVSS v3.1 base score of 2.4 (Low) and a CVSS v4.0 base score of 1.9 (Low) (GitHub Advisory, Valkey Issue).
The root cause is classified as CWE-415 (Double Free) and CWE-119 (Improper Restriction of Operations within the Bounds of a Memory Buffer). In moduleTimerHandler(), when a timer expires, the dispatcher fetches the ValkeyModuleTimer object from the global Timers radix tree and invokes the timer's callback. If the callback calls ValkeyModule_StopTimer() on the same timer ID, VM_StopTimer() legally removes the entry from the radix tree and frees the timer object. Upon callback return, moduleTimerHandler() holds a now-stale pointer and unconditionally performs a second raxRemove() and zfree() on the already-freed object, triggering the double free. Exploitation requires network access, high privileges (an authenticated user who can load or interact with a malicious module), and user interaction, making it a low-severity but reproducible denial-of-service condition. A public PoC (PoC.zip) and detailed ASan/GDB traces were included in the original issue report (Valkey Issue, Valkey PR).
Successful exploitation causes a reproducible crash (abort) of the valkey-server process, resulting in a denial of service. There is no confidentiality or integrity impact — the vulnerability only affects availability, and only at the process level. Because Valkey is typically used as a caching or real-time data store, a crash could disrupt dependent applications, but lateral movement or data exfiltration are not possible through this vulnerability (Valkey Issue, GitHub Advisory).
A proof-of-concept (PoC.zip) was publicly disclosed alongside the original issue report, demonstrating a reproducible server crash under AddressSanitizer. The EPSS score is approximately 0.0029 (0.29%), indicating low probability of widespread exploitation. The NVD SSVC assessment classifies exploitation as "poc" and automation as "no," meaning exploitation is not trivially automated. There is no evidence of in-the-wild exploitation, and the vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog (Valkey Issue, GitHub Advisory).
.so file) that registers a command (e.g., selfstop.arm) which creates a timer via ValkeyModule_CreateTimer() and stores the returned timer ID in the callback's data structure.selfstop_cb), call ValkeyModule_StopTimer(ctx, stored_id, NULL) using the same timer ID that is currently firing, causing VM_StopTimer() to free the timer object from within the callback../valkey-server --port 6411 --loadmodule /tmp/timer_selfstop_uaf.so.valkey-cli and invoke the module command: ./valkey-cli -p 6411 selfstop.arm. This arms the timer.moduleTimerHandler() invokes the callback, which frees the timer object; the dispatcher then attempts a second free, causing a double free and crashing the server process (Valkey Issue).valkey-server process; core dump files generated in the working directory.ERROR: AddressSanitizer: attempting to call malloc_usable_size() for pointer which is not owned referencing moduleTimerHandler in src/module.c; server log entries showing abnormal termination or SIGABRT..so module files loaded into the Valkey server (e.g., files in /tmp/ referenced by --loadmodule arguments); core dump files (e.g., core.*) in the server's working directory.Apply the official patch commit b349fe2821e3998534b1454c1b64a478daf8c6b7, which was merged on August 3, 2026, and backported to Valkey 7.2, 8.0, 8.1, 9.0, and 9.1 branches. The fix preserves the timer ID before invoking the callback and re-checks whether the timer ID still maps to the same live object in the Timers radix tree before performing cleanup, preventing the double free. As a workaround, restrict network access to Valkey instances to only trusted administrators and implement network segmentation to limit who can reach Valkey services and load modules (Valkey PR, Patch Commit).
The vulnerability was responsibly reported by researcher gff-cw via a detailed GitHub issue on July 17, 2026, including full ASan traces, GDB evidence, and a proposed patch. Valkey maintainer enjoy-binbin reviewed and approved the fix contributed by quanyeyang, merging it on August 3, 2026, with backports across all supported release branches. The fix was noted for inclusion in release notes for Valkey 8.0.11, 8.1.10, 9.0.6, and 9.1.2. No significant broader media coverage or social media discussion was observed beyond the GitHub issue and pull request (Valkey Issue, Valkey PR).
Fix availability across major Linux distributions and their releases.
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."