CVE-2026-107315
pgjdbc, el controlador JDBC de PostgreSQL, en las versiones 42.7.4 a 42.7.13 rellena un valor más corto que su longitud declarada con bytes que quedan en su búfer de envío en lugar de con ceros, y el servidor almacena esos bytes como parte del valor. Los bytes son mensajes que el controlador envió anteriormente en la misma conexión: texto SQL y valores de parámetros de sentencias recientes, que en una conexión de un pool pueden proceder de otras solicitudes. Cada valor rellenado puede contener hasta 8192 bytes de este tráfico, o 16320 bytes en una conexión con cifrado GSS.
Leer descripción completaMostrar menos
El relleno se produce cuando una aplicación declara una longitud mayor que los datos que proporciona, mediante PreparedStatement.setObject con un ByteStreamWriter, CopyIn.writeToCopy, PGCopyOutputStream.write, LargeObject.write o Blob.setBytes. El controlador acepta estas llamadas sin error. Un atacante que pueda hacer que la aplicación almacene un valor así y lo vuelva a leer puede recopilar tráfico anterior. Las aplicaciones cuyas longitudes declaradas siempre coinciden con sus datos no se ven afectadas. Las versiones 42.7.3 y anteriores rellenan con ceros.
Traducción automática del texto original de NVD (en inglés).
CVSS
- Versión: 3.1
- Vector: CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N
- Puntuación base: 5.3
Probabilidad de explotación (EPSS)
- Probabilidad de explotación en los próximos 30 días: 0.12%
- Percentil entre todas las CVEs puntuadas: 2
- Fecha de la puntuación: 13/10/2026
EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).
🎯 Técnicas ATT&CK
Cómo se explota esta vulnerabilidad y qué consigue el atacante, en el lenguaje de MITRE ATT&CK.
- Explotación
T1210Exploitation of Remote Serviceslateral movement75 % - Impacto principal
T1005Data from Local Systemcollection80 % - Impacto secundario
T1552Unsecured Credentialscredential access70 %
Requiere PR:L en red (conexión PostgreSQL autenticada) y permite leer tráfico anterior en el buffer. CWE-201 (información expuesta) confirma lectura de datos sensibles (SQL, parámetros).
Inferido por nuestro agente de análisis a partir de la descripción oficial, el vector CVSS y la CWE, y comprobado por un supervisor. Puede contener errores.
🛡️ Mitigaciones ATT&CK que cubren estas técnicas
Tecnologías afectadas (1)
⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.
CWE
- CWE-201, CWE-226
Referencias
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-107315",
"cveTags": [],
"metrics": {
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-107315",
"role": "CISA Coordinator",
"options": [
{
"exploitation": "poc"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"version": "2.0.3",
"timestamp": "2026-10-08T14:36:54.933870Z"
}
}
],
"cvssMetricV31": [
{
"type": "Secondary",
"source": "f86ef6dc-4d3a-42ad-8f28-e6d5547a5007",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 5.3,
"attackVector": "NETWORK",
"baseSeverity": "MEDIUM",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N",
"integrityImpact": "NONE",
"userInteraction": "NONE",
"attackComplexity": "HIGH",
"availabilityImpact": "NONE",
"privilegesRequired": "LOW",
"confidentialityImpact": "HIGH"
},
"impactScore": 3.6,
"exploitabilityScore": 1.6
}
]
},
"affected": [
{
"source": "f86ef6dc-4d3a-42ad-8f28-e6d5547a5007",
"affectedData": [
{
"repo": "https://github.com/pgjdbc/pgjdbc",
"vendor": "pgjdbc",
"product": "pgjdbc",
"versions": [
{
"status": "affected",
"version": "42.7.4",
"versionType": "maven",
"lessThanOrEqual": "42.7.13"
}
],
"packageName": "org.postgresql:postgresql",
"programFiles": [
"pgjdbc/src/main/java/org/postgresql/util/internal/PgBufferedOutputStream.java"
],
"collectionURL": "https://repo.maven.apache.org/maven2",
"defaultStatus": "unaffected",
"programRoutines": [
{
"name": "org.postgresql.util.internal.PgBufferedOutputStream.writeZeros"
}
]
}
]
}
],
"published": "2026-10-08T00:16:33.690",
"references": [
{
"url": "https://github.com/pgjdbc/pgjdbc/security/advisories/GHSA-f64h-wr5q-3qf3",
"source": "f86ef6dc-4d3a-42ad-8f28-e6d5547a5007"
},
{
"url": "https://github.com/pgjdbc/pgjdbc/security/advisories/GHSA-f64h-wr5q-3qf3",
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
}
],
"vulnStatus": "Awaiting Analysis",
"weaknesses": [
{
"type": "Secondary",
"source": "f86ef6dc-4d3a-42ad-8f28-e6d5547a5007",
"description": [
{
"lang": "en",
"value": "CWE-201"
},
{
"lang": "en",
"value": "CWE-226"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "pgjdbc, the PostgreSQL JDBC Driver, versions 42.7.4 through 42.7.13 pads a value that is shorter than its declared length with bytes left in its send buffer instead of zeros, and the server stores those bytes as part of the value. The bytes are messages the driver sent earlier on the same connection: SQL text and parameter values of recent statements, which on a pooled connection can come from other requests. Each padded value can carry up to 8192 bytes of this traffic, or 16320 bytes on a connection with GSS encryption. The padding happens when an application declares a length larger than the data it supplies, through PreparedStatement.setObject with a ByteStreamWriter, CopyIn.writeToCopy, PGCopyOutputStream.write, LargeObject.write, or Blob.setBytes. The driver accepts these calls without an error. An attacker who can make the application store such a value and read it back can collect earlier traffic. Applications whose declared lengths always match their data are not affected. Versions 42.7.3 and earlier pad with zeros."
}
],
"lastModified": "2026-10-08T20:49:23.240",
"sourceIdentifier": "f86ef6dc-4d3a-42ad-8f28-e6d5547a5007"
}