TSU-09: Insecure UI components
TSU-09 gaat over beveiligingsproblemen in Mendix-componenten die in de (mobiele) browser van de gebruiker worden weergegeven of uitgevoerd. Mendix gebruikt verschillende soorten UI-componenten die in de browser draaien en daardoor gevoelige of kwaadaardige data kunnen blootstellen. Dit gaat onder andere om:
- Pagina’s en snippets
- Nanoflows
- JavaScript-widgets
- JavaScript actions
- Constants waarvan Expose to Client op Yes staat
UI-componenten in Mendix; leesvoer voor aanvallers
Het Mendix-platform beperkt de toegang tot pagina’s niet technisch, maar regelt alleen de zichtbaarheid. Dat betekent dat alle pagina’s en UI-componenten voor aanvallers leesbaar zijn, ook als ze niet zichtbaar zijn voor normale gebruikers.
Hierdoor kunnen bijvoorbeeld:
- interne informatie of procedures zichtbaar worden op adminpagina’s
- hard-gecodeerde API-sleutels of secrets uitlekken via nanoflows
Standaard Mendix-widgets beschermen automatisch tegen het injecteren van HTML of JavaScript via gebruikersinvoer.
Deze bescherming geldt niet automatisch voor:
- third-party widgets
- custom JavaScript
- widgets of code die expliciet HTML renderen
Dit kan leiden tot Cross-Site Scripting (XSS) en het overnemen van gebruikerssessies.
Best practices voor veilige UI-componenten
Zorg er bij het ontwerpen van pagina’s, nanoflows en andere UI-componenten voor dat geen gevoelige informatie hard-coded is. Gebruik je Marketplace- of custom UI-componenten om gebruikersdata te tonen, dan moeten deze HTML- en JavaScript-injectie actief voorkomen.
Volg deze best practices:
1. Veilig opslaan van gevoelige informatie
- Moet gevoelige informatie beschikbaar zijn voor specifieke gebruikers of pagina’s/nanoflows? Sla deze data op in een persistente entiteit met strikte toegangsregels.
- Is gevoelige informatie alleen nodig in backend-componenten (zoals microflows)? Gebruik een Mendix-constant met Expose to client = No of sla de data op in een persistente entiteit zonder toegangsregels.
- Is gevoelige data nodig in een nanoflow, maar mag deze niet zichtbaar zijn voor gebruikers? Zet de nanoflow (of het relevante deel) om naar een microflow.
2. Veilig gebruik van Marketplace-widgets
- controleer of de widget actief wordt onderhouden
- controleer of de widget security-tests heeft ondergaan
3. Voorkomen van HTML- en JavaScript-injectie
4. Veilige ontwikkeling van custom widgets en JavaScript actions
5. Veilig gebruik van Dojo/Dijit en React
Kwetsbaarheden binnen TSU-09
- Blootstelling van inloggegevens als statische waardes op adminpagina’s
- Blootstelling van inloggegevens als hard-coded waardes in nanoflows
- Blootstelling van geheime sleutels als hard-coded waardes in nanoflows
- Cross-Site Scripting door het renderen van wijzigbare gebruikersattributen
- Cross-Site Scripting door dynamische HTML-opbouw
- Cross-Site Scripting door ontbrekende validatie van gebruikers-URL’s
- Blootstelling van applicatie-secrets via client-exposed constants
Train je Mendix security skills
Integreer The S-Unit Top 10 in je CI/CD-pijplijn
In samenwerking met Omnext hebben we een Mendix-specifieke SAST-oplossing gemaakt die continu en automatisch scant op kwetsbaarheden. Door de integratie van de The S-Unit Top 10 in de CI/CD-pijplijn worden risico’s vroegtijdig opgespoord en direct inzichtelijk gemaakt. Lees meer over onze samenwerking met Omnext en de Mendix specifieke SAST-module.