The S-Unit

The S-Unit Top 10

TSU-08: Insecure custom java

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

  • Gebruik geen Java-code voor functionaliteit die ook kan worden gebouwd met een microflow of (REST-)integratie.

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

  • Wanneer Java-code data ophaalt uit het huidige request (zoals URL, HTTP-body of headers):
    • implementeer expliciete validatie en autorisatiecontroles om injectie-aanvallen of ongeautoriseerde datatoegang te voorkomen

4. Veilige XPath-queries

  • Wanneer Java-code data ophaalt via XPath:
    • zorg dat gebruikersinvoer geen invloed heeft op de structuur van de query
    • gebruik hiervoor Core.createXPathQuery met placeholders en setVariable

5. Veilige HTML-generatie

  • Vermijd het genereren van HTML via string-concatenatie.
    • moet Java-code HTML genereren, gebruik dan een template engine die automatisch variabelen en gebruikersinvoer encodeert

6. Verantwoord gebruik van third-party libraries

  • Als je Java-code third-party libraries gebruikt (bijvoorbeeld voor XML-parsing):
    • lees de documentatie van de library zorgvuldig
    • controleer welke security best practices en bekende valkuilen daarbij horen

Kwetsbaarheden binnen TSU-08

Dit zijn de meest voorkomende risico’s bij onveilige custom Java.

  • 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

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.