
Preuve de concept pour CVE-2026-38945, démontrant un traversement de chemin dans la détection Java du moteur d'analyse RayVentory afin d'exécuter des binaires arbitraires.
rvia dans Raynet exécute une commande find avec des critères de recherche mal terminés pour localiser les installations Java lorsque l'option oracle est invoquée. Les attaquants pourraient créer des structures de répertoires spécifiques qui satisfont les critères de recherche mal formés, amenant l'agent à exécuter un binaire malveillant lors du processus de détection 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 \)"
Cette commande devrait ignorer les binaires Java dans /tmp (ainsi que dans /dev, , et , mais nous nous intéressons à l'exemple avec car il est accessible en écriture à tous).
/etc/mnt/proc/tmpNotez que l'exclusion d'autres répertoires potentiellement dangereux comme
/homeest absente.
Le problème vient du fait que la première partie de la commande, destinée à ignorer certains répertoires, ne comporte pas le caractère * à la fin de ces répertoires, alors que le caractère * est utilisé au début des autres répertoires à rechercher.
Cela permet à tout utilisateur de modifier le fichier Java exécuté durant le processus de détection Java, car l'option oracle est souvent lancée via une tâche cron.
mkdir -p /tmp/jdk/bin
echo 'echo "rvia oracle was executed!" > /tmp/PoC' > /tmp/jdk/bin/java && chmod +rx /tmp/jdk/bin/java

Cela est dû au fait qu'avec l'option oracle, « si le chemin d'exécution Java n'est pas configuré dans le fichier /opt/rvia/rvia.cfg, RayVentory Scan Engine essaie de le trouver quand même chaque fois qu'il en a besoin ». Et à un moment donné, il tente d'obtenir la version de l'environnement Java installé en exécutant java -version.