
CVE-2026-38945 के लिए प्रमाण-अवधारणा: RayVentory Scan Engine के Java डिटेक्शन में पथ ट्रैवर्सल स्थानीय हमलावरों को तैयार किए गए निर्देशिका संरचनाओं के माध्यम से मनमाने बाइनरी निष्पादित करने की अनुमति देता है।
rvia Raynet में एक find कमांड को अनुचित रूप से समाप्त खोज मानदंडों के साथ निष्पादित करता है ताकि oracle विकल्प आह्वान किए जाने पर Java इंस्टॉलेशन का पता लगाया जा सके। हमलावर विशिष्ट निर्देशिका संरचनाएँ बना सकते हैं जो दोषपूर्ण खोज मानदंडों को संतुष्ट करती हैं, जिससे एजेंट Java पहचान प्रक्रिया के दौरान एक दुर्भावनापूर्ण binary निष्पादित करता है।

/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 \)"
यह कमांड /tmp पर Java बाइनरी को अनदेखा करनी चाहिए (/dev, /etc, /mnt, और /proc पर भी, लेकिन हम /tmp के उदाहरण में रुचि रखते हैं क्योंकि यह विश्व-लेखनीय है)।
ध्यान दें कि
/homeजैसी अन्य संभावित खतरनाक निर्देशिकाओं का बहिष्कार गायब है।
समस्या यह उत्पन्न होती है कि कमांड का पहला भाग जो विशिष्ट निर्देशिकाओं को अनदेखा करने के लिए है, उन निर्देशिकाओं के अंत में * वर्ण गायब है और * वर्ण का उपयोग खोजे जाने वाली अन्य निर्देशिकाओं की शुरुआत में किया जा रहा है।
यह किसी भी उपयोगकर्ता को Java पहचान प्रक्रिया के दौरान निष्पादित Java फ़ाइल के साथ छेड़छाड़ करने की अनुमति देता है, क्योंकि oracle विकल्प आमतौर पर एक cron कार्य के रूप में चलाया जाता है।
mkdir -p /tmp/jdk/bin
echo 'echo "rvia oracle was executed!" > /tmp/PoC' > /tmp/jdk/bin/java && chmod +rx /tmp/jdk/bin/java

ऐसा इसलिए है क्योंकि oracle विकल्प का उपयोग करते समय "यदि Java रनटाइम पथ /opt/rvia/rvia.cfg फ़ाइल में कॉन्फ़िगर नहीं है, तो RayVentory Scan Engine जब भी इसकी आवश्यकता होती है, वैसे भी इसे खोजने का प्रयास करता है।" और किसी बिंदु पर java -version निष्पादित करके स्थापित Java वातावरण का संस्करण प्राप्त करने का प्रयास करता है।