image

Vodafone bewaart wachtwoorden onversleuteld

vrijdag 29 juni 2012, 17:18 door Redactie, 16 reacties

Vodafone is een 'plain text offender' omdat het wachtwoorden van klanten onversleuteld opslaat. Het gaat om de MyVodafone klantendienst, waarin klanten hun abonnementen kunnen beheren en hun verbruik kunnen bijhouden. Een lezer van Tweakers.net die zijn wachtwoord vergeten was kreeg die tot zijn verbazing in plain text per sms toegestuurd.

Volgens Tweakers.net gebruikt een aanzienlijk deel van de klanten de dienst, waardoor honderdduizenden tot enkele miljoenen wachtwoorden onversleuteld opgeslagen zijn. De telecomaanbieder heeft inmiddels aangegeven dat het de wachtwoorden gaat versleutelen, iets wat al voor de ontdekking door de gebruiker gepland zou zijn.

Encryptie
Ondanks alle datalekken van de afgelopen jaren zijn er nog talloze websites die wachtwoorden onversleuteld of met een zeer zwakke encryptie opslaan. Internetgebruikers kunnen dit eenvoudig controleren door hun wachtwoord op te vragen.

Zodra het oorspronkelijke wachtwoord wordt teruggestuurd, gebruikt de website geen sterke encryptie. Er is zelfs een speciale website waar dit soort 'plain text offenders' aan de schandpaal worden genageld.

Reacties (16)
29-06-2012, 20:34 door Anoniem
"Er is zelfs een speciale website waar dit soort 'plain text offenders' aan de schandpaal worden genageld."

Zoals security.nl (:
29-06-2012, 21:11 door [Account Verwijderd]
[Verwijderd]
29-06-2012, 21:30 door [Account Verwijderd]
[Verwijderd]
29-06-2012, 21:31 door [Account Verwijderd]
[Verwijderd]
29-06-2012, 21:51 door Anoniem
Het trieste is dat het door een denkfout van de gebruiker kwam dat er pas navraag werd gedaan.

De gebruiker wist zijn wachtwoord niet meer en bij een reset kreeg hij een nieuw wachtwoord per email. Van daar uit gaat hij er meteen vanuit dat de wachtwoorden dus in plain text worden opgeslagen. Maar dat is een foute redenatie, tal van systemen genereren een nieuw wachtwoord, sturen dit door per mail en slaan een salted hashwaarde uiteindelijk op in de database. Ik heb maar weinig reacties gezien die hieraan denken, het grootste deel wil graag meegaan in de gedachte van de TS. Je krijgt je wachtwoord in plain text dus moet die zogenaamd wel in plain text worden opgeslagen.
30-06-2012, 10:35 door Anoniem
Dat een wachtwoord onversleuteld verstuurd wordt betekent niet dat deze onversleuteld opgeslagen wordt. Ze worden niet gehashed, maar kunnen wel een reversible encryption gebruiken... En het versturen van wachtwoorden per sms of mail is heel normaal. Allemaal niet geweldig, maar geen bewijs voor unencrypted opslag dus. Slecht onderzoek, sensatiezucht etc..
30-06-2012, 11:23 door SPlid
Beste Bergen, het maakt volgens mij niet zoveel uit waar de pw's onversleuteld staan opgeslagen, tijdens een registratie of anders.
In het geval van Vodafone is dit trouwens een academische discussie daar deze niet ontkennen dat ze pw's on-gehashed opslaan. In het artikel wordt trouwens ook gesproken over encryptie, maar volgens mij worden de pw's gezouten of gepeperd gehashed (meestal) , hashing is geen encryptie .....

Van de KPN heb ik bij de laatste rel trouwens ook mijn nieuwe pw in een briefje zonder enige vorm van beveiliging opgestuud gekregen (tegen het licht houden van de envelope zou het pw zichtbaar maken) ....


Allerlei bedrijven gaan erg onvoorzichtig om met passwoorden, wat ik raar vind daar wij klanten hun belangrijkste assets zijn (zonder klanten => failliet) maar schijnbaar stop er niemand op na dat soort onthullingen, dus het lijkt erop dat het niemand wat uitmaakt .
01-07-2012, 02:23 door Anoniem
Door Bergen: Ik val bijna van mijn stoel. Zoiets kan toch niet meer in het jaar 2012? Degene die de securityreview van die software heeft gedaan (en goedgekeurd!) zou mijns inziens per direct vervangen moeten worden door iemand die wél capabel is. En dan niet iemand die het denkt te fixen door de wachtwoorden unsalted te encrypten.

Waarom vind je dat eigenlijk zo belangrijk ?
Als je kijkt naar de oogst van wel-gehashde password dumps op pastebin et.al , kun je dan oprecht zeggen dat je met een salted hash geen probleem hebt ?

De oogst van een password cracker op een behoorlijk grote dump van userpasswords is vele tientallen procenten minimaal.
Qua impact, zowel publicitair als qua te nemen maatregelen / recovery moet je gewoon bij lekken van een dump van hashes of plaintext hetzelfde handelen.

En zijn er hier echt mensen die een password hebben wat zo goed is dat ze zeggen "geen probleem" als een salted hash publiek geworden is ?


Dus... nu maar wachten op iemand die zich toegang weet te verschaffen tot de servers en de gebruikersnamen, plaintext wachtwoorden en telefoonnummers van alle klanten op pastebin dumpt. Als dezelfde persoon die ooit de plaintext storage van passwords heeft goedgekeurd, ook het server security ontwerp heeft goedgekeurd, is de boel misschien zo lek als een mandje. Eens kijken hoe lang het duurt.... ;)

Van Tweakers.net: "Vodafone bezweert dat niemand behalve de klant het wachtwoord kan zien." Haha, ja dat dachten ze bij Twitter, LinkedIn, gemeente Zeewolde, Verenigde Naties etc etc ook. Ok, ze waren (meestal?) misschien versleuteld, maar nog steeds dmv een hack verkregen. Als iemand dat truucje bij Vodafone uitvoert, staan de wachtwoorden straks ONVERSLEUTELD op pastebin.

Nogmaals, gegeven de impact en succesrate bij een break die hashed passwords oplevert, kun je werkelijk zeggen dat onversleuteld nog zoveel erger is ?
Je kunt een klein beetje schuld naar de gebruiker schuiven die dan maar een password met 160 bits entropie had moeten kiezen, maar feitelijk moet je respons ook bij lekkage van gehashde passwords al hetzelfde zijn als bij plaintext.

Ik zou niet eens uitsluiten dat er ergens een technische noodzaak was waardoor hashes opslaan geen optie is.
(CHAP authenticatie is een voorbeeld, er zullen wel meer van dat soort shared secret systemen bestaan)



Hopelijk leest met mee bij Vodafone en wordt dit prioriteit-1-security-issue direct geëscaleerd en opgelost. Binnen een week moet dat toch zeker lukken.

Haha, hoewel ik het vodafone systeem niet kan, ik denk dat je verlies maakt als je op die basis (en dus fixed price) offreert.
01-07-2012, 12:56 door [Account Verwijderd]
[Verwijderd]
01-07-2012, 20:03 door Anoniem
Door Bergen:
Door Anoniem:
Waarom vind je dat eigenlijk zo belangrijk ?
1 woord: rainbowtables

Huh ? Je vindt gehashde passwords zo belangrijk omdat er rainbowtables bestaan ?
Kom op, rainbowtables laten zien dat de gebruikelijke hash methoden niet zo veel bescherming beiden voor het overgrote deel van de user passwords.
Als je bedoelt dat rainbowtables de reden zijn waarom je salts wilt gebruiken, inderdaad.

Als je kijkt naar de oogst van wel-gehashde password dumps op pastebin et.al , kun je dan oprecht zeggen dat je met een salted hash geen probleem hebt ?
Ja (mits de salt niet uit maar 5 karakters ofzo bestaat natuurlijk :-P)

Nee, dat kun je niet.
Je HOEFT het niet met rainbowtables te doen. Rainbowtables zijn een efficiente lookup van precomputed passwords voor hashes zonder,of met een kleine salt.

Je kunt gewoon met een dictionary van een paar duizend woorden elke hash individueel proberen, en nog steeds heel hoge percentages eruit halen.

Je wilt misschien zeggen dat een mega security geek met een password van 25 random karakters dan geen probleem heeft.
Maar ga jij als security officer van een bedrijf waarvan 100K usernames + password hash + 10 karakter salt lekken dan zeggen " niks aan de hand, want de hash en de salt is goed ? "

En wat leg je uit als daar de eerste duizenden passwords uitrollen (de abcdef, de qwerty1234, de LinkedIn1 's ? )

"Eigen schuld van de gebruiker, niet ons probleem ? "

[knip sample van enkele hash met salt die misschien wel een goed gekozen password bevat.]

[knip gebruikers hebben vaak hetzelfde password op diverse sites. Ja duh]


De reden dat een aantal wachtwoorden zijn ontsleuteld bij sommige leaks, is dat de hashes unsalted waren. Dat is alles.

Je kunt salten wat je wilt, maar Linkedin1 en MyLinkedInPW, password1 etc etc vallen er echt wel uit. En van dat kaliber zijn er zoveel dat je niet anders kunt dan reageren alsof het volledige bestand gecompromitteerd is.

Fijn voor de paar paranoide security freaks dat hun 100+ bit entropie password inderdaad wel veilig blijft bij een goede hash en salt, maar daar kun je je response (of je security policy) niet op baseren.


Er zijn maar 2 ingrediënten nodig voor een goede bescherming: een goede versleuteling en een goede salt. De wachtwoorden bij de meeste leaks bleken simpele unsalted MD5 hashes te zijn. Dat was vroeger een beetje veiliger, toen pc's nog niet snel genoeg waren voor een brute force attack en er nog geen distributed cracking oplossingen waren, maar nu heb je niets meer aan unsalted MD5 hashes. Dan kun je ze net zo goed plaintext opslaan. :-P En dan heb je ook nog van die websites waar je wachtwoord "maximaal 8 karakters lang" mag zijn.... hahahahahahaha

Ik weet niet over welke vroeger je praat, maar Crack in de jaren 90 haalde er tientallen procenten op typische password files. Zonder rainbowtables, en met bestanden waarbij de salt in verhouding tot het aantal accounts vrij groot was.
Het aantal karakters wat binnen brute force bereik ligt is een klein beetje groter geworden (twee of drie letters meer denk ik), maar het grote aantal wat je kunt oogsten komt uit wat gebruikers kiezen.

Ik zou niet eens uitsluiten dat er ergens een technische noodzaak was waardoor hashes opslaan geen optie is.
(CHAP authenticatie is een voorbeeld, er zullen wel meer van dat soort shared secret systemen bestaan)
CHAP moet je dan ook niet met user passwords doen maar met een andere shared secret.

Ja lekker, moet je mensen nog meer passwords door de strot duwen. Waar ik overigens eerder aan denk zijn intern verschillende authenticatie/trust domeinen waarbij misschien een CHAP-achtige methode gebruikt wordt zodat, o de ironie, het password niet ongecrypt tussen de systemen uitgewisseld wordt...

[knip over financieel ] . Ik bedoelde dat als de systemen ingewikkeld genoeg samengegroeid zijn je dat gewoon in een week niet opgelost krijgt, zelfs niet met een zeer ruim project budget.

Ik wil wel zeggen dat hashes + salt *beter* zijn dan plaintext, maar ik bestrijd dat ze de bij een compromise van de username/hash database je de mogelijkheid geven om anders te reageren dan bij een plaintext password lek.
02-07-2012, 10:23 door Anoniem
Door Bergen:
$2a$15$LinusTorvaldsForTheWieDN.QsMJjixx5E5THchvTMBTryGdEg76

Je mag zelfs de code erbij hebben waarmee de hash is gemaakt:

$password = .....
$salt = 'LinusTorvaldsForTheWin';
$hash = crypt($password, '$2a$15$'.$salt);

Succes met decrypten!
't Feit dat deze hash amper te brute-forcen is, komt meer doordat 't gebruikte algoritme 'n hoge cost heeft voor de key-schedule, waardoor je op 'n beetje standaard hardware maar 'n paar pogingen per seconde kan doen...

Vergelijk dat met een aantal miljoenen pogingen per seconde voor gesalte MD5-hashes, en je hele salt helpt helemaal niets (als deze bekend is)... Ok, rainbowtabels werken niet meer, maar that's it...
02-07-2012, 13:39 door Anoniem
Door Anoniem:
Door Bergen:
$2a$15$LinusTorvaldsForTheWieDN.QsMJjixx5E5THchvTMBTryGdEg76

Je mag zelfs de code erbij hebben waarmee de hash is gemaakt:

$password = .....
$salt = 'LinusTorvaldsForTheWin';
$hash = crypt($password, '$2a$15$'.$salt);

Succes met decrypten!
't Feit dat deze hash amper te brute-forcen is, komt meer doordat 't gebruikte algoritme 'n hoge cost heeft voor de key-schedule, waardoor je op 'n beetje standaard hardware maar 'n paar pogingen per seconde kan doen...

Vergelijk dat met een aantal miljoenen pogingen per seconde voor gesalte MD5-hashes, en je hele salt helpt helemaal niets (als deze bekend is)... Ok, rainbowtabels werken niet meer, maar that's it...

Dat is leuk op je eigen systeem, of op een server met alleen een handvol admin accounts, maar als authenticatie backend voor een LinkedIn, of een MyVodafone, of een andere publieke service met een behoorlijk aantal (echte) login pogingen per seconde kun je toch geen hash gebruiken die op een high end systeem nauwelijks een login per seconde kan verwerken ?
02-07-2012, 16:34 door [Account Verwijderd]
[Verwijderd]
02-07-2012, 17:11 door [Account Verwijderd]
[Verwijderd]
02-07-2012, 22:57 door Anoniem
Door Bergen:
Door Anoniem: Dat is leuk op je eigen systeem, of op een server met alleen een handvol admin accounts, maar als authenticatie backend voor een LinkedIn, of een MyVodafone, of een andere publieke service met een behoorlijk aantal (echte) login pogingen per seconde kun je toch geen hash gebruiken die op een high end systeem nauwelijks een login per seconde kan verwerken ?
Dat ligt niet aan de hash maar aan het aantal iteraties wat je erop uitvoert. In mijn voorbeeld...

$hash = crypt($password, '$2a$15$'.$salt);

...is de "15" het aantal iteraties. Met minder iteraties gaat het veel sneller.

Lees "api call met parameters naar hash functie " waar ik eerst "hash..." schreef.
Maar het probleem blijft : Een authenticatie stap die zodanig zwaar is dat bij verlies van de gehashde passwords dictionary- en brute force aanvallen serieus gehinderd worden , is te zwaar om bruikbaar te zijn voor een systeem waarbij het authenticatie backend een hoog volume van logins moet valideren.

Ik probeer hier de stuurlui aan de wal een beetje te challengen, dat de afwegingen die de stuurman van een MS Vodafone moet maken anders liggen die bij kapitein opblaasboot.
03-07-2012, 00:01 door Anoniem
Door Bergen:
Door Anoniem:
Maar ga jij als security officer van een bedrijf waarvan 100K usernames + password hash + 10 karakter salt lekken dan zeggen " niks aan de hand, want de hash en de salt is goed ? "
Nee, want 10 karakters is veel te weinig voor een salt.

Eh ? Met een salt van 10 karakters heb je al 2^(10*6) verschillende uitkomsten mogelijk voor eenzelfde input.
(Uitgaande nog maar van printable tekens, dus 64 mogelijkheden = 6 bits).
Je rainbow table wordt 2^60 x zo groot en jij noemt dat veel te weinig ?

Ik wil weten waar jij je storage haalt !

(Ik schreef en bedoelde -salt- , niet maximale password lengte )


Je kunt salten wat je wilt, maar Linkedin1 en MyLinkedInPW, password1 etc etc vallen er echt wel uit. En van dat kaliber zijn er zoveel dat je niet anders kunt dan reageren alsof het volledige bestand gecompromitteerd is.
Niet als de wachtwoorden salted zijn, want zelfs met een kleine salt van bijvoorbeeld 5 karakters (zoals "a,8!c") is een wachtwoord als 'Linkedin1' al te lang/ingewikkeld om te achterhalen met brute force technieken, rainbow tables of dictionary attacks. "Linkedin1a,8!c" (14 karakters) vind je nooit met de huidige technieken.

Dat is niet hoe een salt werkt. Je schrijft alsof het salt geheim kan blijven en dus een verlenging van het password geeft.
Een salt is gewoon bekend in/bij de password hash functie (en dus bij de hacker die de hash-file te pakken krijgt), want die moet in staat zijn het user password te vergelijken met de opgeslagen hash+salt resultaat.
Het doel van het salt is dat als 10 mensen allemaal "password" als password nemen, er toch 10 verschillende hash resultaten in de file staan, waarvan niet te zien is dat ze hetzelfde password hebben.
En waarbij een precomputed rainbow table tig keer zo groot wordt, omdat elk password dus evenveel keren voorkomt als de salt groot is.


Ik wil niet al te hard in de ouwe lullen stand, maar je zou echt naar Crack en Jack the Ripper moeten kijken, en de papers die proefondervindelijke resultaten ervan beschrijven, met welke toegevoegde rule of woordenlijst en weer een paar procent extra accounts uit rolde.
Nogal veel mensen halen hun password uit een feitelijk erg beperkte zoekruimte.

Bij password crackers gaat het bij de dictionary niet (letterlijk) om de Van Dale, maar om woorden, en de 'normale' permutaties die mensen typisch gebruiken als password.
qwerty, asdf, variaties op de username, 1=l, e=3, a=@ , Klingon, staan niet in de Van Dale, maar wel in de dictionary en de permutatie rules op de basis woorden lijsten.

Dan is LinkedIn1, LinkedinPW1, L1nked1n,L1nk3d1n echt niet buiten bereik.
De mensen zijn gewoon niet zo veel veranderd.


Ja lekker, moet je mensen nog meer passwords door de strot duwen.
Shared secrets tussen systemen bedoel ik natuurlijk, niet tussen een mensen en systemen.

Ok, maar uiteindelijk moet je op een end-to-end pad uitkomen tussen user password en authenticatie back end.
Als je tot aan de end-user toe een challenge-response geeft (en dus de hashing door javascript bij de enduser laat uitvoeren) gaat er nooit een plaintext password over de verbinding tussen user en ook niet over alle tussenliggende systemen.

Het nadeel is dat ergens aan de serverzijde een plaintext van het password beschikbaar moet zijn ...


Ik wil wel zeggen dat hashes + salt *beter* zijn dan plaintext, maar ik bestrijd dat ze de bij een compromise van de username/hash database je de mogelijkheid geven om anders te reageren dan bij een plaintext password lek.
Uiteraard, om klanten gerust te stellen, inclusief advies om wachtwoorden te veranderen, etcetera. Ook al weet je dat het technisch met de huidige stand van zaken onmogelijk is om bepaalde wachtwoorden te kraken (zoals mijn eigen hash die ik hierboven postte), dan nog is het een goed idee om jezelf in te dekken en iedereen het wachtwoord te laten veranderen enzo. Dus je hebt gelijk, netto moet je precies hetzelfde reageren.

Ik ben geen enorme fan van de boeken van WF Hermans, maar hij kon sommige titels goed kiezen ;-)
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.