Skip to content

Password Exposure in IPMI Tool Command Execution #12027

Description

@YLChen-007

Summary

A security vulnerability has been identified in the Apache CloudStack Out-of-Band Management IPMI tool driver where plaintext passwords are logged when trace-level logging is enabled. The password passed via cmd.getNewPassword() is included in the command arguments and subsequently exposed through debug logging.

Vulnerability Details

Component: org.apache.cloudstack.outofbandmanagement.driver.ipmitool.IpmitoolOutOfBandManagementDriver

Vulnerability Type: Sensitive Information Disclosure / Password Exposure in Logs

Severity: Medium to High (depending on logging configuration and log access controls)

Technical Description

In the execute(OutOfBandManagementDriverChangePasswordCommand cmd) method, the new password is passed directly to the IPMI tool command arguments:

final List<String> ipmiToolCommands = IPMITOOL.getIpmiToolCommandArgs(IpmiToolPath.value(),
        IpmiToolInterface.value(), IpmiToolRetries.value(),
        cmd.getOptions(), "user", "set", "password", outOfBandManagementUserId, cmd.getNewPassword());

return IPMITOOL.executeCommands(ipmiToolCommands, cmd.getTimeout())

//OutOfBandManagementDriverResponse org.apache.cloudstack.outofbandmanagement.driver.ipmitool.IpmitoolWrapper.executeCommands(List<String> commands, Duration timeOut)
public OutOfBandManagementDriverResponse executeCommands(final List<String> commands, final Duration timeOut) {
     final ProcessResult result = RUNNER.executeCommands(commands, timeOut);
     ...
}

These commands are finally passed to org.apache.cloudstack.utils.process.ProcessRunner.executeCommands(List<String> commands, Duration timeOut), which logs the complete command string without improper sanitization when debug logging is enabled:

  String commandLog = removeCommandSensitiveInfoForLogging(StringUtils.join(commands, " "));
  logger.debug("Preparing command [{}] to execute.", commandLog);
  final Process process = new ProcessBuilder().command(commands).start();

Activity

  1. added this to the 4.20.3 milestone on Nov 10, 2025
  2. abh1sar commented on Jan 5, 2026

    @abh1sar
    Contributor

    Fixed by #12028

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions