The S-Unit

The S-Unit Top 10

TSU-09: Insecure UI components

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

  • Bij het 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

  • Vermijd het renderen van gebruikersinvoer als HTML. Moet dit toch? Gebruik dan een gespecialiseerde widget die ongewenste JavaScript-uitvoering voorkomt, zoals HTML- Element.

4. Veilige ontwikkeling van custom widgets en JavaScript actions

  • Ontwikkel je een custom widget of JavaScript action die HTML toevoegt of wijzigt? Bouw HTML niet via string-manipulatie. En gebruik geen onveilige methodes zoals document.write of innerHTML, maar gebruik in plaats daarvan de veilige HTML-mechanismen van de gebruikte JavaScript-library (Dojo/Dijit of React).
  •  

5. Veilig gebruik van Dojo/Dijit en React

  • Gebruik je Dojo/Dijit of React? Vermijd functionaliteit die willekeurige HTML toestaat, zoals dangerouslySetInnerHTML. En vermijd het dynamisch instellen van JavaScript-gerelateerde HTML-attributen, zoals href in a-tags en event-handlers.

Kwetsbaarheden binnen TSU-09

Dit zijn de meest voorkomende risico’s bij onveilige UI-componenten.

  • 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

Herkennen en vroegtijdig voorkomen van kwetsbaarheden in Mendix? Bekijk onze vernieuwde Mendix-securitytrainingen gebaseerd op            The S-Unit Top 10.

Integreer The S-Unit Top 10 in je CI/CD-pijplijn

Wil je weten hoe jouw Mendix applicatie scoort op The S-Unit Top 10?
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.