diff --git a/content/blog/2026-09-02-keeping-up-with-ai-valkey-security/images/og.webp b/content/blog/2026-09-02-keeping-up-with-ai-valkey-security/images/og.webp new file mode 100644 index 00000000..e36d3bae Binary files /dev/null and b/content/blog/2026-09-02-keeping-up-with-ai-valkey-security/images/og.webp differ diff --git a/content/blog/2026-09-02-keeping-up-with-ai-valkey-security/index.md b/content/blog/2026-09-02-keeping-up-with-ai-valkey-security/index.md new file mode 100644 index 00000000..b335ea16 --- /dev/null +++ b/content/blog/2026-09-02-keeping-up-with-ai-valkey-security/index.md @@ -0,0 +1,94 @@ ++++ +title = "Keeping up with AI: Valkey security in 2026" +description = "Valkey published more security advisories in the first eight months of 2026 than in its first twenty-one. AI made bugs cheaper to find. This post covers how the Valkey community is keeping up." +date = 2026-09-17 +authors = ["madolson", "murphyjacob4", "hpatro"] + +[taxonomies] +blog_type = ["Technical Deep Dive"] + +[extra] +featured = true +featured_image = "/assets/media/featured/security-shield-clean.webp" +og_image = "/blog/keeping-up-with-ai-valkey-security/images/og.webp" ++++ + +We published five security advisories in Valkey's first 21 months, from the March 2024 fork through the end of 2025. +We published seven advisories in the first eight months of 2026 and shipped almost three dozen security-adjacent fixes. +In one two-week stretch, three researchers who did not know about each other reported the same bug: a use-after-free in the script debugger, an uncommonly used feature in Valkey. + +This is the current state of many large open source projects. +New AI models can search codebases for vulnerabilities cheaply, and the cost of generating reports is almost zero. +Jeremy Stanley of OpenStack's vulnerability management team calls it a ["seemingly unending deluge of reports from researchers using LLMs to mine for security gold"](https://www.openwall.com/lists/oss-security/2026/04/28/15), and kernel, Red Hat, and HAProxy maintainers [see the same duplicate reports](https://lwn.net/Articles/1070698/). + +The Valkey project relies on a handful of maintainers to reproduce each report, judge severity, write the fix, coordinate the embargo, and ship it across every supported version. +It's easy to see this increase as a hopeless fight against a rising tide, but we think there is hope. +In this post we'll discuss three changes that are helping us keep up: what we count as a vulnerability, how we look for bugs ourselves, and how we ship the fixes faster. + +## Updating what counts as a vulnerability + +Valkey publishes a GitHub advisory and assigns a Common Vulnerabilities and Exposures (CVE) identifier so that organizations can track which vulnerabilities they need to patch. +Historically, we issued a CVE for any issue that affected the availability, confidentiality, or integrity of data in Valkey across clients. +That meant we issued CVEs for relatively minor issues, such as an authenticated client crashing the server with a malformed command, and coordinated patches with our end users. +These are real bugs, but malicious users who can execute commands can typically already do many malicious things, like deleting and modifying data and causing memory growth. +Spending time coordinating advisories wasn't delivering value to our users. +So we stopped issuing advisories for availability-only bugs that require an authenticated attacker, and now fix them as ordinary bugs in our normal release process. +Excluding the minor issues from the CVE process recovers maintainer time for the issues that really impact our end users. + +Here is how the updated policy works in practice: + +- A malformed request that crashes the server before authentication gets an advisory. + [CVE-2026-27623](https://github.com/valkey-io/valkey/security/advisories/GHSA-93p9-5vc7-8wgr) is this year's example. +- An out-of-bounds read reachable by an authenticated client gets an advisory. + The bytes it returns may belong to another client's keys or session, which ACLs should have kept from that client. +- Memory corruption with a credible path to code execution, or any action beyond granted permissions, gets an advisory. +- A crash or hang triggered by a client that holds `EVAL` permissions does not. + That client can write a Lua loop that pins a core indefinitely, so a bug that hangs the server doesn't give it anything it couldn't already do. + +## Using adversarial testing to find bugs + +Rather than wait for reports, we've started running AI-driven adversarial audits against our own code. +One example we found was a straightforward TLS bug that was easy for a human to miss. + +With TLS enabled, Valkey may decrypt more data from the TLS stream than a single command. +Valkey keeps a list of connections holding unread data and walks it once per event loop pass. +Walking the list means holding a pointer to the next connection while processing the current one, and processing a connection runs whatever command it sent. +If that command is `CLIENT KILL` aimed at the next connection on the list, the server frees that connection immediately, and the saved pointer now points at freed memory. +The next iteration follows that pointer, and the server crashes. + +The freed memory held a connection object the server calls through. +An attacker who can place their own bytes there has a credible path to running code in the server process, which is why we issued a CVE and disclosed the issue. + +This bug was found through a series of adversarial testing audits that we ran against our codebase using LLMs. +A model reads a subsystem, threat model, or feature and proposes candidate bugs. +A second model, reading the same source, argues against each one, then verifies and reproduces the ones that survive. +A candidate reaches a person only once it comes with a test that generates a reproducible crash. +Candidate bugs typically die at that verification stage, either because the code already handles the case the first model misread or because the impact is too minor to act on. + +Across Valkey and the JSON, search, and bloom modules, that pipeline has so far produced 34 real bugs. +We run these audits periodically across several frontier models, and we're hopeful that running them before each release will reduce the number of security bugs that end up in production. + +## Shipping the fixes faster + +The last piece of the puzzle is being able to quickly and consistently deliver fixes to all of our supported versions. +The TLS bug above affected every version of Valkey, and a year ago a maintainer would have manually cherry-picked the fix into each supported branch. +Over the last few months, the Valkey project has invested heavily in automating our release process, using AI to generate backport pull requests and resolve conflicts. +We've also codified our security triage and release process into prompts, so whoever is shepherding a release has the steps in front of them. + +That has cut the time it takes to get a security fix to our users. +If we wake up one morning to a zero-day in Valkey, we now feel confident we can get fixes out the door the same day. + +AI agents drive all of this, but a human is responsible for making sure the merges are correct. +Keeping people in the loop matters more in a security release, not less. + +## What you should do next + +If you run open source software in production: move to the current patch release of every open source project you run, Valkey included, and build a mechanism that consumes new versions regularly. +Apply the [deployment hardening guide](https://valkey.io/blog/properly-secure-your-valkey-deployment/) to make sure you're covering the Valkey security best practices. + +If you find a bug: report suspected vulnerabilities to security@lists.valkey.io rather than opening an issue, and include a reproducer that runs against the build you are targeting. +You might also consider submitting a fix along the way, just to take a little bit of load off of us. + +Bugs got cheaper to find, and they keep getting cheaper. +Frontier LLMs continue to get better at finding security bugs, and developers will get better at building harnesses to use them effectively. +Putting more of those tools in the hands of open source developers is what will keep projects like Valkey secure for the long term. diff --git a/static/assets/media/featured/security-shield-clean.webp b/static/assets/media/featured/security-shield-clean.webp new file mode 100644 index 00000000..5e997311 Binary files /dev/null and b/static/assets/media/featured/security-shield-clean.webp differ diff --git a/templates/includes/head.html b/templates/includes/head.html index 1ad4e6be..2cf261ac 100644 --- a/templates/includes/head.html +++ b/templates/includes/head.html @@ -6,7 +6,7 @@ - + {% if page and page.extra and page.extra.custom_meta%} {{ page.extra.custom_meta | safe }} {% endif %}