Ik kreeg vandaag een like op deze comment en daarnaast zie ik MindYourPass nog regelmatig voorbij komen op mijn LinkedIn. Sinds deze post hebben we LLM's gekregen en leek het mij leuk om eens een analyse te doen van hoe het nu werkt.
Disclaimers: ik zal vast niet alles begrijpen en dit is getest op basis van de cosumentenversie.
Consumenten kunnen een gratis versie gebruiken. Je kunt naar:
https://site.mindyourpass.io/nl/get-started om daar mee te beginnen. Bij de onboarding moet je een hoofdwachtwoord maken van 12 tekens (ps MindYourPass wordt gezien als goed wachtwoord) en krijg je een email met de recovery code, met daarin o.a. deze tekst:
Important notice!
In case you ever forget your master password of MindYourPass, you will need the code below to set up a new master password:
78babd18-89d4-46ab-8a61-45d1b3e39d71
Please keep this code in a safe place!
Persoonlijk zou ik een advies verwachten om deze code veilig op te bergen (op papier o.i.d.) en de mail daarna te verwijderen, en ook te verwijderen uit de prullenbak. Iemand die toegang krijgt tot je mailbox zou namelijk ook bij je wachtwoordmanager kunnen.
Je krijgt dan een video te zien met een uitleg waarbij je ook een eenvoudig te onthouden wachtwoord moet maken, naast je hoofdwachtwoord. Dat bleek in mijn geval niet nodig te zijn / niet te kunnen.
Voor de app op je telefoon moet je inloggen met je email adres en je hoofdwachtwoord. Daarna volgt een autorisatiecode per email en kun je inloggen. Voor consumenten is het niet mogelijk om MFA in te stellen (anders dan de email verificatiecode).
Je kunt daarna een record / site toevoegen aan MindYourPass. Daarna heb ik met AI de extensie geanalyseerd en de API calls om uit te vogelen hoe het nu werkt om een wachtwoord op te vragen:
- Je opent het record in MindYourPass en vult je (hoofd of eenvoudig te onthouden) wachtwoord in.
- Er wordt een call gedaan naar InputVector/GetWithSession om de user input vector voor deze sessie op te halen.
- Je wachtwoord (uit stap 1) wordt samen met een salt gehashed. De salt wordt serverside in de JWT (json web token) geplaatst en lokaar er uit gehaald.
- De hash uit stap 3 wordt samen met de Vector uit stap twee samengevoegd om een locale secret (mappedUserPassword) te maken.
- Er wordt een call gemaakt naar /Generate waarbij data terugkomt met een passwordVector en een adjustmentVector.
- Er wordt een call gemaakt naar /GetByUrl om de wachtwoord eisen voor de website op te halen (lengte, lowercasse, upercase etc)
- De mappedUserPassword, passwordVector, adjustmentfactor en de regels uit 6 worden gebruikt om vervolgens is drie stappen het wachtwoord te berekenen. Deze berekening is volledig clientside en in javascript.
Calls naar de API zijn beveiligd met een bearer token. Ik weet niet zeker wat er server side voor checks plaatsvinden (bv op IP Adres), maar normaal gesproken zou je als je de bearer token hebt calls kunnen maken naar de API.
Dat maakt dat een paar aanvalspaden mogelijk zijn:
- Toegang tot de mailbox van de gebruiker geeft volledige toegang tot de wachtwoord manager. Hier is niet omheen te werken, aangezien je geen andere vormen van MFA kan instellen voor de consumenten versie.
- Als je geen toegang hebt tot de email van een slachtoffer, dan is het wat complexer, maar m.i. niet onmogelijk:
- Je moet de token stelen, wat een vrij veel voorkomende aanval is. Het maakt wel dat je aanval mogelijk tijdelijk werkt vanwege de levensduur van de token.
- Je moet het (hoofd of eenvoudig te onthouden) wachtwoord hebben. Kan gephist worden, of mogelijk staat het op het dark web als een gebruiker wachtwoorden hergebruikt.
- Je moet de url hebben zoals die ingevoerd is in MindYourPass. Dat lijkt me in de basis realistisch.
- Je moet de logica voor het maken van wachtwoorden hebben, maar die is uit de browser extensie te halen.
Mogelijk wordt optie 2 lastig of onmogelijk gemaakt door maatregelen aan de server kant, maar daar is niets over bekend, anders dan deze zin in de FAQ:
Detectie verdacht gedrag. Voor elk wachtwoord dat MindYourPass genereert, vindt een interactie met onze servers plaats. Dit maakt het mogelijk om verdacht gedrag te detecteren en te blokkeren.
Aan de ene kant gaaf dat we een Nederlands bedrijf hebben dat iets nieuws op de markt brengt. Aan de andere kant maak ik me een beetje zorgen over de veiligheid van deze tool en dat het bij veel gemeentes wordt gebruikt.
Ik ben eigenlijk wel benieuwd of iemand het gebruikt. Zakelijk of de consumenten versie.