{
  "affected": [
    {
      "ranges": [
        {
          "database_specific": {
            "extracted_events": [
              {
                "introduced": "1.3.8-4"
              },
              {
                "fixed": "1.5.7-14"
              }
            ],
            "source": "AFFECTED_FIELD"
          },
          "events": [
            {
              "introduced": "0830536d204f2944f4a124517aec80b5e5dc2647"
            },
            {
              "fixed": "3216860eea289fbbae0b191c0a4fd8b72dad949c"
            }
          ],
          "repo": "https://github.com/luben/zstd-jni",
          "type": "GIT"
        }
      ]
    }
  ],
  "aliases": [
    "GHSA-2jw3-mg7f-vw4q"
  ],
  "database_specific": {
    "cna_assigner": "VulnCheck",
    "cwe_ids": [
      "CWE-416"
    ],
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/87xxx/CVE-2026-87877.json"
  },
  "details": "zstd-jni versions before 1.5.7-14 fail to validate closed state in setDict, setLongMax, setLevel and setRefMultipleDDicts methods of stream classes. Attackers can call these methods on closed streams to write through freed native pointers, corrupting unrelated objects or crashing the JVM.",
  "id": "CVE-2026-87877",
  "modified": "2026-09-11T03:30:34.435081005Z",
  "published": "2026-09-09T14:32:45.512Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://repo1.maven.org/maven2/com/github/luben/zstd-jni/"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/87xxx/CVE-2026-87877.json"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/luben/zstd-jni/releases/tag/v1.5.7-14"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/luben/zstd-jni/security/advisories/GHSA-2jw3-mg7f-vw4q"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-87877"
    },
    {
      "type": "ADVISORY",
      "url": "https://www.vulncheck.com/advisories/zstd-jni-1.3.8-4-through-1.5.7-13-use-after-free-via-setters-called-after-close"
    },
    {
      "type": "FIX",
      "url": "https://github.com/luben/zstd-jni/commit/0827ed02551bbd8d6f8e4bbff99d83bf50f91938"
    },
    {
      "type": "FIX",
      "url": "https://github.com/luben/zstd-jni/commit/393d7311766abbc285b149302c0fe1f94b16d555"
    },
    {
      "type": "FIX",
      "url": "https://github.com/luben/zstd-jni/commit/f38f9a1563113d96d0fc38baee543f7457dd8a8e"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/luben/zstd-jni"
    },
    {
      "type": "ARTICLE",
      "url": "https://github.com/luben/zstd-jni/blob/v1.5.7-13/src/main/java/com/github/luben/zstd/BaseZstdBufferDecompressingStreamNoFinalizer.java"
    },
    {
      "type": "ARTICLE",
      "url": "https://github.com/luben/zstd-jni/blob/v1.5.7-13/src/main/java/com/github/luben/zstd/ZstdInputStreamNoFinalizer.java"
    }
  ],
  "schema_version": "1.9.0",
  "severity": [
    {
      "score": "CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N",
      "type": "CVSS_V4"
    }
  ],
  "summary": "zstd-jni 1.3.8-4 through 1.5.7-13 Use-After-Free via Setters Called After close()"
}