Computerbeveiliging - Hoe je bad guys buiten de deur houdt

Verzending wachtwoorden

27-08-2014, 12:19 door ossynths, 4 reacties
Ik krijg een waarschuwing van 1Password dat bij inloggen mijn inloggegevens via http worden verstuur en niet via https. Een lange discussie met Nespresso gehad via de telefoon. Ze beweren dat alles veilig is. Kan er een andere manier zijn om het wachtwoord veilig te versturen terwijl ik toch http zie in de adresbalk? Het lijkt mij niet toch?
Reacties (4)
27-08-2014, 12:46 door wizzkizz
Ja, dat kan wel als er gebruik gemaakt wordt van een challenge-response mechanisme. Het idee daarachter is dat de server een nonce (eenmalige code) naar de client (browser) stuurt. In de client wordt het ingevoerde wachtwoord vervolgens samen met die nonce verwerkt tot een hash en die hash wordt naar de server gestuurd ter verificatie. Aangezien die nonce uniek is, gaat er nooit twee keer dezelfde hash over de lijn naar de server. En aangezien de hash in de client berekend wordt, verlaat het wachtwoord nooit de client.

Nu heb ik zelf ook een account bij nespresso en er is wel degelijk een beveiligde verbinding bij het inloggen (bij mij). Er wordt géén gebruik gemaakt van het bovengenoemde challenge-response systeem, gebruikersnaam en wachtwoord worden als gewoon POST verzoek (mime-type: application/x-www-form-urlencoded) naar de URL https://www.nespresso.com/nl/nl/j_spring_security_check verstuurd. Er wordt gebruik gemaak van de cypher "TLS_RSA_WITH_AES_256_CBC_SHA", wat een sterk algoritme is, maar zonder Perfect Forward Security.
27-08-2014, 13:00 door Erik van Straten
Als je http://www.nespresso.com/ opent en vervolgens rechtsbovenaan (rechts van het wachtwoord veld) op "OK" klikt, wordt een https verbinding met www.nespresso.com opgezet. Onder normale omstandigheden (geen actieve aanvaller) worden jouw gegevens versleuteld verzonden.

En toch is dit een securityblunder, om meerdere redenen:

1) Bij een MitM (Man-in-the-Middle) aanval kan die aanvaller iets aangepaste code naar jouw webbrowser sturen zodanig dat als jij op OK drukt, jij de gegevens via http (dus plain text) naar de aanvaller verzendt, en die aanvaller (naar keuze) de gegevens via https doorzet naar www.nespresso.com. Dit kan zonder dat jij hier iets van merkt. Overigens hoeft voor zo'n MitM aanval de aanvaller geen directe toegang tot de netwerkverbinding tussen jouw webbrowser en de bedoelde www.nespresso.com te hebben, door DNS aanvallen kan hij je ook naar zijn site sturen. Maar voor MitM aanvallen op WiFi netwerken zijn veel tools beschikbaar, en regelmatig wordt over lekken/backdoors in SOHO modem/routers gepubliceerd.

2) Vooraf heb jij niet kunnen vaststellen dat je daadwerkelijk verbinding hebt met de bedoelde wwww.nespresso.com; immers, jouw webbrowser heeft nog geen certificaat ontvangen en heeft dus nog niet kunnen controleren of de in de URL-balk getoonde www.nespresso.com overeenkomt met de "Common Name" in het certificaat.

Ik weet niet wat er gebeurt na inloggen (ik heb geen account). Blijft de verbinding dan https? Zo niet, dan kan een aanvaller hoogstwaarschijnlijk jouw sessie stelen, meestal door een session-cookie te kopiëren. Ik ga er even vanuit dat de sessie https blijft na inloggen:

3) Als jij niet regelmatig op die site inlogt onthoud jij waarschijnlijk niet dat de sessie https hoort te zijn na inloggen, en kan een MitM wellicht jouw creditcard nummer stelen.

Een site met inlogmogelijkheid hoort de inlogpagina via https aan te bieden om bovenstaande ellende te voorkomen, en gebruikers kunnen controleren dat ze op de juiste site zitten voordat ze hun gegevens invoeren. Echter, ik pleit er bij dit soort sites voor om die geheel via https aan te bieden, zodat gebruikers op het moment dat ze de site openen al kunnen controleren dat ze op de bedoelde site zitten en de verbinding versleuteld is. De reden hiervoor is dat mensen dit in een later stadium vaak vergeten te checken; ze zoeken een product, willen het aanschaffen, oh ja ik moet nog inloggen, zijn daar dan geconcentreerd mee bezig (zeker met een complex wachtwoord) en vergeten dan te controleren of de verbinding op dat moment wel geauthenticeerd en versleuteld is.

Een ander voordeel van volledig https is dat MitM's (en ISP's) geen misleidende informatie (of malware) in de bestaande verbinding kunnen injecteren.

Tip voor deze site: vul niets in en klik op OK. Dan kom je op een https inlogpagina.
27-08-2014, 14:55 door Anoniem
Wizzkizz, dankjewel, een geruststelling. Nespresso nam niet de moeite om uit te leggen dat ik op http toch veilig ben terwijl ik wel heb doorgevraagd. Helaas ben ik niet voldoende onderlegd om het laatste deel van je uitleg te begrijpen en dat maakt het toch ongemakkelijk.

Erik, dankjewel, ter aanvulling nog dit, na het verzenden van de inloggegevens wordt de verbinding wel https. Jouw punt 2 slaat voor mij de spijker op de kop. Bij inloggen kijk ik altijd naar het slotje en zie dus http. En bedankt voor de tip.

ossynths


Door Erik van Straten: Als je http://www.nespresso.com/ opent en vervolgens rechtsbovenaan (rechts van het wachtwoord veld) op "OK" klikt, wordt een https verbinding met www.nespresso.com opgezet. Onder normale omstandigheden (geen actieve aanvaller) worden jouw gegevens versleuteld verzonden.

En toch is dit een securityblunder, om meerdere redenen:

1) Bij een MitM (Man-in-the-Middle) aanval kan die aanvaller iets aangepaste code naar jouw webbrowser sturen zodanig dat als jij op OK drukt, jij de gegevens via http (dus plain text) naar de aanvaller verzendt, en die aanvaller (naar keuze) de gegevens via https doorzet naar www.nespresso.com. Dit kan zonder dat jij hier iets van merkt. Overigens hoeft voor zo'n MitM aanval de aanvaller geen directe toegang tot de netwerkverbinding tussen jouw webbrowser en de bedoelde www.nespresso.com te hebben, door DNS aanvallen kan hij je ook naar zijn site sturen. Maar voor MitM aanvallen op WiFi netwerken zijn veel tools beschikbaar, en regelmatig wordt over lekken/backdoors in SOHO modem/routers gepubliceerd.

2) Vooraf heb jij niet kunnen vaststellen dat je daadwerkelijk verbinding hebt met de bedoelde wwww.nespresso.com; immers, jouw webbrowser heeft nog geen certificaat ontvangen en heeft dus nog niet kunnen controleren of de in de URL-balk getoonde www.nespresso.com overeenkomt met de "Common Name" in het certificaat.

Ik weet niet wat er gebeurt na inloggen (ik heb geen account). Blijft de verbinding dan https? Zo niet, dan kan een aanvaller hoogstwaarschijnlijk jouw sessie stelen, meestal door een session-cookie te kopiëren. Ik ga er even vanuit dat de sessie https blijft na inloggen:

3) Als jij niet regelmatig op die site inlogt onthoud jij waarschijnlijk niet dat de sessie https hoort te zijn na inloggen, en kan een MitM wellicht jouw creditcard nummer stelen.

Een site met inlogmogelijkheid hoort de inlogpagina via https aan te bieden om bovenstaande ellende te voorkomen, en gebruikers kunnen controleren dat ze op de juiste site zitten voordat ze hun gegevens invoeren. Echter, ik pleit er bij dit soort sites voor om die geheel via https aan te bieden, zodat gebruikers op het moment dat ze de site openen al kunnen controleren dat ze op de bedoelde site zitten en de verbinding versleuteld is. De reden hiervoor is dat mensen dit in een later stadium vaak vergeten te checken; ze zoeken een product, willen het aanschaffen, oh ja ik moet nog inloggen, zijn daar dan geconcentreerd mee bezig (zeker met een complex wachtwoord) en vergeten dan te controleren of de verbinding op dat moment wel geauthenticeerd en versleuteld is.

Een ander voordeel van volledig https is dat MitM's (en ISP's) geen misleidende informatie (of malware) in de bestaande verbinding kunnen injecteren.

Tip voor deze site: vul niets in en klik op OK. Dan kom je op een https inlogpagina.
27-08-2014, 16:12 door wizzkizz
Door Erik van Straten:
[...]
2) Vooraf heb jij niet kunnen vaststellen dat je daadwerkelijk verbinding hebt met de bedoelde wwww.nespresso.com; immers, jouw webbrowser heeft nog geen certificaat ontvangen en heeft dus nog niet kunnen controleren of de in de URL-balk getoonde www.nespresso.com overeenkomt met de "Common Name" in het certificaat.

[...]

Een site met inlogmogelijkheid hoort de inlogpagina via https aan te bieden om bovenstaande ellende te voorkomen, en gebruikers kunnen controleren dat ze op de juiste site zitten voordat ze hun gegevens invoeren.
Hun gehele website is beschikbaar via HTTPS en na het inloggen blijf je standaard op de versleutelde verbinding zitten. Imho dus wel een goede implementatie. Overigens kun je ook via acceptgiro achteraf betalen of iDeal gebruiken, dus je betalingsgegevens lopen geen gevaar.

Had het dan helemaal niet beter gekund? jazeker!
- DNSSEC gebruiken
- Het TLS certificaat publiceren in DNS (DANE)
- De HTTP verbinding helemaal uitzetten en alles via HTTPS doen
- HSTS gebruiken om HTTPS te forceren

Maar wees eerlijk; dit zijn relatief nieuwe standaarden die ook door de meeste grote spelers nog niet gebruikt worden!
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.