CVE-2026-64678
Nitrite: Unfiltered Java Deserialization in Legacy v1 Database Migration Path
NOsql Object (NO2 a.k.a Nitrite) database is an open source nosql embedded document store. Prior to version 4.4.1, when Nitrite opens a database file, MVStoreUtils.openOrCreate() automatically checks for a legacy v1-format store and, on detecting one (or hitting a compatibility error while opening), triggers an automatic migration path. This path deserializes stored values using NitriteDataType.deserialize(byte[]), which passes the raw bytes directly to java.io.ObjectInputStream.readObject() via a custom NitriteObjectInputStream subclass. That subclass overrides only readClassDescriptor() — solely to remap a handful of known legacy class names to their current equivalents — and implements no class allowlist, blocklist, or ObjectInputFilter (JEP 290). Any Serializable class reachable on the embedding application's classpath can therefore be instantiated via readObject(), with readObject()/readExternal()/readResolve() callbacks invoked unconditionally. If a suitable gadget class (e.g. from commons-collections or similar) happens to be present on the classpath, this is a precondition for remote code execution. This issue has been patched in version 4.4.1.
Fixes and workarounds
No remediation reported in collected sources.
Missing remediation information is not evidence that no patch exists.
Affected products and versions
| Product | Versions | Authority |
|---|---|---|
| nitrite-java nitrite |
< 4.4.1 (affected) | CNA: GitHub_M |
Version ranges are source assertions. Check the vendor advisory and your installed configuration before determining exposure.
CVSS assessments
| Version / score | Vector | Authority |
|---|---|---|
| 3.1 / 9.8 critical |
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H | CNA: GitHub_M |
| 3.1 / 9.8 critical |
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H | NVD: [email protected] |
Exploit evidence
- https://github.com/nitrite/nitrite-java/security/advisories/GHSA-9297-g93h-86gg
exploit · ADP: CISA-ADP
References
- https://github.com/nitrite/nitrite-java/security/advisories/GHSA-9297-g93h-86ggCNA: GitHub_M · x_refsource_CONFIRM
- https://github.com/nitrite/nitrite-java/releases/tag/v4.4.1CNA: GitHub_M · x_refsource_MISC
- https://github.com/nitrite/nitrite-java/security/advisories/GHSA-9297-g93h-86ggADP: CISA-ADP · exploit
- https://github.com/nitrite/nitrite-java/releases/tag/v4.4.1[email protected]
- https://github.com/nitrite/nitrite-java/security/advisories/GHSA-9297-g93h-86gg[email protected]
For agents and automation
Read public disclosures for free as Markdown or JSON. Compatible browsers also expose native WebMCP tools to search disclosures, read this page, and discover API access.
Use the ontology-linked Cyber API with x402 pay per request, or a Y2 Pro or Elite API key with the intel:cyber scope.
Endpoints and access details
https://api.y2.dev/api/v2/cyber/cveshttps://api.y2.dev/api/v2/cyber/cves/{cveId}
A workspace owner or admin can create a Pro or Elite API key. Send Authorization: Bearer <Y2_API_KEY> from your trusted agent runtime.
For x402, omit Authorization and read the HTTP 402 payment challenge before signing a retry. Public browser tools do not make payments.