chore: bump @metamask/phishing-controller to 17.3.1 - #34158
Conversation
|
CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes. |
PR template — items to address before "Ready for review"Warnings — informational, address before merging:
See docs/readme/ready-for-review.md for the full Definition of Ready for Review. |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
Warning MetaMask internal reviewing guidelines:
|
Picks up the address-poisoning fix from MetaMask/core#9699, so known recipients use the token recipient decoded from calldata rather than the token contract address for confirmed ERC-20/721/1155 transfers. `@metamask/transaction-controller` moves 69.3.0 -> 69.4.0 because phishing-controller 17.3.1 requires ^69.4.0 for the `getEffectiveRecipient` export. The exact `resolutions` pin has to move too, otherwise it collapses phishing-controller back onto 69.3.0, where that export does not exist.
742d8fa to
50cde74
Compare
…ler-17.3.1 # Conflicts: # package.json # yarn.lock
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection: Performance Test Selection: |
|
|
| Platform | Device | Reason | Recording |
|---|---|---|---|
| Android | Google Pixel 8 Pro (v14.0) | Test error | 📹 Watch |
✅ Passed Tests (4)
| Test | Platform | Device | Duration | Team | Recording |
|---|---|---|---|---|---|
| Asset View, SRP 1 + SRP 2 + SRP 3 | Android | Google Pixel 8 Pro (v14.0) | 4.65s | @assets-dev-team | 📹 Watch |
| Cold Start: Measure ColdStart To Login Screen | Android | Google Pixel 8 Pro (v14.0) | 4.45s | @metamask-mobile-platform | 📹 Watch |
| Measure Warm Start: Warm Start to Login Screen | Android | Google Pixel 8 Pro (v14.0) | 0.69s | @metamask-mobile-platform | 📹 Watch |
| Measure Warm Start: Login To Wallet Screen | Android | Google Pixel 8 Pro (v14.0) | 2.39s | @metamask-mobile-platform | 📹 Watch |
Branch: bump/phishing-controller-17.3.1 · Build: E2E · Commit: a07ab25 · View full run



Description
Bumps
@metamask/phishing-controllerfrom^17.3.0to^17.3.1to pick up the address-poisoning fix from MetaMask/core#9699.Before that fix, the known-recipients list used to detect address poisoning took
txParams.tofrom confirmed transactions. For ERC-20/721/1155 transferstxParams.tois the token contract, not the address receiving the tokens, so two things were wrong:17.3.1decodes the actual recipient from calldata via the newgetEffectiveRecipientutility, so token transfers now contribute the real recipient. Plain sends and other contract interactions are unchanged.Why
@metamask/transaction-controllermoves to 69.4.0phishing-controller@17.3.1declares@metamask/transaction-controller: ^69.4.0, becausegetEffectiveRecipientis exported from69.4.0.This repo pins
@metamask/transaction-controllerto an exact version inresolutions, which collapses every range in the tree onto that one version. That pin has to move as well — leaving it at69.3.0would silently resolvephishing-controller@17.3.1against69.3.0, wheregetEffectiveRecipientexists only as an internal helper insidefirst-time-interactionand is not exported from the package entry point. The import would beundefinedand would throw on every confirmed transaction. So this PR moves theresolutionspin and the declared range together, and the lockfile still has exactly onetransaction-controllerentry.Two notes for reviewers on the dependency graph:
network-controlleris unaffected.transaction-controller@69.4.0declaresnetwork-controller: ^35.0.0, but this repo'sresolutionspin holds it at34.0.0and the lockfile still has exactly one34.0.0entry. That pin is safe here: the published69.3.0and69.4.0bundles are byte-identical apart from thegetEffectiveRecipientexport, an optionalstrategy?: stringfield onMetamaskPayMetadata, and the moved helper file. No compiled module in69.4.0referencesnetwork-controller,NetworkClient,BuiltInNetworkClientId, oranalyticsOptions, so its^35.0.0range is just the mechanical release-wide bump from Release/1163.0.0 core#9735 rather than an adoption of v35 APIs.accounts-controlleris likewise held at39.0.3by its existing pin.remote-feature-flag-controller@5.0.0is added next to the existing4.2.2. These can't be deduped, since^4.2.xcannot accept5.0.0.transaction-controller@69.4.0only references it from type declarations (dist/TransactionController.d.cts) and never from runtime JS, so nothing new gets pulled into the bundle. Happy to add aresolutionspin instead if the team would rather avoid the duplicate entry.A scoped
yarn dedupecollapses thecore-backend,gas-fee-controller, andpolling-controllerranges that69.4.0nudges forward, so those don't gain parallel copies either.Changelog
CHANGELOG entry: Fixed address-poisoning detection so lookalikes of the actual recipient of a token transfer are flagged, and lookalikes of the token contract address are no longer flagged.
Related issues
Fixes:
@metamask/phishing-controller@17.3.1)Manual testing steps
Feature: address-poisoning detection for token transfer recipients
Screenshots/Recordings
Before
A lookalike of the real ERC-20 recipient produced no warning, while a lookalike of the token contract produced one.
After
A lookalike of the real ERC-20 recipient produces a warning; a lookalike of the token contract does not.
Pre-merge author checklist
Pre-merge reviewer checklist
Note
Medium Risk
Touches security-sensitive address-poisoning logic and requires the transaction-controller pin to match; runtime impact is limited to dependency behavior, but incorrect resolution would break confirmed-tx handling.
Overview
Bumps
@metamask/phishing-controllerfrom^17.3.0to^17.3.1so address-poisoning detection uses the real token transfer recipient (viagetEffectiveRecipient) instead oftxParams.to, which for ERC-20/721/1155 is the token contract. Lookalikes of the actual recipient should warn; lookalikes of the contract should not.Because
17.3.1depends on an exportedgetEffectiveRecipientfrom@metamask/transaction-controller, this PR also moves theresolutionspin and dependency from69.3.0to69.4.0and refreshesyarn.lock(including transitive bumps such asremote-feature-flag-controller@5.0.0alongside the existing4.2.2). No application source files change—behavior comes from the upgraded packages.Reviewed by Cursor Bugbot for commit 6155857. Bugbot is set up for automated code reviews on this repo. Configure here.