---
id: "CVE-2026-116096"
kind: "vulnerability"
aliases: ["CVE-2026-116096"]
title: "llama.cpp: malformed mmproj file causes out-of-bounds write locally"
severity: "medium"
cvss: 5.3
epss: null
exploited: false
status: "open"
category: "ai-tooling"
products: []
ecosystems: []
tags: ["ai-tooling", "llama.cpp", "local-inference", "self-hosted"]
not_affected_if: ["no-pocket-tts", "trusted-mmproj-only"]
published_at: "2026-10-25T23:17:41+00:00"
first_seen_at: "2026-10-25T23:36:15+00:00"
updated_at: "2026-10-25T23:37:01+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-116096", "first_seen_at": "2026-10-25T23:36:15+00:00"}]
---

# llama.cpp: malformed mmproj file causes out-of-bounds write locally

A malicious mmproj file passed to the Pocket-TTS state-slot code in llama.cpp writes past the end of a heap buffer. Per the sources, a local attacker can use this to corrupt memory, and public exploit code exists, though current master and the latest release now abort on such files instead of silently writing.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Confirm the llama.cpp build in use is older than `b11796`, which the advisory names as fixed.
- Check whether the deployment runs the Pocket-TTS / gen-audio path and loads mmproj files from untrusted sources.
- unknown: the sources do not give a command that prints the build tag.

## Fix

- Move llama.cpp to `b11796` or later, as the advisory recommends.
- Move to the latest release `b11871`, which aborts on a malformed mmproj instead of writing out of bounds.
- Only load mmproj files from trusted sources until the by-construction fix (PR #29360) is merged.

## Timeline

- 2026-10-25T23:36:15+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-116096

## From the sources

A weakness has been identified in ggml-org llama.cpp. Affected by this issue is the function list_pockettts_state_slots of the file tools/mtmd/models/pockettts-gen.cpp of the component Pocket-TTS. This manipulation of the argument mmproj causes out-of-bounds write. The attack requires local access. The exploit has been made available to the public and could be used for attacks. Upgrading to version b11796 can resolve this issue. Patch name: 0a1ef309cdbb9f2024f58a38fb4c42352c5db569. The affected component should be upgraded. The reported heap out‑of‑bounds write (gen‑audio / pocket‑tts state_out path) is no longer a silent exploitable heap write on current master and the latest release b11871 - a malicious mmproj that previously triggered it now trips a release‑active GGML_ASSERT and aborts. But the submitter's recommended by‑construction fix (PR #29360 "prevent OOB accesses from malformed mmproj files") is still open. So the root cause is detected‑and‑aborted, not prevented‑by‑design.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
