
rvia in Raynet esegue un comando find con criteri di ricerca terminati in modo improprio per individuare le installazioni Java quando viene invocata l'opzione oracle. Gli aggressori potrebbero creare strutture di directory specifiche che soddisfano i criteri di ricerca malformati, facendo sì che l'agente esegua un binario malevolo durante il processo di rilevamento 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 \)"
Questo comando dovrebbe ignorare i binari Java in /tmp (anche in /dev, /etc, /mnt e /proc, ma siamo interessati all'esempio con /tmp poiché è scrivibile da chiunque).
Si noti che manca l'esclusione di altre directory potenzialmente pericolose come
/home.
Il problema sorge dal fatto che la prima parte del comando, destinata a ignorare directory specifiche, manca del carattere * alla fine di queste directory, mentre il carattere * viene usato all'inizio delle altre directory destinate alla ricerca.
Ciò consente a qualsiasi utente di manomettere il file Java eseguito durante il processo di rilevamento Java, poiché l'opzione oracle viene comunemente eseguita come cron job.
mkdir -p /tmp/jdk/bin
echo 'echo "rvia oracle was executed!" > /tmp/PoC' > /tmp/jdk/bin/java && chmod +rx /tmp/jdk/bin/java

Questo perché quando si usa l'opzione oracle, "se il percorso del runtime Java non è configurato nel file /opt/rvia/rvia.cfg, RayVentory Scan Engine cerca comunque di trovarlo ogni volta che ne ha bisogno." E a un certo punto tenta di ottenere la versione dell'ambiente Java installato eseguendo java -version.