
تحويل وصول تطبيق جافا إلى الموارد المحمية إلى رسائل سجل.
التوثيق | التغييرات من المنبع | مدونة المشروع
يراقب JVMXRay تطبيقات Java في الوقت الفعلي عبر حقن البايت كود، ويكشف الثغرات والأنشطة المشبوهة دون تغيير الكود. 19 مستشعرًا معياريًا يتتبعون الوصول إلى الملفات، اتصالات الشبكة، استعلامات SQL، العمليات التشفيرية، المصادقة، تنفيذ العمليات، والمزيد — ويولدون أحداث أمنية منظمة وقابلة للقراءة آليًا مع ارتباط تلقائي عبر المستشعرات.
git clone https://github.com/spoofzu/jvmxray.git
cd jvmxray
mvn clean install
خلال مرحلة اختبار Maven، يُشغَّل برنامج صغير يسمى Turtle تحت وكيل JVMXRay المُنشأ حديثًا. يقوم Turtle بتنفيذ إدخال/إخراج الملفات، التشفير، تنفيذ العمليات، التسلسل، الانعكاس، وأنشطة أخرى تؤدي إلى تشغيل المستشعرات — وبالتالي فإن البناء الناجح يمنحك بالفعل سجلات أحداث أمنية حقيقية لاستكشافها في ./target/test-jvmxray/. كما يتم إنشاء قاعدة بيانات SQLite على ./target/test-jvmxray/common/data/jvmxray-test.db للتجربة السريعة. راجع التوثيق لمزيد من التفاصيل.
انشر كعامل Java في تطبيقاتك الخاصة:
java -javaagent:target/jvmxray-0.0.1-agent.jar -jar yourapp.jar
trace_id و scope_chain تسمح لفرق SOC بتتبع حادثة من طلب HTTP عبر حقن SQL إلى سرقة البيانات في استعلام واحد.ضع في اعتبارك أن JVMXRay هو مصدر حقيقة لما يفعله تطبيق Java، وليس محرك تحليل. يتم توفير التحليل بواسطة حل السجلات المركزي الخاص بك و/أو مشاريع أدوات الذكاء الاصطناعي الخاصة بك.
| المستشعر | ما يراقبه |
|---|---|
| إدخال/إخراج الملفات | قراءات الملفات، كتاباتها، حذفها، صلاحياتها، الروابط الرمزية مع دقة المسار وإحصائيات الإدخال/الإخراج الإجمالية |
| الشبكة | Socket connect/accept/bind/close مع كشف TLS، تصنيف IP الخاص، التوقيت |
| SQL | التقاط الاستعلام مع كشف تحديد المعاملات، نوع العملية، المدة، بيانات تعريف الاتصال |
| HTTP | الطلب/الاستجابة مع تحليل رؤوس الأمان، ارتباط المستخدم/الجلسة |
| العملية | ProcessBuilder.start() و Runtime.exec() مع وسائط الأوامر، المدة، حالة الخروج |
| التشفير | Cipher/KeyStore/MessageDigest/SSL مع كشف الخوارزميات الضعيفة والتحقق من قوة المفتاح |
| المصادقة | عمليات الجلسة، تسجيل الدخول JAAS، مصادقة Spring Security، استعلامات principal مع تتبع النجاح/الفشل |
| استدعاء API | HttpClient.send() مع URI، الطريقة، المضيف، TLS، حالة الاستجابة، التوقيت |
| محرك البرامج النصية | ScriptEngine.eval() مع تعريف المحرك، تجزئة المحتوى، كشف الأنماط المشبوهة، مستوى الخطر |
| التسلسل | إلغاء التسلسل الأصلي لـ Java، Jackson، Gson، XStream مع كشف سلاسل الأدوات |
| الانعكاس | Class.forName، Method.invoke، Field access، setAccessible مع تصنيف التهديدات |
| التكوين | خصائص النظام، متغيرات البيئة، ملفات Properties، Preferences مع تعليقات أمان |
| المكتبة | تحميل JAR الثابت والديناميكي مع SHA-256، إحداثيات Maven، جرد الحزم |
| المراقبة | صحة JVM: الذاكرة، الخيوط، GC، وحدة المعالجة المركزية، الملفات المفتوحة، كشف الجمود (فاصل 60 ثانية) |
| الاستثناء غير المعالج | تشخيصات الأعطال: المكدس الكامل، حالة الذاكرة، تفريغ الخيوط، سلسلة الأسباب، معرف الحادثة |
| تهيئة التطبيق | التقاط مرة واحدة عند بدء التشغيل: إصدار JVM، نظام التشغيل، كشف الحاوية، متغيرات البيئة (مخفية) |
| نقل البيانات | عد بايتات InputStream.read() (معطل حاليًا — واسع جدًا) |
| الخيط | مراقبة دورة حياة الخيط (معطل حاليًا — يحتاج إصلاح تسجيل متكرر) |
| الذاكرة | تتبع تخصيص الذاكرة (معطل حاليًا — يحتاج إصلاح تسجيل متكرر) |
يتضمن كل حدث مستشعر حقول ارتباط لإعادة بناء سلاسل الهجوم:
| الحقل | مثال | الغرض |
|---|---|---|
trace_id | a1b2c3d4e5f6 | يربط جميع الأحداث في نفس سياق التنفيذ |
scope_chain | HTTP>SQL>FileIO | مسار المستشعر المتداخل — "تتبع الأمن" |
parent_scope | SQL | الأصل المباشر لإعادة بناء الشجرة |
scope_depth | 3 | مستوى التداخل — العمق 6+ يستدعي التحقيق |
سلسلة نطاق مثل HTTP>Serialization>Reflection>Process هي توقيع هجوم إلغاء تسلسل في لمحة. تم فهرسة حقل TRACE_ID في قاعدة البيانات لاستعلامات الارتباط السريعة.
java -javaagent:jvmxray-agent.jar -jar app.jar
|
AgentBootstrap (مُحمّل فئة معزول)
|
ByteBuddy يُثبّت معترضات المستشعرات
|
تُطلق المستشعرات عند دخول/خروج الطريقة
|
LogProxy يدمج سياق ارتباط MCC
|
+----------+----------+----------+
| SQLite | ملف | Socket |
| ملحق | ملحق | ملحق |
+----------+----------+----------+
تم تطوير هذا المشروع باستخدام أفكار وهندسة وكود في بعض الحالات مما يلي:
ميلتون سميث — منشئ المشروع وقائده
إفصاح: JVMXRay غير معتمد أو موافَق عليه أو منتسب إلى Oracle Corporation.