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.
This issue was successfully verified on QRadar Community Edition version 22.214.171.124 (7.3.1 Build 20180723171558).
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)
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.
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.