
Java एप्लिकेशन की संरक्षित संसाधनों तक पहुंच को लॉग संदेशों के रूप में बाहरी बनाएं।
दस्तावेज़ीकरण | अपस्ट्रीम से परिवर्तन | परियोजना ब्लॉग
JVMXRay बाइटकोड इंजेक्शन के माध्यम से Java अनुप्रयोगों की वास्तविक समय में निगरानी करता है, बिना कोड परिवर्तन के भेद्यताओं और संदिग्ध गतिविधियों का पता लगाता है। 19 मॉड्यूलर सेंसर फ़ाइल एक्सेस, नेटवर्क कनेक्शन, SQL क्वेरी, क्रिप्टोग्राफ़िक संचालन, प्रमाणीकरण, प्रक्रिया निष्पादन और अधिक की निगरानी करते हैं — स्वचालित क्रॉस-सेंसर सहसंबंध के साथ संरचित, मशीन-पठनीय सुरक्षा घटनाएँ उत्पन्न करते हैं।
git clone https://github.com/spoofzu/jvmxray.git
cd jvmxray
mvn clean install
Maven के परीक्षण चरण के दौरान, Turtle नामक एक छोटा प्रोग्राम नवनिर्मित JVMXRay एजेंट के अंतर्गत चलता है। Turtle फ़ाइल I/O, क्रिप्टोग्राफ़ी, प्रक्रिया निष्पादन, सीरियलाइज़ेशन, रिफ्लेक्शन और अन्य गतिविधियाँ करता है जो सेंसर को ट्रिगर करती हैं — इसलिए एक सफल बिल्ड आपको पहले से ही ./target/test-jvmxray/ में वास्तविक सुरक्षा घटना लॉग देने का अवसर देता है। त्वरित प्रयोग के लिए ./target/test-jvmxray/common/data/jvmxray-test.db पर एक SQLite डेटाबेस भी बनाया जाता है। अधिक विवरण के लिए दस्तावेज़ देखें।
अपने स्वयं के अनुप्रयोगों में Java एजेंट के रूप में तैनात करें:
java -javaagent:target/jvmxray-0.0.1-agent.jar -jar yourapp.jar
trace_id और scope_chain के साथ सहसंबद्ध घटनाएँ SOC टीमों को एक ही क्वेरी में HTTP अनुरोध से SQL इंजेक्शन से डेटा चोरी तक एक घटना का पता लगाने देती हैं।ध्यान रखें, JVMXRay यह निर्धारित करने का स्रोत है कि Java अनुप्रयोग क्या कर रहा है, विश्लेषण इंजन नहीं। विश्लेषण आपके केंद्रीकृत लॉगिंग समाधान और/या आपके AI टूलिंग परियोजनाओं द्वारा प्रदान किया जाता है।
प्रत्येक सेंसर घटना में हमला श्रृंखलाओं के पुनर्निर्माण के लिए सहसंबंध फ़ील्ड शामिल होते हैं:
HTTP>Serialization>Reflection>Process जैसी स्कोप श्रृंखला एक दृष्टि में एक डिसीरियलाइज़ेशन हमला हस्ताक्षर है। तेज़ सहसंबंध क्वेरी के लिए डेटाबेस में TRACE_ID कॉलम अनुक्रमित है।
java -javaagent:jvmxray-agent.jar -jar app.jar
|
AgentBootstrap (isolated classloader)
|
ByteBuddy installs sensor interceptors
|
Sensors fire on method entry/exit
|
LogProxy merges MCC correlation context
|
+----------+----------+----------+
| SQLite | File | Socket |
| Appender | Appender | Appender |
+----------+----------+----------+
यह परियोजना निम्नलिखित से विचारों, आर्किटेक्चर और कुछ मामलों में कोड का उपयोग करके विकसित की गई थी:
मिल्टन स्मिथ — परियोजना निर्माता, नेता
प्रकटीकरण: JVMXRay Oracle Corporation द्वारा अनुमोदित, समर्थित या इससे संबद्ध नहीं है।
| सेंसर | यह क्या निगरानी करता है |
|---|
| File I/O | फ़ाइल पढ़ना, लिखना, हटाना, अनुमतियाँ, सिमलिंक पथ समाधान और कुल I/O आँकड़ों के साथ |
| नेटवर्क | सॉकेट कनेक्ट/स्वीकार/बाइंड/क्लोज़ TLS पहचान, निजी IP वर्गीकरण, समय के साथ |
| SQL | पैरामीटरीकरण पहचान, संचालन प्रकार, अवधि, कनेक्शन मेटाडेटा के साथ क्वेरी कैप्चर |
| HTTP | सुरक्षा हेडर विश्लेषण, उपयोगकर्ता/सत्र सहसंबंध के साथ अनुरोध/प्रतिक्रिया |
| प्रक्रिया | ProcessBuilder.start() और Runtime.exec() कमांड तर्क, अवधि, निकास स्थिति के साथ |
| क्रिप्टो | Cipher/KeyStore/MessageDigest/SSL कमजोर एल्गोरिदम पहचान और कुंजी शक्ति सत्यापन के साथ |
| प्रमाणीकरण | सत्र संचालन, JAAS लॉगिन, स्प्रिंग सिक्योरिटी प्रमाणीकरण, प्रिंसिपल क्वेरी सफलता/विफलता ट्रैकिंग के साथ |
| API कॉल | HttpClient.send() URI, विधि, होस्ट, TLS, प्रतिक्रिया स्थिति, समय के साथ |
| स्क्रिप्ट इंजन | ScriptEngine.eval() इंजन पहचान, सामग्री हैशिंग, संदिग्ध पैटर्न का पता लगाना, जोखिम स्तर के साथ |
| सीरियलाइज़ेशन | Java मूल, Jackson, Gson, XStream डिसीरियलाइज़ेशन गैजेट श्रृंखला पहचान के साथ |
| रिफ्लेक्शन | Class.forName, Method.invoke, Field.access, setAccessible खतरा वर्गीकरण के साथ |
| कॉन्फ़िगरेशन | सिस्टम गुण, एनवी वेरिएबल, Properties फ़ाइलें, प्राथमिकताएँ सुरक्षा एनोटेशन के साथ |
| लाइब्रेरी | स्थिर और गतिशील JAR लोडिंग SHA-256, Maven निर्देशांक, पैकेज सूची के साथ |
| मॉनिटर | JVM स्वास्थ्य: मेमोरी, थ्रेड, GC, CPU, खुली फ़ाइलें, डेडलॉक पहचान (60 सेकंड अंतराल) |
| अनकॉट अपवाद | क्रैश डायग्नोस्टिक्स: पूर्ण स्टैक, मेमोरी स्थिति, थ्रेड डंप, कारण श्रृंखला, घटना ID |
| एप प्रारंभ | एक-बार स्टार्टअप कैप्चर: JVM संस्करण, OS, कंटेनर पहचान, एनवी वेरिएबल (संशोधित) |
| डेटा स्थानांतरण | InputStream.read() बाइट गणना (वर्तमान में अक्षम — बहुत व्यापक) |
| थ्रेड | थ्रेड जीवनचक्र निगरानी (वर्तमान में अक्षम — पुनरावृत्त लॉगिंग फिक्स की आवश्यकता) |
| मेमोरी | मेमोरी आवंटन ट्रैकिंग (वर्तमान में अक्षम — पुनरावृत्त लॉगिंग फिक्स की आवश्यकता) |
| फ़ील्ड | उदाहरण | उद्देश्य |
|---|
trace_id | a1b2c3d4e5f6 | उसी निष्पादन संदर्भ में सभी घटनाओं को जोड़ता है |
scope_chain | HTTP>SQL>FileIO | नेस्टेड सेंसर पथ — "सुरक्षा स्टैकट्रेस" |
parent_scope | SQL | पेड़ पुनर्निर्माण के लिए तत्काल मूल |
scope_depth | 3 | नेस्टिंग स्तर — गहराई 6+ जाँच की आवश्यकता |