Article No° | Product Name | Affected Version(s) |
---|---|---|
TwinCAT XAR with default installation path | = 3.1 |
The default installation path and its permissions for the TwinCAT runtime allow a local user to replace or modify executables other users of the same system might execute. The issue does not apply for installations underneath C:\Program Files.
The default installation path of the TwinCAT XAR 3.1 software in all versions is underneath C:\TwinCAT. If the directory does not exist it and further subdirectories are created with permissions which allow every local user to modify the content. The default installation registers TcSysUI.exe for automatic execution upon log in of a user. If a less privileged user has a local account he or she can replace TcSysUI.exe. It will be executed automatically by another user during login. This is also true for users with administrative access. Consequently, a less privileged user can trick a higher privileged user into executing code he or she modified this way. By default Beckhoff’s IPCs are shipped with TwinCAT software installed this way and with just a single local user configured. Thus the vulnerability exists if further less privileged users have been added.
The default installation path of the TwinCAT software is underneath C:\TwinCAT. If the directory does not exist it and further subdirectories are created with permissions which allow every local user to modify the content. The default installation registers TcSysUI.exe for automatic execution upon log in of a user. If a less privileged user has a local account he or she can replace TcSysUI.exe. It will be executed automatically by another user during login. This is also true for users with administrative access. Consequently, a less privileged user can trick a higher privileged user into executing code he or she modified this way. By default Beckhoff’s IPCs are shipped with TwinCAT software installed this way and with just a single local user configured. Thus the vulnerability exists if further less privileged users have been added.
Mitigation
Please consider the solution described with the next section (title “Solution”) for new installations only and installations for which it is acceptable to reinstall TwinCAT.
For existing installations a script is provided for download at the following link:
https://download.beckhoff.com/download/Document/product-security/Advisories/advisory-2020-003/cve-2020-12510.zip
It changes the permissions of a directory of an already installed TwinCAT 3.1 installation. More precisely, it reads the current permissions of “C:\Program Files” and copies them to the directory “3.1\System” underneath the installation path of TwinCAT (default “C:\TwinCAT\3.1\System”).
The procedure to use that script is as follows:
There is no need to periodically run the script. Future updates of TwinCAT 3.1 will either not touch the permissions which are set by the script or apply more appropriate ones.
To apply the procedure to a set of IPCs you can prepare a USB stick with the content of the ZIP file “cve-2020- 12510.zip” (see download URL above). Then the procedure for each IPC is:
Solution
Please consider the mitigation described with the section above for existing installations for operation.
Please consider to choose “C:\Program Files\TwinCAT” during installation of TwinCAT 3.1. If you have installed it already then please uninstall and re-install it with the changed path. Please use the custom installation for this. That will automatically protect the binaries such that they can only be modified by an administrator.
Please mind that already installed projects underneath C:\TwinCAT need to be moved. It is recommended to perform a backup of the complete device before such action. For security reasons, please remove the former content of C:\TwinCAT at the end of this sequence. This will also prevent confusion.
Update A (25.11.2020): Split into Mitigation and Solution
Ayushman Dutta reported the issue to CERT@VDE