Skip to content

fix: mustBeMetaMask should not detect brave as MetaMask - #87

Open
gomesalexandre wants to merge 1 commit into
MetaMask:mainfrom
gomesalexandre:main
Open

gomesalexandre wants to merge 1 commit into
MetaMask:mainfrom
gomesalexandre:main

Conversation

@gomesalexandre

@gomesalexandre gomesalexandre commented Sep 17, 2023 •

Copy link
Copy Markdown

Brave Wallet's window.ethereum sets isMetaMask to true, hence using the mustBeMetaMask option here will falsely detect Brave as MM, see:

https://github.com/brave/brave-core/blob/ae4c9dab752c588fc7b5921863f862777a19589d/components/brave_wallet/renderer/js_ethereum_provider.cc#L254-L256

This is a non-standard behavior of Brave as opposed to most MetaMask impersonators setting isMetaMask to false, hence requires explicit handling. Thankfully, a isBraveWallet property is also exposed (brave/brave-core#12794), which we can check for to guard against wrongly detecting Brave as MM.


Note

Low Risk
Narrow change to provider detection when mustBeMetaMask is true; default detection behavior is unchanged for non-Brave providers.

Overview
When mustBeMetaMask is enabled, detection no longer treats Brave Wallet as MetaMask. Brave’s injected provider sets isMetaMask: true, so the previous check could return Brave as a match; the resolver now also requires !ethereum.isBraveWallet.

The MetaMaskEthereumProvider type gains optional isBraveWallet, and a test asserts that mustBeMetaMask: true resolves to null when the mock provider has both flags set.

Reviewed by Cursor Bugbot for commit b990296. Bugbot is set up for automated code reviews on this repo. Configure here.

@gomesalexandre
gomesalexandre requested a review from a team as a code owner September 17, 2023 10:29
Brave's built-in wallet sets isMetaMask: true for compatibility, so
mustBeMetaMask: true false-positives on Brave. Guard on
!isBraveWallet too.

Rebased onto the current src/ layout (split into
detect-ethereum-provider.ts/metamask-ethereum-provider.ts since this
PR was opened).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants