CVE-2026-25153
Backstage is an open framework for building developer portals, and @backstage/plugin-techdocs-node provides common node.js functionalities for TechDocs. In versions of @backstage/plugin-techdocs-node prior to 1.13.11 and 1.14.1, when TechDocs is configured with `runIn: local`, a malicious actor who can submit or modify a repository's `mkdocs.yml` file can execute arbitrary Python code on the TechDocs build server via MkDocs hooks configuration. @backstage/plugin-techdocs-node versions 1.13.11 and 1.14.1 contain a fix. The fix introduces an allowlist of supported MkDocs configuration keys.
Leer descripción completaMostrar menos
Unsupported configuration keys (including `hooks`) are now removed from `mkdocs.yml` before running the generator, with a warning logged to indicate which keys were removed. Users of `@techdocs/cli` should also upgrade to the latest version, which includes the fixed `@backstage/plugin-techdocs-node` dependency. Some workarounds are available. Configure TechDocs with `runIn: docker` instead of `runIn: local` to provide container isolation, though it does not fully mitigate the risk. Limit who can modify `mkdocs.yml` files in repositories that TechDocs processes; only allow trusted contributors. Implement PR review requirements for changes to `mkdocs.yml` files to detect malicious `hooks` configurations before they are merged. Use MkDocs < 1.4.0 (e.g., 1.3.1) which does not support hooks. Note: This may limit access to newer MkDocs features. Building documentation in CI/CD pipelines using `@techdocs/cli` does not mitigate this vulnerability, as the CLI uses the same vulnerable `@backstage/plugin-techdocs-node` package.
CVSS
- Versión: 3.1
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
- Puntuación base: 8.8
Probabilidad de explotación (EPSS)
- Probabilidad de explotación en los próximos 30 días: 0.61%
- Percentil entre todas las CVEs puntuadas: 48
- Fecha de la puntuación: 5/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 movement85 % - Impacto principal
T1059Command and Scripting Interpreterexecution90 %
Requiere PR:L (autenticación como usuario válido) y AV:N (red). El atacante modifica mkdocs.yml para ejecutar código Python arbitrario vía hooks de MkDocs en el servidor de compilación, sin interacción del usuario necesaria. Ejecución de código confirmada en el texto.
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-94
- CWE-94
Referencias
- https://github.com/backstage/backstage/security/advisories/GHSA-6jr7-99pf-8vgf
- https://access.redhat.com/errata/RHSA-2026:6174
- https://access.redhat.com/errata/RHSA-2026:6802
- https://access.redhat.com/security/cve/CVE-2026-25153
- https://bugzilla.redhat.com/show_bug.cgi?id=2435576
- https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-25153.json
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-25153",
"cveTags": [],
"metrics": {
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-25153",
"role": "CISA Coordinator",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"version": "2.0.3",
"timestamp": "2026-02-02T16:25:14.817846Z"
}
}
],
"cvssMetricV31": [
{
"type": "Secondary",
"source": "security-advisories@github.com",
"cvssData": {
"scope": "CHANGED",
"version": "3.1",
"baseScore": 7.7,
"attackVector": "NETWORK",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:L/A:L",
"integrityImpact": "LOW",
"userInteraction": "NONE",
"attackComplexity": "HIGH",
"availabilityImpact": "LOW",
"privilegesRequired": "LOW",
"confidentialityImpact": "HIGH"
},
"impactScore": 5.3,
"exploitabilityScore": 1.8
},
{
"type": "Primary",
"source": "nvd@nist.gov",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 8.8,
"attackVector": "NETWORK",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"integrityImpact": "HIGH",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"availabilityImpact": "HIGH",
"privilegesRequired": "LOW",
"confidentialityImpact": "HIGH"
},
"impactScore": 5.9,
"exploitabilityScore": 2.8
},
{
"type": "Secondary",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c",
"cvssData": {
"scope": "CHANGED",
"version": "3.1",
"baseScore": 7.7,
"attackVector": "NETWORK",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:L/A:L",
"integrityImpact": "LOW",
"userInteraction": "NONE",
"attackComplexity": "HIGH",
"availabilityImpact": "LOW",
"privilegesRequired": "LOW",
"confidentialityImpact": "HIGH"
},
"impactScore": 5.3,
"exploitabilityScore": 1.8
}
]
},
"affected": [
{
"source": "security-advisories@github.com",
"affectedData": [
{
"vendor": "backstage",
"product": "backstage",
"versions": [
{
"status": "affected",
"version": "< 1.13.11"
},
{
"status": "affected",
"version": "= 1.14.0"
}
]
}
]
},
{
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c",
"affectedData": [
{
"cpes": [
"cpe:/a:redhat:rhdh:1.8::el9"
],
"vendor": "Red Hat",
"product": "Red Hat Developer Hub 1.8",
"versions": [
{
"status": "unaffected",
"version": "1774545605",
"lessThan": "*",
"versionType": "rpm"
}
],
"packageName": "rhdh/rhdh-hub-rhel9",
"collectionURL": "https://catalog.redhat.com/software/containers/",
"defaultStatus": "affected"
},
{
"cpes": [
"cpe:/a:redhat:rhdh:1.9::el9"
],
"vendor": "Red Hat",
"product": "Red Hat Developer Hub 1.9",
"versions": [
{
"status": "unaffected",
"version": "1775140647",
"lessThan": "*",
"versionType": "rpm"
}
],
"packageName": "rhdh/rhdh-hub-rhel9",
"collectionURL": "https://catalog.redhat.com/software/containers/",
"defaultStatus": "affected"
},
{
"cpes": [
"cpe:/a:redhat:ansible_portal:2"
],
"vendor": "Red Hat",
"product": "Self-service automation portal 2",
"packageName": "ansible-automation-platform/automation-portal",
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"defaultStatus": "affected"
}
]
}
],
"published": "2026-01-30T22:15:56.343",
"references": [
{
"url": "https://github.com/backstage/backstage/security/advisories/GHSA-6jr7-99pf-8vgf",
"tags": [
"Vendor Advisory"
],
"source": "security-advisories@github.com"
},
{
"url": "https://access.redhat.com/errata/RHSA-2026:6174",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
},
{
"url": "https://access.redhat.com/errata/RHSA-2026:6802",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
},
{
"url": "https://access.redhat.com/security/cve/CVE-2026-25153",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
},
{
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2435576",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
},
{
"url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-25153.json",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c"
}
],
"vulnStatus": "Modified",
"weaknesses": [
{
"type": "Secondary",
"source": "security-advisories@github.com",
"description": [
{
"lang": "en",
"value": "CWE-94"
}
]
},
{
"type": "Secondary",
"source": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c",
"description": [
{
"lang": "en",
"value": "CWE-94"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "Backstage is an open framework for building developer portals, and @backstage/plugin-techdocs-node provides common node.js functionalities for TechDocs. In versions of @backstage/plugin-techdocs-node prior to 1.13.11 and 1.14.1, when TechDocs is configured with `runIn: local`, a malicious actor who can submit or modify a repository's `mkdocs.yml` file can execute arbitrary Python code on the TechDocs build server via MkDocs hooks configuration. @backstage/plugin-techdocs-node versions 1.13.11 and 1.14.1 contain a fix. The fix introduces an allowlist of supported MkDocs configuration keys. Unsupported configuration keys (including `hooks`) are now removed from `mkdocs.yml` before running the generator, with a warning logged to indicate which keys were removed. Users of `@techdocs/cli` should also upgrade to the latest version, which includes the fixed `@backstage/plugin-techdocs-node` dependency. Some workarounds are available. Configure TechDocs with `runIn: docker` instead of `runIn: local` to provide container isolation, though it does not fully mitigate the risk. Limit who can modify `mkdocs.yml` files in repositories that TechDocs processes; only allow trusted contributors. Implement PR review requirements for changes to `mkdocs.yml` files to detect malicious `hooks` configurations before they are merged. Use MkDocs < 1.4.0 (e.g., 1.3.1) which does not support hooks. Note: This may limit access to newer MkDocs features. Building documentation in CI/CD pipelines using `@techdocs/cli` does not mitigate this vulnerability, as the CLI uses the same vulnerable `@backstage/plugin-techdocs-node` package."
},
{
"lang": "es",
"value": "Backstage es un framework abierto para construir portales de desarrolladores, y @backstage/plugin-techdocs-node proporciona funcionalidades comunes de node.js para TechDocs. En versiones de @backstage/plugin-techdocs-node anteriores a 1.13.11 y 1.14.1, cuando TechDocs está configurado con 'runIn: local', un actor malicioso que puede enviar o modificar el archivo 'mkdocs.yml' de un repositorio puede ejecutar código Python arbitrario en el server de compilación de TechDocs a través de la configuración de hooks de MkDocs. Las versiones 1.13.11 y 1.14.1 de @backstage/plugin-techdocs-node contienen una corrección. La corrección introduce una lista de permitidos (allowlist) de claves de configuración de MkDocs compatibles. Las claves de configuración no compatibles (incluyendo 'hooks') ahora se eliminan de 'mkdocs.yml' antes de ejecutar el generador, con una advertencia registrada para indicar qué claves se eliminaron. Los usuarios de '@techdocs/cli' también deben actualizar a la última versión, que incluye la dependencia corregida de '@backstage/plugin-techdocs-node'. Algunas soluciones alternativas están disponibles. Configure TechDocs con 'runIn: docker' en lugar de 'runIn: local' para proporcionar aislamiento de contenedor, aunque no mitiga completamente el riesgo. Limite quién puede modificar los archivos 'mkdocs.yml' en los repositorios que TechDocs procesa; solo permita colaboradores de confianza. Implemente requisitos de revisión de PR para cambios en los archivos 'mkdocs.yml' para detectar configuraciones maliciosas de 'hooks' antes de que se fusionen. Use MkDocs < 1.4.0 (por ejemplo, 1.3.1) que no soporta hooks. Nota: Esto puede limitar el acceso a características más nuevas de MkDocs. La compilación de documentación en pipelines de CI/CD usando '@techdocs/cli' no mitiga esta vulnerabilidad, ya que la CLI utiliza el mismo paquete vulnerable de '@backstage/plugin-techdocs-node'."
}
],
"lastModified": "2026-07-15T02:18:52.727",
"configurations": [
{
"nodes": [
{
"negate": false,
"cpeMatch": [
{
"criteria": "cpe:2.3:a:linuxfoundation:backstage:*:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "086F7DE4-8356-4AE3-9E29-B852A5C4B2DB",
"versionEndExcluding": "1.13.11"
},
{
"criteria": "cpe:2.3:a:linuxfoundation:backstage:*:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "0393AC7C-1889-4869-ABAF-1C5D96CA2C06",
"versionEndExcluding": "1.14.1",
"versionStartIncluding": "1.14.0"
}
],
"operator": "OR"
}
]
}
],
"sourceIdentifier": "security-advisories@github.com"
}