
Signal-Server v20261007.0.0 - عالي - عن بُعد - صلاحيات متبقية - وصول غير مُصادق إلى Dropwizard admin :8081
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · signal-server-dropwizard-admin
الفئة: صلاحية متبقية الوصول: عن بُعد
Signal-Server v20261007.0.0 (a15d5cd) - Signal Messenger, LLC
يُطلق Dropwizard 5.0.2 DefaultServerFactory موصّل إدارة HTTP على المنفذ 8081 مع bindHost غير مضبوط (جميع الواجهات) وبدون مصادقة إدارية. لا يقوم Signal-Server بتجاوز ذلك أبدًا. لا يحتوي service/config/sample.yml على كتلة server:. ملف YAML يسرد فقط applicationConnectors الخاصة بـ TLS لا يزال يرث 8081 نصيًا صريحًا على 0.0.0.0. يبدأ server بالإضافة إلى عمّال ServerCommand الثلاثة تشغيله. ExternalRequestFilter موجود على سياق التطبيق فقط.
HTTP بدون مصادقة إلى :8081 هو مستوى الإدارة التشغيلي. ليس RCE. ليس استيلاء على الحساب. ليس قراءة رسائل مختومة.
| المعرّف | لا يوجد CVE بعد |
| الفئة | صلاحية متبقية (إدارة Dropwizard بدون مصادقة) |
| الوصول | عن بُعد (جميع الواجهات :8081، بدون مصادقة) |
| CWE | CWE-306، CWE-1188 |
| CVSS | مرتفع: 7.3 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L |
| المنتج | Signal-Server |
| المتأثر | v20261007.0.0 (a15d5cd) Dropwizard 5.0.2. العيّنة داخل الشجرة / adminConnectors المحذوفة. |
| المصادقة | لا شيء على موصّل الإدارة |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1 فقط |
أي شخص يمكنه فتح TCP إلى منفذ الإدارة (الافتراضي 0.0.0.0:8081، بدون إعداد إضافي، بدون ترويسة Authorization) يحصل على كل servlet إدارة Dropwizard 5 القياسي بالإضافة إلى مهمة Signal الإضافية. هذه هي مجموعة الصلاحيات الكاملة. لا شيء في هذه القائمة هو RCE أو ATO أو قراءة لأجسام الرسائل المختومة.
| الطريقة | المسار | الصلاحية |
|---|---|---|
| GET | /ping | تأكيد أن مستمع الإدارة يعمل. الجسم هو pong. |
| GET | /metrics | قراءة سجل Codahale الكامل بصيغة JSON: كومة JVM وغير الكومة، عدّادات GC، عدد الخيوط، عدّادات موصّل Jetty، مقاييس 4xx/5xx، المؤقتات. استخدم هذا لبصمة العملية، وتقدير الحمل، ومراقبة تأثير المهام اللاحقة. |
| GET | /threads | تفريغ كامل لخيوط JVM: كل اسم خيط، ومعرّفه، وحالته، وإطارات المكدس. في المختبر أظهر هذا dw-admin-* بالإضافة إلى إطارات java.base nio. على عقدة Signal حيّة قد يتضمن نفس التفريغ أسماء الفئات، وأسماء المسجّلات، وأي سلسلة تصادف وجودها على المكدس (مسارات الملفات، أسماء المضيفين، toString للوسائط أثناء التنفيذ). ليس تفريغًا للكومة وليس تفريغًا لقائمة انتظار الرسائل. |
| GET | /healthcheck | تشغيل فحوصات الصحة المسجّلة. هذه الشجرة لا تسجّل أي إضافات، لذا يكون الجسم هو فحص الجمود الافتراضي (deadlocks.healthy). استجابة 200 مقابل 500 تخبرك ما إذا كانت JVM تعتقد أنها في حالة جمود. |
| GET | /tasks | سرد مهام الإدارة. على هذا الإصدار: gc، log-level، set-request-logging-enabled. |
| الطريقة | المسار | الصلاحية |
|---|---|---|
| POST | /tasks/log-level?logger=<name>&level=<LEVEL> | ضبط أي مسجّل Logback على TRACE أو DEBUG أو INFO أو WARN أو ERROR أو OFF. يمكن لـ TRACE أن يجعل مسجّلات التطبيق تطبع المزيد (بما في ذلك قيم سجّلها المطوّر). OFF على مسجّل أمني أو مسجّل وصول يجعله معتمًا. المهاجم لا يتلقى تدفق السجلات عبر هذا HTTP. إنهم يغيّرون ما تكتبه العملية على القرص أو stdout. دليل المختبر: اسم المسجّل SIGNAL-SERVER-DROPWIZARD-ADMIN-WITNESS إلى TRACE. |
| POST | /tasks/gc | استدعاء System.gc(). الاستجابة هي Running GC... / Done!. هذا تنبيه لإيقاف العالم، وليس موتًا للعملية. |
| POST | /tasks/set-request-logging-enabled?enabled=true | مهمة خاصة بـ Signal مسجّلة في WhisperServerService.run. تُفعّل مرشّح سجل الوصول للطلبات (RequestLogManager). بعد ذلك، يمكن لـ HTTP إلى موصّل التطبيق كتابة الطريقة، وURI، والترويسات (بما في ذلك Authorization Basic) إلى سجل الوصول على القرص. عميل الإدارة لا يستعيد تلك الأسطر. على عمّال message-persister-service / APN / idle-job لا يحتوي منفذ التطبيق على موارد Signal Jersey، لذا تهم هذه المهمة على server. enabled=false يوقفها مرة أخرى. |
ProcessBuilder، لا Runtime.exec.GET /heapdump يعيد 404.sample.yml أو في عناوين الربط.وصلت حاوية شقيقة على نفس شبكة Docker إلى http://vuln:8081/ping (200 pong) ولم تستطع الوصول إلى http://patched:8081/ping عندما كان bindHost هو 127.0.0.1. هذا هو نصف "عن بُعد".
ثبّتت signalapp/Signal-Server v20261007.0.0. ثمانية عشر بحثًا في المصدر. الدردشة، والمفاتيح، والرسائل، والنسخ الاحتياطية، والتبرعات، والمكالمات، وMFA، وحافلة gRPC، وHTTP الصادر جاءت فارغة عند Critical/High. بحث العمّال/الإدارة لم يكن كذلك. لا يزال Dropwizard 5.0.2 HttpConnectorFactory.admin() يستخدم المنفذ 8081 ومضيف ربط فارغًا. لا يضبط Signal أبدًا adminConnectors. إدارة Caddy الافتراضية على localhost. هذه ليست كذلك.
منعطف خاطئ: محاولة تشغيل Signal-Server الكامل. يمرّ sample.yml من check ولا يزال يحتاج إلى FoundationDB وDynamo وRedis وحزمة أسرار لـ run. الصلاحية المتبقية هي موصّل الإطار الذي يبدأه ServerCommand قبل أي من ذلك. المختبر هو Dropwizard 5.0.2 مع نفس ملف YAML الفارغ server: واسم مهمة Signal الإضافية.
cd lab
./run.sh
Loopback 127.0.0.1:19010. مشروع Compose signal-server-dropwizard-admin. الشاهد SIGNAL-SERVER-DROPWIZARD-ADMIN-WITNESS. ملف YAML الخاص بالأداة لا يحتوي على كتلة server:. ملف YAML السلبي يضبط bindHost: 127.0.0.1. السطر الأخير:
SUCCESS signal-server-dropwizard-admin how=unauth-admin-8081 ping=200 metrics=200 threads=200 healthcheck=200 tasks=200 log-level=TRACE gc=200 set-log=enabled bind=* remote-vuln=200 remote-patched=fail SIGNAL-SERVER-DROPWIZARD-ADMIN-WITNESS
اربط الإدارة بـ 127.0.0.1، أو اضبط adminConnectors: []، أو ضع مصادقة / mTLS على سياق الإدارة. لا تشحن ملف YAML يسرد فقط موصّلات التطبيق وتفترض أن 8081 بقي مغلقًا.
Abraxas Labs - abraxaslabs.tech - github.com/abraxas - @abraxas_null - [email protected]