TSU-08: Insecure custom Java
TSU-08 gaat over beveiligingsproblemen die ontstaan door onveilig gebruik van custom Java-code in Mendix-applicaties. Mendix maakt het mogelijk om de standaardfunctionaliteit van het platform uit te breiden met Java-code. Dit kan onder andere door:
- het maken van extra Java actions die vanuit microflows worden aangeroepen
- het creëren van nieuwe URL-endpoints voor integraties met externe systemen
- het aanpassen van bestaande Mendix-functionaliteit, zoals het loginproces
Java-code vraagt om meer verantwoordelijkheid
Java-code draait op een lager technisch niveau dan de low-code onderdelen van Mendix, waardoor er meer verantwoordelijkheid ligt bij de developer om beveiligingsmaatregelen correct te implementeren. Denk hierbij aan:
- authenticatie
- autorisatie
- validatie en opschoning van invoer (sanitization)
Afhankelijk van wat de Java-code doet, kunnen fouten leiden tot:
- ongeautoriseerde lees- en schrijfrechten op data
- het omzeilen van authenticatiemechanismen
- in sommige gevallen zelfs directe toegang tot het besturingssysteem of het bestandssysteem
Best practices voor veilige custom Java in Mendix
Wanneer je custom Java-code toevoegt aan een Mendix-applicatie, is het belangrijk dat je zowel bekend bent met algemene webbeveiligingsproblemen (zoals de OWASP Top 10) als met hoe deze zich vertalen naar Mendix en de Mendix Core API.
De volgende best practices helpen daarbij:
1. Gebruik Java alleen waar het echt nodig is
2. Correct omgaan met context (User, System en Sudo)
- Als je een Java action implementeert die vanuit een geauthenticeerde context wordt gebruikt:
- vermijd het gebruik van een System context voor data- en microflow-interacties
- gebruik waar mogelijk de User context, zodat gebruikersrechten en toegangsregels correct worden toegepast
- Moet Java-code bevoorrechte acties uitvoeren namens een ingelogde gebruiker?
- gebruik dan een Sudo context, zodat acties nog steeds te herleiden zijn tot de huidige gebruiker
- Wanneer Java-code een Sudo- of System context gebruikt:
- implementeer expliciete authenticatie- en autorisatiecontroles om ongeautoriseerde toegang tot data of microflows te voorkomen
3. Veilige verwerking van request-data
- implementeer expliciete validatie en autorisatiecontroles om injectie-aanvallen of ongeautoriseerde datatoegang te voorkomen
4. Veilige XPath-queries
- zorg dat gebruikersinvoer geen invloed heeft op de structuur van de query
- gebruik hiervoor Core.createXPathQuery met placeholders en setVariable
5. Veilige HTML-generatie
- moet Java-code HTML genereren, gebruik dan een template engine die automatisch variabelen en gebruikersinvoer encodeert
6. Verantwoord gebruik van third-party libraries
- lees de documentatie van de library zorgvuldig
- controleer welke security best practices en bekende valkuilen daarbij horen
Kwetsbaarheden binnen TSU-08
- Ongeautoriseerde toegang tot data door ontbrekende authenticatie
- Ongeautoriseerde toegang tot data door ontbrekende autorisatie in System- of Sudo-context
- Ongeautoriseerde toegang tot data via XPath-injectie
- Authenticatie-omzeiling via XPath-injectie
- Cross-site scripting door onveilige HTML-generatie
- Cross-site scripting door ontbrekende output-encoding
- Toegang tot het bestandssysteem door onveilig gebruik van XML-parsers
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.