ZeroHour

CVE-2026-75092

niche

Root privilege escalation in Red Hat Leapp RHEL 9-to-10 MySQL upgrade actor

CVSS 3.1
7.3 high
EPSS
Published
()
Modified
AI analysis

A local privilege escalation flaw exists in the scan_mysql actor of leapp-upgrade-el9toel10 (shipped in leapp-repository), which runs mysqld --validate-config directly as root during RHEL 9 to RHEL 10 in-place upgrades instead of using the packaged systemd unit that drops privileges to the mysql user. An attacker who already has OS-level execution as the mysql service identity can plant a crafted persisted configuration (mysqld-auto.cnf) and a malicious shared object in /var/lib/mysql, setting plugin_dir and early_plugin_load so MySQL dlopen()s the attacker-controlled plugin before its runtime-user check. When an administrator later runs the documented Leapp preupgrade or upgrade workflow, the injected code executes as UID 0 with full capabilities in the unconfined_t SELinux domain, yielding complete host compromise. Affected deployments are RHEL 9 systems with MySQL (datadir /var/lib/mysql) that use Leapp for in-place upgrades to RHEL 10; ordinary SQL privileges alone are not sufficient — the attacker must first compromise the mysql OS identity. No public proof of concept exists and no exploitation has been reported (not in CISA KEV).

What to do: Apply Red Hat updates for leapp-repository as soon as a fixed build is released and verify the scan_mysql actor no longer executes mysqld as root. Before any Leapp preupgrade or upgrade run, inspect /var/lib/mysql for unexpected .so files and a mysqld-auto.cnf containing plugin_dir, early_plugin_load, plugin_load, or plugin_load_add entries pointing outside /usr, and audit for signs of compromise of the mysql service account. Additionally, restrict and monitor access to the mysql OS identity, since OS-level execution as mysql is a prerequisite for this attack.

Affected
Red Hat leapp-repository (leapp-upgrade-el9toel10 scan_mysql actor)
Estimated exposure
nicheestimated low thousands to low tens of thousands of hosts at any given time — RHEL 9 has a large install base (millions of subscriptions), but exposure requires the specific combination of local MySQL, a prior compromise of the mysql OS identity, and an active Leapp RHEL 9-to-10 upgrade, so the realistically…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

A privilege escalation flaw was found in the scan_mysql actor of leapp-upgrade-el9toel10 (provided by leapp-repository). During RHEL 9 to RHEL 10 upgrades, the actor runs: mysqld --validate-config --log-error-verbosity=2 directly as root in the Leapp actor context, bypassing the packaged MySQL systemd unit that normally starts the daemon as User=mysql. A process compromised as the mysql OS identity can write a version-2 persisted configuration (mysqld-auto.cnf) and a malicious shared object into /var/lib/mysql (a directory owned by mysql). That persisted map can set plugin_dir to /var/lib/mysql and early_plugin_load (or related loader options such as plugin_load / plugin_load_add) so MySQL loads the attacker-controlled object during configuration validation. Plugin loading can reach dlopen() before MySQL’s runtime-user check and before plugin-symbol validation. When an administrator subsequently runs the documented Leapp preupgrade or upgrade workflow, attacker-controlled code can execute as UID 0 with a full capability set in an unconfined SELinux domain (unconfined_t). The attack does not require write access to the default system plugin path under /usr; redirecting plugin_dir via mysql-owned persisted state is sufficient. Ordinary SQL privileges alone (including highly privileged SQL accounts) are not a sufficient startpoint — OS-level execution as the mysql service identity is required, plus later administrator invocation of Leapp.

Weakness
CWE-250
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H

In the news

No ingested article mentions this CVE yet.