<?xml version="1.0" encoding="UTF-8"?>
<cvrfdoc xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cpe="http://cpe.mitre.org/language/2.0" xmlns:cvrf="http://docs.oasis-open.org/csaf/ns/csaf-cvrf/v1.2/cvrf" xmlns:cvrf-common="http://docs.oasis-open.org/csaf/ns/csaf-cvrf/v1.2/common" xmlns:cvssv2="http://scap.nist.gov/schema/cvss-v2/1.0" xmlns:cvssv3="https://www.first.org/cvss/cvss-v3.0.xsd" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ns0="http://purl.org/dc/elements/1.1/" xmlns:prod="http://docs.oasis-open.org/csaf/ns/csaf-cvrf/v1.2/prod" xmlns:scap-core="http://scap.nist.gov/schema/scap-core/1.0" xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:vuln="http://docs.oasis-open.org/csaf/ns/csaf-cvrf/v1.2/vuln" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://docs.oasis-open.org/csaf/ns/csaf-cvrf/v1.2/cvrf">
  <DocumentTitle xml:lang="en">CVE-2025-49847</DocumentTitle>
  <DocumentType>SUSE CVE</DocumentType>
  <DocumentPublisher Type="Vendor">
    <ContactDetails>security@suse.de</ContactDetails>
    <IssuingAuthority>SUSE Security Team</IssuingAuthority>
  </DocumentPublisher>
  <DocumentTracking>
    <Identification>
      <ID>SUSE CVE-2025-49847</ID>
    </Identification>
    <Status>Interim</Status>
    <Version>1</Version>
    <RevisionHistory>
      <Revision>
        <Number>2</Number>
        <Date>2025-07-12T06:34:16Z</Date>
        <Description>current</Description>
      </Revision>
    </RevisionHistory>
    <InitialReleaseDate>2025-06-18T23:13:02Z</InitialReleaseDate>
    <CurrentReleaseDate>2025-07-12T06:34:16Z</CurrentReleaseDate>
    <Generator>
      <Engine>cve-database/bin/generate-cvrf-cve.pl</Engine>
      <Date>2020-12-27T01:00:00Z</Date>
    </Generator>
  </DocumentTracking>
  <DocumentNotes>
    <Note Title="CVE" Type="Summary" Ordinal="1" xml:lang="en">CVE-2025-49847</Note>
    <Note Title="Mitre CVE Description" Type="Description" Ordinal="2" xml:lang="en">llama.cpp is an inference of several LLM models in C/C++. Prior to version b5662, an attacker‐supplied GGUF model vocabulary can trigger a buffer overflow in llama.cpp's vocabulary‐loading code. Specifically, the helper _try_copy in llama.cpp/src/vocab.cpp: llama_vocab::impl::token_to_piece() casts a very large size_t token length into an int32_t, causing the length check (if (length &lt; (int32_t)size)) to be bypassed. As a result, memcpy is still called with that oversized size, letting a malicious model overwrite memory beyond the intended buffer. This can lead to arbitrary memory corruption and potential code execution. This issue has been patched in version b5662.</Note>
    <Note Title="Terms of Use" Type="Legal Disclaimer" Ordinal="4" xml:lang="en">The CVRF data is provided by SUSE under the Creative Commons License 4.0 with Attribution (CC-BY-4.0).</Note>
  </DocumentNotes>
  <DocumentReferences>
    <Reference Type="Self">
      <URL>https://www.suse.com/support/security/rating/</URL>
      <Description>SUSE Security Ratings</Description>
    </Reference>
  </DocumentReferences>
  <ProductTree xmlns="http://docs.oasis-open.org/csaf/ns/csaf-cvrf/v1.2/prod">
    <Branch Type="Product Family" Name="openSUSE Tumbleweed">
      <Branch Type="Product Name" Name="openSUSE Tumbleweed">
        <FullProductName ProductID="openSUSE Tumbleweed" CPE="cpe:/o:opensuse:tumbleweed">openSUSE Tumbleweed</FullProductName>
      </Branch>
    </Branch>
    <Branch Type="Product Version" Name="ggml-devel-5699-1.1">
      <FullProductName ProductID="ggml-devel-5699-1.1">ggml-devel-5699-1.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="libggml-5699-1.1">
      <FullProductName ProductID="libggml-5699-1.1">libggml-5699-1.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="libggml-base-5699-1.1">
      <FullProductName ProductID="libggml-base-5699-1.1">libggml-base-5699-1.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="libggml-cpu-5699-1.1">
      <FullProductName ProductID="libggml-cpu-5699-1.1">libggml-cpu-5699-1.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="libggml-opencl-5699-1.1">
      <FullProductName ProductID="libggml-opencl-5699-1.1">libggml-opencl-5699-1.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="libggml-vulkan-5699-1.1">
      <FullProductName ProductID="libggml-vulkan-5699-1.1">libggml-vulkan-5699-1.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="libllama-5699-1.1">
      <FullProductName ProductID="libllama-5699-1.1">libllama-5699-1.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="libmtmd-5699-1.1">
      <FullProductName ProductID="libmtmd-5699-1.1">libmtmd-5699-1.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="llamacpp-5699-1.1">
      <FullProductName ProductID="llamacpp-5699-1.1">llamacpp-5699-1.1</FullProductName>
    </Branch>
    <Branch Type="Product Version" Name="llamacpp-devel-5699-1.1">
      <FullProductName ProductID="llamacpp-devel-5699-1.1">llamacpp-devel-5699-1.1</FullProductName>
    </Branch>
    <Relationship ProductReference="ggml-devel-5699-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:ggml-devel-5699-1.1">ggml-devel-5699-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
    <Relationship ProductReference="libggml-5699-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:libggml-5699-1.1">libggml-5699-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
    <Relationship ProductReference="libggml-base-5699-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:libggml-base-5699-1.1">libggml-base-5699-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
    <Relationship ProductReference="libggml-cpu-5699-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:libggml-cpu-5699-1.1">libggml-cpu-5699-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
    <Relationship ProductReference="libggml-opencl-5699-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:libggml-opencl-5699-1.1">libggml-opencl-5699-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
    <Relationship ProductReference="libggml-vulkan-5699-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:libggml-vulkan-5699-1.1">libggml-vulkan-5699-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
    <Relationship ProductReference="libllama-5699-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:libllama-5699-1.1">libllama-5699-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
    <Relationship ProductReference="libmtmd-5699-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:libmtmd-5699-1.1">libmtmd-5699-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
    <Relationship ProductReference="llamacpp-5699-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:llamacpp-5699-1.1">llamacpp-5699-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
    <Relationship ProductReference="llamacpp-devel-5699-1.1" RelationType="Default Component Of" RelatesToProductReference="openSUSE Tumbleweed">
      <FullProductName ProductID="openSUSE Tumbleweed:llamacpp-devel-5699-1.1">llamacpp-devel-5699-1.1 as a component of openSUSE Tumbleweed</FullProductName>
    </Relationship>
  </ProductTree>
  <Vulnerability xmlns="http://docs.oasis-open.org/csaf/ns/csaf-cvrf/v1.2/vuln" Ordinal="1">
    <Notes>
      <Note Title="Vulnerability Description" Type="General" Ordinal="1" xml:lang="en">llama.cpp is an inference of several LLM models in C/C++. Prior to version b5662, an attacker‐supplied GGUF model vocabulary can trigger a buffer overflow in llama.cpp's vocabulary‐loading code. Specifically, the helper _try_copy in llama.cpp/src/vocab.cpp: llama_vocab::impl::token_to_piece() casts a very large size_t token length into an int32_t, causing the length check (if (length &lt; (int32_t)size)) to be bypassed. As a result, memcpy is still called with that oversized size, letting a malicious model overwrite memory beyond the intended buffer. This can lead to arbitrary memory corruption and potential code execution. This issue has been patched in version b5662.</Note>
    </Notes>
    <CVE>CVE-2025-49847</CVE>
    <ProductStatuses>
      <Status Type="Fixed">
        <ProductID>openSUSE Tumbleweed:ggml-devel-5699-1.1</ProductID>
        <ProductID>openSUSE Tumbleweed:libggml-5699-1.1</ProductID>
        <ProductID>openSUSE Tumbleweed:libggml-base-5699-1.1</ProductID>
        <ProductID>openSUSE Tumbleweed:libggml-cpu-5699-1.1</ProductID>
        <ProductID>openSUSE Tumbleweed:libggml-opencl-5699-1.1</ProductID>
        <ProductID>openSUSE Tumbleweed:libggml-vulkan-5699-1.1</ProductID>
        <ProductID>openSUSE Tumbleweed:libllama-5699-1.1</ProductID>
        <ProductID>openSUSE Tumbleweed:libmtmd-5699-1.1</ProductID>
        <ProductID>openSUSE Tumbleweed:llamacpp-5699-1.1</ProductID>
        <ProductID>openSUSE Tumbleweed:llamacpp-devel-5699-1.1</ProductID>
      </Status>
    </ProductStatuses>
    <Threats>
      <Threat Type="Impact">
        <Description>important</Description>
      </Threat>
    </Threats>
  </Vulnerability>
</cvrfdoc>
