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

Review the IBM security bulletin disclaimer and definitions regarding your responsibilities for assessing potential impact of security vulnerabilities to your environment.

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