TSU-06: Use of outdated or end-of-life components
TSU-06 gaat over beveiligingsproblemen die ontstaan door het gebruik van verouderde softwarecomponenten in Mendix-applicaties. Een Mendix-applicatie bestaat uit verschillende onderdelen die elk hun eigen levenscyclus en versies hebben en dus ook apart bijgehouden moeten worden, zoals:
- de Mendix runtime
- geïmporteerde Marketplace-modules
- Java-afhankelijkheden die worden gebruikt door backend-modules
- JavaScript-afhankelijkheden die worden gebruikt door widgets en JavaScript actions
Gevolgen outdated of end-of-life components
Wanneer beveiligingsupdates voor deze componenten niet (op tijd) worden doorgevoerd, kunnen bekende kwetsbaarheden automatisch worden misbruikt. De impact hiervan verschilt per kwetsbaarheid en kan variëren van:
- het overnemen van gebruikerssessies (bijvoorbeeld via cross-site scripting)
- tot het uitvoeren van code via kwetsbare Java-componenten
Best practices voor het veilig beheren en updaten van Mendix-componenten
1. Inzicht in componenten & afhankelijkheden
Houd een actuele Software Bill of Materials (SBOM) bij met een overzicht van alle gebruikte componenten in je applicatie.
Mendix kan hiervoor een eerste indicatie geven via de Software Composition Service.Gebruik aanvullende scan-tools om afhankelijkheden te detecteren die niet door de Mendix Software Composition Service worden meegenomen, zoals:
ingesloten of geminificeerde JavaScript-libraries
ingesloten of geobfusceerde Java JAR-bestanden
2. Stabiele en voorspelbare runtime
3. Veilig omgaan met Marketplace-modules
Pas Marketplace-modules niet direct aan, om problemen bij updates te voorkomen.
Implementeer maatwerk in een aparte module dat samenwerkt met de standaard Marketplace-module.Hebben aanpassingen invloed op toegangsregels van een Marketplace-module?
verwijder directe roltoewijzingen binnen de Marketplace-module
verplaats relevante securitycontroles en interacties naar aparte (niet-persistente) entiteiten en microflows
Kwetsbaarheden binnen TSU-06
- Omzeiling van beveiliging door verouderde Marketplace-modules met bekende kwetsbaarheden (bijvoorbeeld in ForgotPassword, Encryption, SAML20)
- Omzeilen van XPath-beperkingen door een runtime-versie met bekende kwetsbaarheden (zoals SSA-252808, SSA-148641)
- Privilege-escalatie door een runtime-versie met bekende kwetsbaarheden (zoals SSA-540640)
- Cross-site scripting (XSS) door verouderde JavaScript-libraries (zoals CKEditor, jQuery)