2

Microsoft Edge, as well as other Chromium browsers, have a password sync feature built into their browsers, which look something like the image below.

Before I enable this feature for convenience and being able to sync my passwords across my macOS, iOS, and Windows devices, I want to be sure that it's safe. In particular, I have the following question:

  • Could a bad actor hack the password database from the browser directly? Perhaps this might be harder on macOS than Windows?
  • Can I trust that Microsoft will not hold the decryption keys to my passwords?
  • Can I trust that there are no backdoors or security loopholes in this password storage? Companies like AgileBytes focus on data security—would a web browser have the same level of protection?

enter image description here

1 Answer 1

0

Could a bad actor hack the password database from the browser directly? Perhaps this might be harder on macOS than Windows?

Assuming they already have code execution on your machine, and either within your user account or as an Admin-level user, yes they could. Any process that can debug another process can see everything that the debugee process (which could be a browser) does, including reading credentials right out of memory. Furthermore, if the malicious code is running in your user account, it doesn't even need to start the browser; it could simply decrypt the stored credentials because the browser uses a per-user encryption key that other processes can also use. See https://learn.microsoft.com/en-us/deployedge/microsoft-edge-security-password-manager-security for more details. The differences between Windows and MacOS (and Linux) are fairly minor here; MacOS tries a little bit harder than Windows to prevent one app from accessing secrets stored by another app, but fundamentally this is possible in both cases.

Can I trust that Microsoft will not hold the decryption keys to my passwords?

I haven't found any good reason to believe that Microsoft uses end-to-end encryption at all, much less zero-trust e2ee, for the password sync. As such, no, you should not trust that Microsoft couldn't access synced passwords, unless you can find something that establishes the following requirements:

  • The passwords are encrypted client-side before syncing (this is probably true, but it's possible they're sent over HTTPS but otherwise in plain text).
  • The key used to encrypt the passwords is not synced, or is synced only in a "wrapped" form where it's encrypted with another key, and that "key-encrypting key" is not synced.
  • The process to derive this non-synced encryption key requires knowledge that Microsoft has no way of accessing (such as an additional password - NOT your machine login or Microsoft account credentials - that is used only for that purpose) and the key derivation happens entirely locally, in the client (this can actually be done with a login password, if that password is always strongly hashed before transmitting. Microsoft's NTLM and MS-CHAPv2 protocols do not use strong password hashing).

This is the necessary step that divides "zero trust" systems (such as most standalone password managers) from merely end-to-end encrypted ones where the middleman (Microsoft, in this case) doesn't store the decryption key but could re-derive it (e.g. when you log in to an online account using the password used to derive it, and the password is transmitted without strong client-side hashing).

If anybody has evidence that Microsoft's password sync uses zero-trust (or even e2ee at all), please add it as a comment or additional answer, and I'll update this section! It would usually come with warnings like "if you forget your master password, saved passwords and other data can never be recovered".

Can I trust that there are no backdoors or security loopholes in this password storage?

Mostly, depending on configuration. The local password storage is straightforward; credentials are encrypted using the per-user DPAPI key, which is protected using your login credentials. As long as your Windows login password is strong enough and the machine itself isn't totally compromised, this is quite secure; the key is unique per user, generated anew every time the user account is created or its password is reset, and not stored on the drive anywhere. Even an administrator can't directly force Windows to give up another user's DPAPI key; if the user isn't currently logged in, that key does not exist in a usable or recoverable form anywhere on the computer (though an admin could steal the key once you log in, with a little effort).

However, there are some caveats there. The biggest one is that, as mentioned above, the key is per-user, and every process running as you can use it. If there's malicious software running in your user account, it can access the encrypted passwords just like the browser, and ask Windows to decrypt them just like the browser, and then have full access to them. (Malware running as you could also just run the browser and steal them from within it.) Another is that in some cases, your DPAPI key might be backed up, either because you chose to or because an administrative policy requires this; in that case, the security can be no greater than whatever protections are on that backup. Large organizations sometimes back up such keys so that they can recover the user's data even if the user forgets their login password... or view the user's data in the event of a security incident. Finally, you need a strong Windows password! The Windows password hashing scheme is badly outdated and was never very strong; aside from some obfuscation that has been thoroughly analyzed and can be bypassed, and access control lists that prevent unprivileged software from gaining access but do nothing about privileged software or offline attacks, Windows account password hashing is effectively a single round of unsalted MD4. Extensive rainbow tables for this scheme are widely available (or a GPU can be employed to brute force the hash in very little time), for any password up to a certain strength. Thus, unless you have a very strong Windows password, an attacker with admin-level access to your OS, or offline access to the disk (assuming you didn't encrypt the full OS volume), can crack your password hash and recover the original password, at which point the attacker can derive the DPAPI key. In addition to using a very strong Windows password, you can also protect yourself by using disk encryption (and of course, not running any sketchy software outside of a tight sandbox).

Note that everything in this section relates only to the local, on-device password storage. Microsoft doesn't seem to have a lot to say, publicly, about their online password storage used to enable sync; I'm sure it's secure against casual inspection or tampering, but I doubt that it's impossible for them to gain access even if nothing short of three different corporate VPs or above working together could do it (and probably it's easier than that). Again, I'd love to have additional information about this; it seems likely they would publish it somewhere!

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .