Abstract
It was found that the nobody
user is owner of the run-result-reader.sh
script. This script is executed by the root
user's crontab. Due to this it is possible for any process running as nobody
to add commands to this script that will be executed with root
privileges. In combination with a code execution vulnerability in QRadar's web application, this can be used for attacker's to gain full control of the QRadar system.
See also
CVE-2020-4270 6189657 - IBM QRadar SIEM is vulnerable to privilege escalation (CVE-2020-4270)
Tested versions
This issue was successfully verified on QRadar Community Edition version 7.3.1.6 (7.3.1 Build 20180723171558).
Fix
IBM has released the following versions of QRader in which this issue has been resolved:
- QRadar / QRM / QVM / QNI 7.4.0 GA (SFS)
- QRadar / QRM / QVM / QRIF / QNI 7.3.3 Patch 3 (SFS)
- QRadar / QRM / QVM / QRIF / QNI 7.3.2 Patch 7 (SFS)
- QRadar Incident Forensics 7.4.0 (ISO)
- QRadar Incident Forensics 7.4.0 (SFS)
Introduction
QRadar is IBM's enterprise SIEM solution. A free version of QRadar is available that is known as QRadar Community Edition. This version is limited to 50 events per second and 5,000 network flows a minute, supports apps, but is based on a smaller footprint for non-enterprise use.
A local privilege escalation vulnerability was found in QRadar. This vulnerability is possible because the script located at /opt/qvm/iem/bin/run-result-reader.sh
is configured with weak file permissions. The owner of the script is set to the nobody
user, which is a low privileged system account use by various services - including QRadar's web application.
The script is also started by the root
user's crontab. This means that if an attacker manages to gain access to the QRadar system as the nobody
user, it would be possible to escalate privileges to root
. This is for example possible by exploiting a code execution vulnerability in QRadar's web application.
Details
The crontab of the root
user contains various entries to run commands on different moments. One of these entries will run the run-result-reader.sh
script every 20 minutes:
# crontab -l
[...]
# Update the Endpoint Manager Fixlet Action Results
*/20 * * * * /opt/qvm/iem/bin/run-result-reader.sh > /var/log/iem-cron.log 2>&1
This script is owned by the nobody
user, meaning that this user fully controls the script and thus fully controls which commands will be executed.
# ls -la /opt/qvm/iem/bin/run-result-reader.sh
-rwxr-xr-x 1 nobody nobody 2592 Sep 12 17:40 /opt/qvm/iem/bin/run-result-reader.sh
If the (modified) script is run from root
's crontab, the commands within the script will be executed with root
privileges. Due to this it is possible for the nobody
to exploit this issue to gain root
privileges and gain full control of the QRadar system.