IBM Support

Security Bulletin: Passwords stored in reversible manner in Security Key Lifecycle Manager (SKLM) (CVE-2020-4568)

Security Bulletin


Summary

The ssl.client.props in WebSphere Application Server uses the weak WAS XOR protection mechanism for keystore and truststore passwords. Security Key Lifecycle Manager v4.0 adds code to encrypt these instead. There are some manual steps required to make use of the new capability in v4.0.

Vulnerability Details

CVEID:   CVE-2020-4568
DESCRIPTION:   IBM Tivoli Key Lifecycle Manager stores user credentials in plain in clear text which can be read by a local user.
CVSS Base score: 6.3
CVSS Temporal Score: See: https://exchange.xforce.ibmcloud.com/vulnerabilities/184157 for the current score.
CVSS Vector: (CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N)

Affected Products and Versions

Affected Product(s) Version(s)
IBM Security Key Lifecycle Manager 3.0.1
IBM Security Key Lifecycle Manager 3.0
IBM Security Key Lifecycle Manager 4.0

Remediation/Fixes

Product Remediation/First Fix
IBM Security Key Lifecycle Manager SKLM v4.0

Install Security Key Lifecycle Manager v4.0 and perform the following steps:

1. Stop WebSphere Application Server.
2. Take a backup of the following files:

   Windows:

  1. <WAS_HOME>\bin\stopServer.bat
  2. <WAS_HOME>\bin\serverStatus.bat
  3. <WAS_HOME>\bin\wsadmin.bat

  Linux:

  1. <WAS_HOME>/bin/stopServer_org.sh
  2. <WAS_HOME>/bin/serverStatus.sh
  3. <WAS_HOME>/bin/wsadmin_org.sh

3. Complete these steps for each backed-up file mentioned in above step based on the operating system:

Windows:

a. Open the following file stopServer.bat and serverStatus.bat in edit mode and locate the following text:

>> %TMPJAVAPROPFILE% echo com.ibm.ffdc.log=%FFDCLOG%

b. On a new line after the located text, add the following lines:

>> %TMPJAVAPROPFILE% echo com.ibm.wsspi.security.crypto.customPasswordEncryptionEnabled=true
>> %TMPJAVAPROPFILE% echo com.ibm.wsspi.security.crypto.customPasswordEncryptionClass=com.ibm.tklm.obfuscation.handlers.SKLMWASPasswordEncryptionHandler

c. Save the file and close it.

d. Open the wsadmin.bat in edit mode and locate the following text:

>> %TMPJAVAPROPFILE% echo com.ibm.ws.ffdc.log=%USER_INSTALL_ROOT%/logs/ffdc/

e. On a new line after the located text, add the following lines:

>> %TMPJAVAPROPFILE% echo com.ibm.wsspi.security.crypto.customPasswordEncryptionEnabled=true
>> %TMPJAVAPROPFILE% echo com.ibm.wsspi.security.crypto.customPasswordEncryptionClass=com.ibm.tklm.obfuscation.handlers.SKLMWASPasswordEncryptionHandler

f. Save the file and close it.

Linux:

a. Open the following file stopServer_org.sh and serverStatus.sh in edit mode and locate the following text:

D_ARGS="-Dws.ext.dirs

b. At the end of above line after the located text, add the following text:

-Dcom.ibm.wsspi.security.crypto.customPasswordEncryptionClass=com.ibm.tklm.obfuscation.handlers.SKLMWASPasswordEncryptionHandler"

Make sure you remove the double quotes in the located text above and add the new text after space.

c. Save the file and close it.

d. Open the following file wsadmin_org.sh in edit mode and locate the following text:

-Dcom.ibm.ffdc.log="${USER_INSTALL_ROOT}/logs/ffdc/" \

e. On a new line after the located text, add the following lines:

-Dcom.ibm.wsspi.security.crypto.customPasswordEncryptionEnabled=true \
-Dcom.ibm.wsspi.security.crypto.customPasswordEncryptionClass=com.ibm.tklm.obfuscation.handlers.SKLMWASPasswordEncryptionHandler \

f. Save the file and close it.

4. Navigate to the bin directory under <WAS_HOME>.

  Windows: Open the command prompt and change directory to <WAS_HOME>\bin directory.
  Linux: Open the terminal and change directory to <WAS_HOME>/bin directory.

5. Run the following command:

Windows: 

PropFilePasswordEncoder_ce.bat "<WAS_HOME>\profiles\KLMProfile\properties\ssl.client.props" "com.ibm.ssl.keyStorePassword,com.ibm.ssl.trustStorePassword"

Example:

PropFilePasswordEncoder_ce.bat "c:\Program Files\IBM\WebSphere\AppServer\profiles\KLMProfile\properties\ssl.client.props"  "com.ibm.ssl.keyStorePassword,com.ibm.ssl.trustStorePassword"

where, WAS_HOME = C:\Program Files\IBM\WebSphere\AppServer

Linux:

PropFilePasswordEncoder_ce.sh "<WAS_HOME>/profiles/KLMProfile/properties/ssl.client.props" "com.ibm.ssl.keyStorePassword,com.ibm.ssl.trustStorePassword"

Example:

PropFilePasswordEncoder_ce.sh "/opt/IBM/WebSphere/AppServer/profiles/KLMProfile/properties/ssl.client.props"   "com.ibm.ssl.keyStorePassword,com.ibm.ssl.trustStorePassword"

where, WAS_HOME = /opt/IBM/WebSphere/AppServer

6. Start WebSphere AppServer Server.

Note - A future release of the product will automatically handle these steps during installation.

Workarounds and Mitigations

None

Get Notified about Future Security Bulletins

References

Off

Acknowledgement

Jonathan Fitz-Gerald, John Zuccato, Rodney Ryan, Chris Shepherd, Nathan Roane, Kamil Sarbinowski, Vince Dragnea, Troy Fisher and Elaheh Samani from IBM X-Force Ethical Hacking Team.

Change History

06 Nov 2020: Initial Publication

*The CVSS Environment Score is customer environment specific and will ultimately impact the Overall CVSS Score. Customers can evaluate the impact of this vulnerability in their environments by accessing the links in the Reference section of this Security Bulletin.

Disclaimer

According to the Forum of Incident Response and Security Teams (FIRST), the Common Vulnerability Scoring System (CVSS) is an "industry open standard designed to convey vulnerability severity and help to determine urgency and priority of response." IBM PROVIDES THE CVSS SCORES ""AS IS"" WITHOUT WARRANTY OF ANY KIND, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. CUSTOMERS ARE RESPONSIBLE FOR ASSESSING THE IMPACT OF ANY ACTUAL OR POTENTIAL SECURITY VULNERABILITY. In addition to other efforts to address potential vulnerabilities, IBM periodically updates the record of components contained in our product offerings. As part of that effort, if IBM identifies previously unidentified packages in a product/service inventory, we address relevant vulnerabilities regardless of CVE date. Inclusion of an older CVEID does not demonstrate that the referenced product has been used by IBM since that date, nor that IBM was aware of a vulnerability as of that date. We are making clients aware of relevant vulnerabilities as we become aware of them. "Affected Products and Versions" referenced in IBM Security Bulletins are intended to be only products and versions that are supported by IBM and have not passed their end-of-support or warranty date. Thus, failure to reference unsupported or extended-support products and versions in this Security Bulletin does not constitute a determination by IBM that they are unaffected by the vulnerability. Reference to one or more unsupported versions in this Security Bulletin shall not create an obligation for IBM to provide fixes for any unsupported or extended-support products or versions.

Document Location

Worldwide

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSWPVP","label":"IBM Security Key Lifecycle Manager"},"Component":"","Platform":[{"code":"PF016","label":"Linux"},{"code":"PF002","label":"AIX"},{"code":"PF033","label":"Windows"}],"Version":"3.0, 3.0.1, 4.0","Edition":"","Line of Business":{"code":"LOB24","label":"Security Software"}}]

Document Information

Modified date:
25 November 2020

UID

ibm16365305