CVE-2026-54445Medium▾ SunlitVantage6: Set admin user and password from environment or configuration
▾ Sunlit zone — Low / medium · no exploitation signal
impact 27.5 · likelihood 0.1 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
Exploit-prediction probability, daily snapshots since Jul 10.
Disclosure to exploitation, from the record and what we observed since indexing it.
Disclosed via OSV
Last analysed / modified upstream
0.3%
Vantage6 currently provides an initial user with username root and password root. This is not ideal for the following reasons:
root that probably has admin rightsNo
It is possible to delete the root user after it has been used to create other users
We could consider doing this like mongodb
Luis uses the following patch to mitigate it:
diff --git a/vantage6-server/vantage6/server/__init__.py b/vantage6-server/vantage6/server/__init__.py
index ea362c1e..c6dcbbd9 100644
--- a/vantage6-server/vantage6/server/__init__.py
+++ b/vantage6-server/vantage6/server/__init__.py
@@ -618,18 +618,30 @@ class ServerApp:
# TODO use constant instead of 'Root' literal
root = db.Role.get_by_name("Root")
- log.warn(
- f"Creating root user: "
- f"username={SUPER_USER_INFO['username']}, "
- f"password={SUPER_USER_INFO['password']}"
- )
+ # Temporary patch
+ # read initial root password from file (docker secret) if provided
+ # TODO: This is a workaround so we don't have an insecure vserver
+ # at the start. Ideally, we would provide an already hashed
+ # password. But as hashing is implemented via @validates on
+ # the field 'password', there isn't a nice way around this.
+ if os.environ.get("V6_INITIAL_ROOT_PASSWORD_FILE"):
+ with open(
+ os.environ.get("V6_INITIAL_ROOT_PASSWORD_FILE")
+ ) as password_file:
+ initial_root_password = password_file.read().strip()
+ log.info(
+ f"Creating root user with password provided via V6_INITIAL_ROOT_PASSWORD_FILE"
+ )
+ else:
+ initial_root_password = SUPER_USER_INFO["password"]
+ log.warn(f"Creating root user with default credentials!")
user = db.User(
username=SUPER_USER_INFO["username"],
roles=[root],
organization=org,
email="[email protected]",
- password=SUPER_USER_INFO["password"],
+ password=initial_root_password,
failed_login_attempts=0,
last_login_attempt=None,
)
vantage6 < 5.0.0Upgrade to a patched release:
vantage6 5.0.0Connected by shared product, vendor, weakness, or advisory.
CVE-2024-24769LowVantage6: No limit on emails sent for password/MFA reset
CVE-2024-27928MediumVantage6: 2FA can be circumvented with hacked email access
CVE-2026-54533Mediumvantage6 node has an Improper Access Control issue
CVE-2024-21649High· 8.8vantage6 remote code execution vulnerability
CVE-2023-22738Medium· 6.5vantage6 vulnerable to Improper Preservation of Permissions
CVE-2024-22193Low· 3.5vantage6 may create unencrypted tasks in encrypted collaboration