CVE-2026-122043: OS Command Injection
repmgr 4.0.0 through 5.5.0 is affected by an OS command injection vulnerability (CWE-78) in event notifications. When eventnotificationcommand is configured, repmgr substitutes the %a (node name), %c (connection string) and %d (details) placeholders into the command and runs it through the shell. %a and %c are inserted without escaping, and %d escapes only double quotes, so shell command substitution still works inside the quoting the documentation recommends. The node name and connection string come from node records in the repmgr.nodes table. An attacker with the credentials of a non-superuser repmgr database user can write a crafted node record and run OS commands, as the operating system user that runs repmgr or repmgrd (usually postgres), on other cluster nodes that process an event using these placeholders. The %a placeholder of failovervalidationcommand has the same flaw. Deployments whose repmgr database user is a superuser gain no new capability, because a superuser can already run OS commands, and deployments that do not use these placeholders are not affected. The issue is fixed in repmgr 5.5.1. After upgrading, operators must remove any quotes they placed around these placeholders, because a placeholder left inside double quotes is still open to command injection.
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
repmgrto a version that resolves this vulnerability.Fixed in 5.5.1 - Configuration
After upgrading, remove any quotes around the %a, %c, and %d placeholders in event_notification_command, and around the %a placeholder in failover_validation_command, because quoted placeholders remain vulnerable to command injection.
repmgr event_notification_command and failover_validation_command = placeholders unquoted
Event History
Frequently Asked Questions
Which deployments are exposed to this issue?
Deployments are affected only when event_notification_command uses the %a, %c, or %d placeholders, or when failover_validation_command uses %a. Deployments using a superuser as the repmgr database user gain no new capability, and deployments that do not use these placeholders are not affected.
What access does an attacker need to exploit it?
An attacker needs credentials for a non-superuser repmgr database user that can write a crafted node record in repmgr.nodes. The vulnerable command is then executed by another cluster node processing an event, as the operating system account running repmgr or repmgrd, usually postgres.
What is the remediation, and is follow-up configuration required?
Upgrade to repmgr 5.5.1. After upgrading, operators must remove any quotes they placed around placeholders in the affected commands.
What can be done if upgrading cannot happen immediately?
Avoid using the affected placeholders: %a, %c, and %d in event_notification_command, and %a in failover_validation_command. Restricting the ability of non-superuser repmgr database users to write crafted records in repmgr.nodes also addresses the described attack prerequisite.