Vulnerabilidad en OpenMetadata (CVE-2024-28254)
Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-78
Neutralización incorrecta de elementos especiales usados en un comando de sistema operativo (Inyección de comando de sistema operativo)
Fecha de publicación:
15/03/2024
Última modificación:
21/03/2024
Descripción
OpenMetadata es una plataforma unificada para el descubrimiento, la observabilidad y la gobernanza impulsada por un repositorio central de metadatos, un linaje profundo y una colaboración fluida en equipo. El método `?AlertUtil::validateExpression` evalúa una expresión SpEL usando `getValue` que de forma predeterminada usa `StandardEvaluationContext`, permitiendo que la expresión alcance e interactúe con clases Java como `java.lang.Runtime`, lo que lleva al código remoto Ejecución. El endpoint `/api/v1/events/subscriptions/validation/condition/` pasa datos controlados por el usuario `AlertUtil::validateExpession`, lo que permite a los usuarios autenticados (no administradores) ejecutar comandos arbitrarios del sistema en el sistema operativo subyacente. Además, falta una verificación de autorización ya que `Authorizer.authorize()` nunca se llama en la ruta afectada y, por lo tanto, cualquier usuario no administrador autenticado puede activar este endpoint y evaluar expresiones SpEL arbitrarias que conduzcan a la ejecución de comandos arbitrarios. . Esta vulnerabilidad se descubrió con la ayuda de la consulta de inyección de lenguaje de expresión (Spring) de CodeQL y también se rastrea como "GHSL-2023-235". Este problema puede provocar la ejecución remota de código y se solucionó en la versión 1.2.4. Se recomienda a los usuarios que actualicen. No se conocen workarounds para esta vulnerabilidad.
Impacto
Puntuación base 3.x
8.80
Gravedad 3.x
ALTA
Referencias a soluciones, herramientas e información
- https://codeql.github.com/codeql-query-help/java/java-spel-expression-injection
- https://github.com/open-metadata/OpenMetadata/blob/84054a85d3478e3e3795fe92daa633ec11c9d6d9/openmetadata-service/src/main/java/org/openmetadata/service/events/subscription/AlertUtil.java#L101
- https://github.com/open-metadata/OpenMetadata/blob/84054a85d3478e3e3795fe92daa633ec11c9d6d9/openmetadata-service/src/main/java/org/openmetadata/service/events/subscription/AlertUtil.java#L108
- https://github.com/open-metadata/OpenMetadata/security/advisories/GHSA-j86m-rrpr-g8gw
- https://github.com/spring-projects/spring-framework/blob/4e2d3573189b7c0afce62bce29cd915de4077f56/spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java#L106