Apache DataSketches: datasketches-cpp: Out-of-bounds read in compact Theta sketch deserialization allows denial of service via a crafted sketch
Out-of-bounds read in the compact Theta sketch deserialization of Apache DataSketches C++ (repo: datasketches-cpp). compact_theta_sketch::deserialize() and wrapped_compact_theta_sketch::wrap() read header fields before checking that the input was long enough. For the compressed format, the size check could be defeated by a 32-bit overflow, and two header fields that control decoding were not validated; this also affected deserialization from a stream. A crafted or truncated sketch could cause a read past the end of the input. In the compressed case the over-read can be large, and the bytes read can become part of the deserialized sketch. This can cause a crash (denial of service) and could expose adjacent memory contents. This issue affects Apache DataSketches C++: from 3.1.0 before 5.3.0. Only applications that deserialize Theta sketches from untrusted sources are affected. Users are recommended to upgrade to version 5.3.0, which fixes this issue.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-103635
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 18:13 UTC · Revision 1
Source evidence
Apache DataSketches: datasketches-cpp: Out-of-bounds read in compact Theta sketch deserialization allows denial of service via a crafted sketch
core-osv · Original sourcePublished 10 Oct 2026, 10:23 UTC
Out-of-bounds read in the compact Theta sketch deserialization of Apache DataSketches C++ (repo: datasketches-cpp). compact_theta_sketch::deserialize() and wrapped_compact_theta_sketch::wrap() read header fields before checking that the input was long enough. For the compressed format, the size check could be defeated by a 32-bit overflow, and two header fields that control decoding were not validated; this also affected deserialization from a stream. A crafted or truncated sketch could cause a read past the end of the input. In the compressed case the over-read can be large, and the bytes read can become part of the deserialized sketch. This can cause a crash (denial of service) and could expose adjacent memory contents. This issue affects Apache DataSketches C++: from 3.1.0 before 5.3.0. Only applications that deserialize Theta sketches from untrusted sources are affected. Users are recommended to upgrade to version 5.3.0, which fixes this issue.
osv:CVE-2026-103635
Complete source record
{
"id": "caeb24c4d723173ef3da05cd3ae8100f696756231256ebb7e8cac64975487767",
"url": "https://osv.dev/vulnerability/CVE-2026-103635",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Apache DataSketches: datasketches-cpp: Out-of-bounds read in compact Theta sketch deserialization allows denial of service via a crafted sketch",
"summary": "Out-of-bounds read in the compact Theta sketch deserialization of Apache DataSketches C++ (repo: datasketches-cpp). compact_theta_sketch::deserialize() and wrapped_compact_theta_sketch::wrap() read header fields before checking that the input was long enough. For the compressed format, the size check could be defeated by a 32-bit overflow, and two header fields that control decoding were not validated; this also affected deserialization from a stream. A crafted or truncated sketch could cause a read past the end of the input. In the compressed case the over-read can be large, and the bytes read can become part of the deserialized sketch. This can cause a crash (denial of service) and could expose adjacent memory contents. This issue affects Apache DataSketches C++: from 3.1.0 before 5.3.0. Only applications that deserialize Theta sketches from untrusted sources are affected. Users are recommended to upgrade to version 5.3.0, which fixes this issue.",
"evidence": "osv:CVE-2026-103635",
"products": [],
"severity": "critical",
"structured": {
"id": "CVE-2026-103635",
"aliases": [
"CVE-2026-103635"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/apache/datasketches-cpp",
"type": "GIT",
"events": [
{
"introduced": "a375f9805ab8064b20e6a1b82282e4d04b102328"
},
{
"fixed": "5b5524f55d121225a7909c2851271327684585d7"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "3.1.0"
},
{
"last_affected": "5.2.0"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
},
{
"range": [
{
"fixed": "5b5524f55d121225a7909c2851271327684585d7"
}
],
"source": "REFERENCES_TAG",
"original_tag": "5.3.0"
}
]
}
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-103635.json"
}
}
],
"modified": "2026-10-28T02:30:31.293648243Z",
"provider": "osv",
"references": [
"https://github.com",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/103xxx/CVE-2026-103635.json",
"https://github.com/apache/datasketches-cpp/releases/tag/5.3.0",
"https://lists.apache.org/thread/15b86y9jstco39kzppjw7l5kvhjvwqvv",
"https://nvd.nist.gov/vuln/detail/CVE-2026-103635"
],
"provider_metadata": {
"cwe_ids": [
"CWE-125",
"CWE-190"
],
"cna_assigner": "apache",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/103xxx/CVE-2026-103635.json"
}
},
"related_cves": [
{
"value": "CVE-2026-103635",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 498323,
"published_at": "2026-10-10T10:23:48.598+00:00"
}