
Exploit de prueba de concepto para CVE-2026-38945, que demuestra el recorrido de rutas en la detección de Java del Motor de Escaneo RayVentory para ejecutar binarios arbitrarios.
rvia en Raynet ejecuta un comando find con criterios de búsqueda terminados incorrectamente para localizar instalaciones de Java cuando se invoca la opción oracle. Los atacantes podrían crear estructuras de directorio específicas que cumplieran con los criterios de búsqueda mal formados, haciendo que el agente ejecute un binario malicioso durante el proceso de detección de Java.

/bin/sh -c "find / -not \( -path '/dev' -o -path '/etc' -o -path '/mnt' -o -path '/tmp' -o -path '/proc' \) \( -path '*/jdk/bin/java' -o -path '*/jdk/jre/bin/java' -o -path '*/jdk-*/bin/java' -o -path '*/jdk*/bin/java' -o -path '*/jdk*/jre/bin/java' \) \( -type f -o -type l \)"
Este comando debería ignorar los binarios de en (también en , , y , pero nos interesa el ejemplo con ya que es escribible por cualquier usuario).
/tmp/dev/etc/mnt/proc/tmpNótese que falta la exclusión de otros directorios potencialmente peligrosos como
/home.
El problema surge en que la primera parte del comando, destinada a ignorar directorios específicos, carece del carácter * al final de estos directorios, mientras que el carácter * se está usando al inicio de los otros directorios que se pretenden buscar.
Esto permite que cualquier usuario manipule el archivo Java ejecutado durante el proceso de detección de Java, ya que la opción oracle se ejecuta comúnmente como una tarea cron.
mkdir -p /tmp/jdk/bin
echo 'echo "rvia oracle was executed!" > /tmp/PoC' > /tmp/jdk/bin/java && chmod +rx /tmp/jdk/bin/java

Esto se debe a que, al usar la opción oracle, "si la ruta del runtime de Java no está configurada en el archivo /opt/rvia/rvia.cfg, RayVentory Scan Engine intenta buscarla de todas formas cada vez que la necesita". Y en algún punto intenta obtener la versión del entorno Java instalado ejecutando java -version.