Als het gaat over het bouwen van veilige mobiele applicaties, dan worden in de gebruikssessies de meeste fouten gemaakt. Op zich is een foutje niet erg, maar als het er meer worden, dan kan de applicatie als geheel behoorlijk risicovol worden. Bijna geen enkele van de apps die ik dagelijks tegenkom is foutloos te noemen.
Dit is een checklist gebaseerd op de meest gemaakte fouten door developers en securityprofessionals. Zij kunnen deze lijst gebruiken om session management zo veilig mogelijk te laten verlopen.
1. Vertrouw nooit de client
De server moet ieder verzoek van de applicatie wantrouwen en beschouwen als mogelijke aanval. Zorg ervoor dat de server de authenticiteit van elk request nagaat.
2. Maak encryptie vereist
Om te voorkomen dat hackers de draadloze communicatie van en naar een apparaat kunnen afluisteren, moet je SSL gebruiken om verkeer te versleutelen en gebruikmaken van een verifieerbaar mobiel certificaat.
3. Laat sessies verlopen
Developers stellen mobiele applicatiesessies vaak in staat enorm lang actief te laten blijven zodat gebruikers niet opnieuw in hoeven te loggen. Maar zo lang als de sessie actief is, kunnen aanvallers malafide verzoeken naar de server sturen. Developers ruilen daarmee security in voor een gebruiksgemak en dat is vaak onnodig.
4. Maak gebruik van geheimen
Een gedeeld geheim dat alleen bekend is bij de client en de server, en dat door de client gebruikt wordt om verzoeken te ondertekenen, voorkomt dat de server verzoeken accepteert die gemanipuleerd zijn.
5. Beperk de termijn waarin een verzoek geldig is
Hoe langer een request geldig is, hoe groter de kans dat een aanvaller deze kan onderscheppen en aanpassen. Alle requests moeten een tijdstempel toegebracht krijgen aan de clientkant en verlopen na verloop van tijd.
6. Sta geen herhaalverzoeken toe
Aanvallers kunnen onderschepte requests opnieuw toezenden. Het resultaat kan uiteenlopen van irritant (een tweet die opnieuw geplaatst wordt) tot rampzalig (een overboeking die meerdere malen plaatsvindt). Developers kunnen herhaalverzoeken voorkomen door NONCE (number used once) toe te passen, waardoor iedere request een willekeurig cijfer toegekend krijgt. De server houdt deze cijfers bij en controleert deze, waardoor ze niet opnieuw worden uitgevoerd. Als het meermalen NONCE tegenkomt, dan weet de server dat het verzoek ongeldig is. De lijst NONCE’s op de server kan beperkt worden door gebruik te maken van een tijdstempel.
7. Sta geen aangepaste verzoeken toe
In plaats van een verzoek te herhalen, kan een hacker er ook voor kiezen deze aan te passen. Zo kan het gebeuren dat een aanvaller een geldoverdracht naar een ander account laat plaatsvinden. Dit kun je voorkomen door een gedeeld geheim te gebruiken of een cryptografisch sleutelpaar. Door een HMAC van een request aan te maken en deze samen met het verzoek naar de server te sturen, stel je de server in staat te bevestigen dat het verzoek niet is aangepast.
Dan Kuykendall is co-CEO en CTO bij NT OBJECTives, een bedrijf gespecialiseerd in het testen van mobiele applicaties en applicatiebeveiliging.
Geen opmerkingen:
Een reactie posten