MetaMask / MetaMask/metamask-extension

Allow users to change password, maintaining accounts

Open
#7,661 2 comments 1 reaction 0 assignees View on GitHub
area-settings team-accounts-framework type-enhancement type-security ux-enhancement
Dominant language
TypeScript
Stars
13.2k
Forks
5.6k
Avg merge
2d 5h
Merged PRs (30d)
451

Description

**What problem are you trying to solve?**
Passwords sometimes need to be changed. Some people believe in the practice of regularly changing them either periodically or after any significant breach; some people learn about security and decide to increase the security of existing passwords or not reuse the same one in multiple places; sometimes people do reuse a password (or write it down) and find that it's been breached elsewhere; sometimes people discover keylogger infections.

Supposing a user is in one of their categories and wants to change their MetaMask password, which gives access to their blockchain accounts and all that those control. They might do an Internet search involving terms like "metamask" and "change password" and encounter [this issue](https://github.com/MetaMask/metamask-extension/issues/2168), which seems to be the only available documentation about how to change one's MetaMask password.

They either follow those instructions without reading all the comments underneath, and lose access to all their imported accounts, or read those comments and decide not to change their password. Or, just before changing their password, they go through each imported account, export the private key, and temporarily store it somewhere less secure; then re-import and re-name each one (and maybe lose history in the process).

In any case, we're making the costs of a password change a whole lot higher than it should be.

If MetaMask were a community-maintained kitten meme generator, the omission of a change password feature would be somewhat understandable. However, that's not what MetaMask is. It's software explicitly intended to marry privacy and security with usability, directed at an audience of users who are on average much more concerned about the management of authentication secrets than the average computer user. The absence of a simple password change feature seems to be a pretty glaring core omission!

Suppose you saw a traditional password manager that has a master password to unlock all the others, but no way to update that master password without manually re-entering all/most of the protected passwords and information about what they unlock. How would you review it? At least from me, it'd be a pretty bad review.

The philosophy behind blockchain technology also relies strongly on individuals to take appropriate steps to maintain private access to keys. When people protect keys behind a simpler password, the blockchain philosophy is relying on the users updating those passwords appropriately. That's part of being a good custodian.

**Describe the solution you'd like**
In Settings-> Security & Privacy, there is a setting that says "Change password." It has three text fields, labeled "Current password," "New password (min 8 chars)," [matching the text shown on first setup] and "Confirm new password," plus a confirm button below. All are password type, so typing into them doesn't show the value. On clicking the confirm button, the software checks that
- the "new password" and "confirm new password" field contain the same values
- that value meets any password requirements MetaMask has, which were shown to the user prior to new password creation (e.g. min 8 characters)
- the "current password" is correct

If any of these tests fail, the software helpfully informs the user. If they all pass, it changes the password so that next time the user logs in to MetaMask, only the new one works. **Nothing else changes** in the account list, transaction history, etc.

Contributor guide

Open the contributing guide

Research direction

Start at Settings -> Security & Privacy and compare the requested form with the existing password setup flow, including its stated minimum-length requirement. Trace how the current password protects the account list and transaction history, then verify that changing it preserves those data while accepting only the new password at the next login.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
authentication, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.