Skip to content

[Bug]: As a user, I do not have enough control over, nor do I always consent, to what is sent via MetaMetrics, Sentry, APIs, and RPCs #15576

Open
@tayvano

Description

@tayvano

Background

After the incident with Solana's Slope wallet a couple weeks ago combined with the escalation in US govt actions against decentralized protocols this week, it is increasingly important that we ensure MetaMask is able to serve the OGs in this community and especially those who need and/or value the censorship resistant aspects of Web3, even as our company and product evolves.

Obviously, given the sheer quantity and diversity of users we now serve, it is unreasonable to expect that we simply not use mature tools that allow us to make better product decisions and ship fixes faster.

Similarly, given our placement in the ecosystem and that we are a US-based company, it is unreasonable to expect that we ever refuse to comply with the law, especially when those laws regard matters of national security.

That said, we should all be well-aware of the reality that every one of our users is at increased risk of being targeted by sophisticated nation-state cyberattacks, just as we are already well-aware that our own team, as well any services we utilize to facilitate logging, storing, distributing, or communication, have already been and will continue to be the target of highly sophisticated and targeted nation-state cyberattacks. Therefore, there is no excuse for us to ever fall into the same shitty situation that Apple created for itself because our products should always be built, at every step of the way, knowing the environment in which we have always operated in.

One of our the most fundamental principles that guides our product is around consent. Our whole job is to ensure users can, and do, have full, informed control over the authority they manage from within MetaMask. These principles do not solely apply to how users interact with Web3 and dapps—they apply to every aspect of our being and therefore to every product choice we make.

We ensure users are able to consent. We ensure we limit the choices we make on users' behalf because we are not early-Phantom and we do not automatically approve the sending of shit to third-parties on behalf of our users. This is especially true when we are literally not able to allow people to consent at the time, e.g. things that we are legally required to do or provide. Therefore, in any cases where consent cannot be granted by the user at the time, we must ensure users provides informed consent up front.

Lastly, MetaMask expects, and even demands, that our legal teams keep us legally compliant and protect us from needing to understand and navigate laws and policy and to prevent us from being thrown in jail. That is their job and their expertise and they are the best at it—not our job. Similarly, it is not their job to protect our users. That is our job. That is what we are experts in and what we should be the best at.

Things to Fix

  1. We need to do a better job identifying risks and understanding the long-term implications and, in some cases, limitations our choices are forcing upon our current and future users. I propose we start by documenting (birds-eye view) what is sent to what party via what tool/service.
  2. Moving forward, it is the responsibility that any material changes to who/what/where and how to get sign-off from Security and from Legal before product and development work is started and again after the work is complete but before the changes are merged.
  3. We need to resolve any existing areas where our product does not give the user the proper ability to consent, opt-in, opt-out, or provide a custom endpoint in case the infrastructure being utilized fails on the whole or fails a specific user. Obviously, exactly what consent looks like will vary and it is the responsibility of Product to determine how things are implemented and on what timeline.

Specific areas of concern are

  1. Any RPC calls that include multiple user-addresses in a single call. Specifically, a user reached out today asking if all requests would be blocked by Infura across all their addresses if any one of their addresses somehow made it onto Infura's denylist. MetaMask is not responsible for Infura, or any other RPC provider's choices in this regard. However, we can and should ensure a more robust future for MetaMask users.
  2. Ability to turn off sentry and if sentry information is sent if the user has opted out of metametrics.
  3. No user addresses hit MetaMetrics ever.
  4. No user addresses hit Sentry.
  5. No secrets ever hit the network ever (in addition to never being saved on disk unencrypted)

Steps to reproduce

  1. Use MetaMask.
  2. Care about who can see your entire comprehensive transaction history across all accounts.
  3. Care about who controls what you can and can't do.
  4. Live in the US or live outside the US.

Additional context

MеtaMask has also added additional intrusive tracking. It's time to stop using it and move to another open-source wallet that doesn't track you.

https://twitter.com/bantg/status/1558408291969015812

I'm not sure it's possible to boot the official extension with metametrics off, then your metametrics id might not change, and some calls still override isOptIn forcing events to be sent. Also our good friend sentry is part of the package as well anyways.

https://twitter.com/elyx0/status/1558472169734250500

There's a few calls to analytics services before I even get the choice to opt out, but they seem to not be too big of a deal. Might be okay with it, maybe you can muff those until after the choice is made? Sentry keeps pinging after even if I opt out but the payloads are thin.

https://twitter.com/elyx0/status/1558494187347132416

Can we disable Sentry locally? I'd turn it on if I'm experiencing a bug so you can get stack traces, but I'd want to do that in a fresh account rather than having it always ready to report while I use a real account.

https://twitter.com/MikeSylphDapps/status/1558486499821223938

Does the default RPC Infura log IP addresses and wallets?
Are these used for analysis and could this information be used for blacklisting in the future? e.g one wallet under the same IP as another, where one has used tornado

https://twitter.com/LANCEROBJ/status/1558468222139129856

MetaMetrics is a slippery slope to a future where we send all our users addresses to a secret database and wholesale decide whether or not they are worthy of using our product in a non-transparent way, and potentially far beyond what the law requires us to do.

https://twitter.com/DeFi_Ted/status/1558507094185111552

E.g. if you use many addresses in Metamask - some can be associated with you while you want to keep others private? Your RPC provider will learn that all your addresses belong together - if you want to keep that private you need to use your own node!

https://twitter.com/koeppelmann/status/1490085719557165056

Since your RPC provider also sees your IP address, they can link it to your Ethereum address and thereby link ALL your Ethereum addresses, even the ones that you aren't using right now

https://twitter.com/SCBuergel/status/1484409273513922567

Accounts are actually not just linkable via your IP address
MM uses a getter contract to get all your token & ETH balances FROM ALL YOUR ADDRESS in one request 👀
No bad intent here, I guess just performance optimizations with privacy implications

https://twitter.com/SCBuergel/status/1484409278161170432

Are you using MetaMask? Well, I have bad news for you - your privacy is at risk!

https://twitter.com/alxlpsc/status/1484102749566476291

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    To be fixed

    Status

    To be triaged

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions