CVE-2026-29091
Locutus brings stdlibs of other programming languages to JavaScript for educational purposes. Prior to version 3.0.0, a remote code execution (RCE) flaw was discovered in the locutus project, specifically within the call_user_func_array function implementation. The vulnerability allows an attacker to inject arbitrary JavaScript code into the application's runtime environment. This issue stems from an insecure implementation of the call_user_func_array function (and its wrapper call_user_func), which fails to properly validate all components of a callback array before passing them to eval(). This issue has been patched in version 3.0.0.
CVSS
- Versión: 3.1
- Vector: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
- Puntuación base: 8.1
Probabilidad de explotación (EPSS)
- Probabilidad de explotación en los próximos 30 días: 1.02%
- Percentil entre todas las CVEs puntuadas: 62
- Fecha de la puntuación: 6/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
T1190Exploit Public-Facing Applicationinitial access90 % - Impacto principal
T1059Command and Scripting Interpreterexecution95 %
Vulnerabilidad RCE en función call_user_func_array expuesta en red (AV:N, PR:N, UI:N) sin validación de callbacks antes de eval(). Permite ejecución arbitraria de código JavaScript.
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)
CWE
- CWE-95
- CWE-94
Referencias
- https://github.com/locutusjs/locutus/commit/977a1fb169441e35996a1d2465b512322de500ad
- https://github.com/locutusjs/locutus/security/advisories/GHSA-fp25-p6mj-qqg6
- https://access.redhat.com/security/cve/CVE-2026-29091
- https://bugzilla.redhat.com/show_bug.cgi?id=2445262
- https://github.com/locutusjs/locutus/security/advisories/GHSA-fp25-p6mj-qqg6
- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-29091.json
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-29091",
"cveTags": [],
"metrics": {
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-29091",
"role": "CISA Coordinator",
"options": [
{
"exploitation": "poc"
},
{
"automatable": "no"
},
{
"technicalImpact": "total"
}
],
"version": "2.0.3",
"timestamp": "2026-03-06T18:34:23.537452Z"
}
}
],
"cvssMetricV31": [
{
"type": "Secondary",
"source": "security-advisories@github.com",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 8.1,
"attackVector": "NETWORK",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H",
"integrityImpact": "HIGH",
"userInteraction": "NONE",
"attackComplexity": "HIGH",
"availabilityImpact": "HIGH",
"privilegesRequired": "NONE",
"confidentialityImpact": "HIGH"
},
"impactScore": 5.9,
"exploitabilityScore": 2.2
},
{
"type": "Secondary",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 8.1,
"attackVector": "NETWORK",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H",
"integrityImpact": "HIGH",
"userInteraction": "NONE",
"attackComplexity": "HIGH",
"availabilityImpact": "HIGH",
"privilegesRequired": "NONE",
"confidentialityImpact": "HIGH"
},
"impactScore": 5.9,
"exploitabilityScore": 2.2
}
]
},
"affected": [
{
"source": "security-advisories@github.com",
"affectedData": [
{
"vendor": "locutusjs",
"product": "locutus",
"versions": [
{
"status": "affected",
"version": "< 3.0.0"
}
]
}
]
},
{
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c",
"affectedData": [
{
"cpes": [
"cpe:/a:redhat:logging:5"
],
"vendor": "Red Hat",
"product": "Logging Subsystem for Red Hat OpenShift",
"packageName": "openshift-logging/elasticsearch6-rhel9",
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"defaultStatus": "affected"
},
{
"cpes": [
"cpe:/a:redhat:logging:5"
],
"vendor": "Red Hat",
"product": "Logging Subsystem for Red Hat OpenShift",
"packageName": "openshift-logging/elasticsearch-operator-bundle",
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"defaultStatus": "affected"
},
{
"cpes": [
"cpe:/a:redhat:logging:5"
],
"vendor": "Red Hat",
"product": "Logging Subsystem for Red Hat OpenShift",
"packageName": "openshift-logging/elasticsearch-proxy-rhel9",
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"defaultStatus": "affected"
},
{
"cpes": [
"cpe:/a:redhat:logging:5"
],
"vendor": "Red Hat",
"product": "Logging Subsystem for Red Hat OpenShift",
"packageName": "openshift-logging/elasticsearch-rhel9-operator",
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"defaultStatus": "affected"
},
{
"cpes": [
"cpe:/a:redhat:logging:5"
],
"vendor": "Red Hat",
"product": "Logging Subsystem for Red Hat OpenShift",
"packageName": "openshift-logging/kibana6-rhel8",
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"defaultStatus": "affected"
},
{
"cpes": [
"cpe:/a:redhat:logging:5"
],
"vendor": "Red Hat",
"product": "Logging Subsystem for Red Hat OpenShift",
"packageName": "openshift-logging/logging-curator5-rhel9",
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"defaultStatus": "affected"
}
]
}
],
"published": "2026-03-06T18:16:20.257",
"references": [
{
"url": "https://github.com/locutusjs/locutus/commit/977a1fb169441e35996a1d2465b512322de500ad",
"tags": [
"Patch"
],
"source": "security-advisories@github.com"
},
{
"url": "https://github.com/locutusjs/locutus/security/advisories/GHSA-fp25-p6mj-qqg6",
"tags": [
"Exploit",
"Mitigation",
"Vendor Advisory"
],
"source": "security-advisories@github.com"
},
{
"url": "https://access.redhat.com/security/cve/CVE-2026-29091",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
},
{
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2445262",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
},
{
"url": "https://github.com/locutusjs/locutus/security/advisories/GHSA-fp25-p6mj-qqg6",
"tags": [
"Exploit",
"Mitigation",
"Vendor Advisory"
],
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
},
{
"url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-29091.json",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
}
],
"vulnStatus": "Modified",
"weaknesses": [
{
"type": "Secondary",
"source": "security-advisories@github.com",
"description": [
{
"lang": "en",
"value": "CWE-95"
}
]
},
{
"type": "Secondary",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c",
"description": [
{
"lang": "en",
"value": "CWE-94"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "Locutus brings stdlibs of other programming languages to JavaScript for educational purposes. Prior to version 3.0.0, a remote code execution (RCE) flaw was discovered in the locutus project, specifically within the call_user_func_array function implementation. The vulnerability allows an attacker to inject arbitrary JavaScript code into the application's runtime environment. This issue stems from an insecure implementation of the call_user_func_array function (and its wrapper call_user_func), which fails to properly validate all components of a callback array before passing them to eval(). This issue has been patched in version 3.0.0."
},
{
"lang": "es",
"value": "Locutus trae las stdlibs de otros lenguajes de programación a JavaScript con fines educativos. Antes de la versión 3.0.0, una falla de ejecución remota de código (RCE) fue descubierta en el proyecto locutus, específicamente dentro de la implementación de la función call_user_func_array. La vulnerabilidad permite a un atacante inyectar código JavaScript arbitrario en el entorno de ejecución de la aplicación. Este problema se deriva de una implementación insegura de la función call_user_func_array (y su envoltorio call_user_func), que no valida correctamente todos los componentes de un array de callback antes de pasarlos a eval(). Este problema ha sido parcheado en la versión 3.0.0."
}
],
"lastModified": "2026-07-15T02:19:24.163",
"configurations": [
{
"nodes": [
{
"negate": false,
"cpeMatch": [
{
"criteria": "cpe:2.3:a:locutus:locutus:*:*:*:*:*:node.js:*:*",
"vulnerable": true,
"matchCriteriaId": "202D3F00-F947-4F25-A0AF-EBB9FEBB7ECC",
"versionEndExcluding": "3.0.0"
}
],
"operator": "OR"
}
]
}
],
"sourceIdentifier": "security-advisories@github.com"
}