While recently upgrading my laptop with a new Solid State Drive (SSD), I installed a management utility that is used for SanDisk SSDs. A quick examination revealed a some potentially dangerous vulnerabilities in it. Now that these issues have gone through our responsible disclosure program and have been patched, we can discuss the details.
I discovered the first vulnerability (CVE-2019-13466) when doing quick strings dump from the main application binary (SanDiskSSDDashboard.exe):
strings - SanDiskSSDDashboard.exe
...
-pS@nD!sk.1
...
I was curious where this string is used and started monitoring the processes (with Process Monitor) that are created by the application when various functions are used. The "Generate Report File" feature eventually resulted in the following process creation:
"C:/Program Files (x86)/SanDisk/SSD Dashboard/7za.exe" a -tzip "C:/SSD_Dashboard_Report.zip" "C:/Users/martin/Desktop/SSD_Dashboard_Report_msinfo.txt" "C:/SSD_Dashboard_Report_msinfo.txt" -pS@nD!sk.1
You can see here that the app uses a hard-coded password to protect customer report data which then supposed to be sent to SanDisk for examination. Needless to say, this "encryption" has no value. A better approach would be use public key instead of the password so only SanDisk having corresponding private key can decrypt the message. However according to the vendor advisory, they decided to get rid of the encryption altogether. Instead they recommend customers requiring support should manually share such reports with their Customer Support teams.
The second vulnerability (CVE-2019-13467) is more severe. Using a network capture running on the same computer as the app, it was clear that the application uses HTTP instead of HTTPS for communication with SanDisk site. This makes it trivial to attack users running this application in untrusted environments (e.g. using public internet hotspot). Specifically, a malicious user can create a rouge hotspot that the computer will join or launch a man-in-the-middle attack and then serve malicious content instead of the data requested by the app. One request it does is for available updates:
http://wddashboarddownloads.wdc.com/Dashboard/config/lista_updater.xml
The response looks like below:
<?xml version="1.0"?>
<lista xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Application_Installer>
<version>2.3.3.0</version>
<create_date>10/12/2018</create_date>
<url>SanDiskSSDDashboardSetup.exe</url>
</Application_Installer>
</lista>
If the version in the xml is greater than current app version, the app will download and run the executable specified in the url element. It would be incredibly easy to manipulate those values. In an attack scenario an unsuspecting user would be prompted to update the app but would end up running any arbitrary code or malware that the attacker wanted.
Sandisk addressed this issue by switching to HTTPS.
Users of the Western Digital and SanDisk SSD Dashboard are recommended to upgrade as soon as possible to at least version 2.5.1.0 in order address these issues. More information can be found on Western Digital’s website: https://www.westerndigital.com/support/productsecurity/wdc-19009-sandisk-and-western-digital-ssd-dashboard-vulnerabilities
Disclosure Timeline
04/12/2019 - Vulnerability disclosed to vendor
07/11/2019 - Patch released by vendor
07/31/2019 - Advisory published