TSU-06: Use of outdated or end-of-life components
TSU-06 focuses on security issues that arise from the use of outdated software components in Mendix applications. A Mendix application consists of multiple components, each with its own lifecycle and versions, and therefore needs to be maintained and tracked separately, such as:
- The Mendix runtime
- Imported Marketplace-modules
- Java dependencies used by backend modules
- JavaScript dependencies used by widgets and JavaScript actions
Consequences outdated or end-of-life components
When security updates for these components are not applied (on time), known vulnerabilities can be exploited automatically. The impact varies per vulnerability and can range from:
- The takeover of user sessions (for example, via cross-site scripting)
- The execution of code through vulnerable Java components
Best practices for securely managing and updating Mendix components
1. Insight into components & dependencies
-
Maintain an up-to-date Software Bill of Materials (SBOM) that provides an overview of all components used in your application. Mendix can provide an initial indication through the Software Composition Service.
-
Use additional scanning tools to detect dependencies that are not covered by the Mendix Software Composition Service, such as:
- embedded or minified JavaScript libraries
-
embedded or obfuscated Java JAR files
2. Stable and predictable runtime
3. Veilig omgaan met Marketplace-modules
- Do not modify Marketplace modules directly, to avoid issues during updates. Implement custom functionality in a separate module that works alongside the standard Marketplace module.
- Do the changes affect the access rules of a Marketplace module?
- Remove direct role assignments within the Marketplace module
- Move relevant security checks and interactions to separate (non-persistent) entities and microflows
Vulnerabilities within TSU-06
- Bypassing security controls due to outdated Marketplace modules with known vulnerabilities (for example, ForgotPassword, Encryption, SAML20)
- Bypassing XPath restrictions caused by a runtime version with known vulnerabilities (such as SSA-252808, SSA-148641)
- Privilege escalation due to a runtime version with known vulnerabilities (such as SSA-540640)
- Cross-site scripting (XSS) caused by outdated JavaScript libraries (such as CKEditor, jQuery)