TSU-07: Insecure custom authentication
TSU-07 gaat over beveiligingsproblemen die ontstaan door zelfgebouwde (maatwerk) authenticatie in Mendix-applicaties. Mendix biedt standaard authenticatie met gebruikersnaam/wachtwoord en sessies. In de praktijk is dit vaak niet voldoende. Applicaties hebben bijvoorbeeld extra vormen van authenticatie nodig, zoals:
- Single Sign-On (SSO)
- authenticatie via externe systemen zonder gebruikersnaam/wachtwoord
- extra beveiliging zoals multi-factor authenticatie (MFA)
Verkeerd ingerichte custom authenticatie? Dit zijn de gevolgen
Mendix biedt verschillende manieren om zulke custom authenticatie te implementeren, onder andere via:
- de “Custom”-optie bij gepubliceerde integraties
- het vervangen van de standaard LoginAction listener
- Java-code in custom request handlers
- extra authenticatielogica in microflows
Authenticatie is complex. Als deze maatwerk-authenticatie onjuist wordt geïmplementeerd, kan dit leiden tot ongeautoriseerde toegang tot de applicatie, integraties of request handlers. De veiligheid van een mechanisme (zoals JWT of SAML) hangt sterk af van:
- een correcte implementatie van het mechanisme en de gebruikte algoritmes
- juist gebruik van het mechanisme
- veilige configuratie en generatie van geheimen (secrets)
Hoe meer maatwerk er nodig is op deze punten, hoe groter de kans op fouten en dus op beveiligingslekken.
Best practices voor veilige custom authenticatie in Mendix
Bij het toevoegen van custom authenticatie aan een Mendix-applicatie is het belangrijk om maatwerk zoveel mogelijk te beperken. Waar maatwerk nodig is, moet je de best practices van het gebruikte mechanisme goed kennen en toepassen.
De volgende richtlijnen helpen daarbij:
1. Kies voor standaarden, niet voor eigen oplossingen
- Ontwerp geen eigen authenticatieprotocollen.
Gebruik bij voorkeur een gestandaardiseerd mechanisme dat goed onderzocht is en past bij de functionele en beveiligingseisen van je applicatie. - Bouw geen eigen implementaties van bestaande standaarden.
Gebruik bestaande, goed onderhouden en geteste oplossingen, bijvoorbeeld via een Marketplace-module of een standaard Java-library.
2. Correct aanpassen van het loginproces
- Bij het aanpassen van het loginproces:
- zorg dat alle authenticatiestappen zijn afgerond vóórdat er een gebruikerssessie wordt aangemaakt
- implementeer authenticatie zonder actieve Mendix-sessie of binnen een anonieme sessie
- voer authenticatie niet uit in een navigatie-microflow
- Zorg dat aangepast login-gedrag niet kan worden omzeild via de standaard Mendix-login.
Vervang hiervoor de standaard LoginAction listener door een versie die het gewenste gedrag afdwingt.
3. Veilig gebruik van claims-based authenticatie (JWT, SAML)
- valideer alle relevante claims, niet alleen de identiteit (zoals vervaldatum, issuer, audience, enz.)
- gebruik alleen claims voor gebruikerskoppeling die niet door de gebruiker zelf te wijzigen zijn
- zorg dat digitale handtekeningen altijd verplicht zijn, correct worden gevalideerd en dat fouten altijd leiden tot mislukte authenticatie
4. Bescherming tegen brute-force-aanvallen
- implementeer detectie en bescherming tegen brute-force, bijvoorbeeld tijdelijke accountblokkades
5. Veilig beheer van geheimen (secrets)
- gebruik cryptografisch sterke en voldoende lange sleutels
- gebruik geen door mensen bedachte geheimen
- zorg dat geheimen uniek zijn per omgeving (dev, test, acceptatie, productie)
Kwetsbaarheden binnen TSU-07
- Omzeilen van MFA doordat een sessie al actief is vóór MFA-validatie
- Omzeilen van MFA via de ingebouwde Mendix-authenticatie
- Ontbrekende brute-force-bescherming bij OTP-validatie
- Ontbrekende brute-force-bescherming bij maatwerk-wachtwoorden
- Authenticatie-bypass door ontbrekende validatie van digitale handtekeningen
- Authenticatie-bypass door ontbrekende bescherming tegen replay-aanvallen
- Authenticatie-bypass door ontbrekende claim-validatie
- Identiteitsvervalsing door gebruik van wijzigbare identity-claims
- Authenticatie-bypass door onveilige generatie van geheimen
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.