From 080d005b219b7e10425f37005ad9ee67d1554119 Mon Sep 17 00:00:00 2001 From: mar <72634565+mindofmar@users.noreply.github.com> Date: Wed, 27 Nov 2024 14:30:24 -0600 Subject: [PATCH 1/3] fix: Phishing page metrics (#28364) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28364?quickstart=1) ## **Related issues** Fixes: https://github.com/orgs/MetaMask/projects/103/views/1?pane=issue&itemId=86413189 ## **Manual testing steps** See Issue attached in Related Issues. ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: AugmentedMode <31675118+AugmentedMode@users.noreply.github.com> --- app/scripts/background.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/scripts/background.js b/app/scripts/background.js index e39d96943d77..2b2f5c4693df 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -284,12 +284,14 @@ function maybeDetectPhishing(theController) { // Determine the block reason based on the type let blockReason; + let blockedUrl = hostname; if (phishingTestResponse?.result && blockedRequestResponse.result) { blockReason = `${phishingTestResponse.type} and ${blockedRequestResponse.type}`; } else if (phishingTestResponse?.result) { blockReason = phishingTestResponse.type; } else { blockReason = blockedRequestResponse.type; + blockedUrl = details.initiator; } theController.metaMetricsController.trackEvent({ @@ -297,11 +299,12 @@ function maybeDetectPhishing(theController) { event: MetaMetricsEventName.PhishingPageDisplayed, category: MetaMetricsEventCategory.Phishing, properties: { - url: hostname, + url: blockedUrl, referrer: { - url: hostname, + url: blockedUrl, }, reason: blockReason, + requestDomain: blockedRequestResponse.result ? hostname : undefined, }, }); const querystring = new URLSearchParams({ hostname, href }); From be331756eae66fcdfafe75d2897cddd8ba07c254 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Wed, 27 Nov 2024 18:18:48 -0330 Subject: [PATCH 2/3] chore: Bump `@metamask/eth-json-rpc-middleware` to v15.0.0 (#28756) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** Bump `@metamask/eth-json-rpc-middlware` from v14.0.2 to v15.0.0. This eliminates some older copies of libraries from our dependency tree, and aligns the `json-rpc-engine` and `rpc-errors` versions with the rest of our middleware stack. This release also drops support for `eth_sign`, but that has been removed from the extension already. Changelog: https://github.com/MetaMask/eth-json-rpc-middleware/blob/main/CHANGELOG.md#1500 [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28756?quickstart=1) ## **Related issues** N/A ## **Manual testing steps** N/A ## **Screenshots/Recordings** N/A ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: MetaMask Bot --- lavamoat/browserify/beta/policy.json | 19 +++---------------- lavamoat/browserify/flask/policy.json | 19 +++---------------- lavamoat/browserify/main/policy.json | 19 +++---------------- lavamoat/browserify/mmi/policy.json | 19 +++---------------- package.json | 2 +- yarn.lock | 23 ++--------------------- 6 files changed, 15 insertions(+), 86 deletions(-) diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index bb556da85cf2..2904dba53751 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -834,25 +834,12 @@ "setTimeout": true }, "packages": { - "@metamask/eth-json-rpc-middleware>@metamask/json-rpc-engine": true, - "@metamask/eth-json-rpc-middleware>@metamask/rpc-errors": true, "@metamask/eth-json-rpc-middleware>@metamask/utils": true, "@metamask/eth-json-rpc-middleware>klona": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true, - "@metamask/eth-sig-util": true - } - }, - "@metamask/eth-json-rpc-middleware>@metamask/json-rpc-engine": { - "packages": { - "@metamask/eth-json-rpc-middleware>@metamask/rpc-errors": true, - "@metamask/eth-json-rpc-middleware>@metamask/utils": true, - "@metamask/safe-event-emitter": true - } - }, - "@metamask/eth-json-rpc-middleware>@metamask/rpc-errors": { - "packages": { - "@metamask/eth-json-rpc-middleware>@metamask/utils": true, - "@metamask/rpc-errors>fast-safe-stringify": true + "@metamask/eth-sig-util": true, + "@metamask/json-rpc-engine": true, + "@metamask/rpc-errors": true } }, "@metamask/eth-json-rpc-middleware>@metamask/utils": { diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index bb556da85cf2..2904dba53751 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -834,25 +834,12 @@ "setTimeout": true }, "packages": { - "@metamask/eth-json-rpc-middleware>@metamask/json-rpc-engine": true, - "@metamask/eth-json-rpc-middleware>@metamask/rpc-errors": true, "@metamask/eth-json-rpc-middleware>@metamask/utils": true, "@metamask/eth-json-rpc-middleware>klona": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true, - "@metamask/eth-sig-util": true - } - }, - "@metamask/eth-json-rpc-middleware>@metamask/json-rpc-engine": { - "packages": { - "@metamask/eth-json-rpc-middleware>@metamask/rpc-errors": true, - "@metamask/eth-json-rpc-middleware>@metamask/utils": true, - "@metamask/safe-event-emitter": true - } - }, - "@metamask/eth-json-rpc-middleware>@metamask/rpc-errors": { - "packages": { - "@metamask/eth-json-rpc-middleware>@metamask/utils": true, - "@metamask/rpc-errors>fast-safe-stringify": true + "@metamask/eth-sig-util": true, + "@metamask/json-rpc-engine": true, + "@metamask/rpc-errors": true } }, "@metamask/eth-json-rpc-middleware>@metamask/utils": { diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index bb556da85cf2..2904dba53751 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -834,25 +834,12 @@ "setTimeout": true }, "packages": { - "@metamask/eth-json-rpc-middleware>@metamask/json-rpc-engine": true, - "@metamask/eth-json-rpc-middleware>@metamask/rpc-errors": true, "@metamask/eth-json-rpc-middleware>@metamask/utils": true, "@metamask/eth-json-rpc-middleware>klona": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true, - "@metamask/eth-sig-util": true - } - }, - "@metamask/eth-json-rpc-middleware>@metamask/json-rpc-engine": { - "packages": { - "@metamask/eth-json-rpc-middleware>@metamask/rpc-errors": true, - "@metamask/eth-json-rpc-middleware>@metamask/utils": true, - "@metamask/safe-event-emitter": true - } - }, - "@metamask/eth-json-rpc-middleware>@metamask/rpc-errors": { - "packages": { - "@metamask/eth-json-rpc-middleware>@metamask/utils": true, - "@metamask/rpc-errors>fast-safe-stringify": true + "@metamask/eth-sig-util": true, + "@metamask/json-rpc-engine": true, + "@metamask/rpc-errors": true } }, "@metamask/eth-json-rpc-middleware>@metamask/utils": { diff --git a/lavamoat/browserify/mmi/policy.json b/lavamoat/browserify/mmi/policy.json index 58c87b230e73..24ba9d2bff4b 100644 --- a/lavamoat/browserify/mmi/policy.json +++ b/lavamoat/browserify/mmi/policy.json @@ -926,25 +926,12 @@ "setTimeout": true }, "packages": { - "@metamask/eth-json-rpc-middleware>@metamask/json-rpc-engine": true, - "@metamask/eth-json-rpc-middleware>@metamask/rpc-errors": true, "@metamask/eth-json-rpc-middleware>@metamask/utils": true, "@metamask/eth-json-rpc-middleware>klona": true, "@metamask/eth-json-rpc-middleware>safe-stable-stringify": true, - "@metamask/eth-sig-util": true - } - }, - "@metamask/eth-json-rpc-middleware>@metamask/json-rpc-engine": { - "packages": { - "@metamask/eth-json-rpc-middleware>@metamask/rpc-errors": true, - "@metamask/eth-json-rpc-middleware>@metamask/utils": true, - "@metamask/safe-event-emitter": true - } - }, - "@metamask/eth-json-rpc-middleware>@metamask/rpc-errors": { - "packages": { - "@metamask/eth-json-rpc-middleware>@metamask/utils": true, - "@metamask/rpc-errors>fast-safe-stringify": true + "@metamask/eth-sig-util": true, + "@metamask/json-rpc-engine": true, + "@metamask/rpc-errors": true } }, "@metamask/eth-json-rpc-middleware>@metamask/utils": { diff --git a/package.json b/package.json index 3c63655b9b49..a8718102b710 100644 --- a/package.json +++ b/package.json @@ -298,7 +298,7 @@ "@metamask/ens-controller": "^14.0.0", "@metamask/ens-resolver-snap": "^0.1.2", "@metamask/eth-json-rpc-filters": "^9.0.0", - "@metamask/eth-json-rpc-middleware": "^14.0.2", + "@metamask/eth-json-rpc-middleware": "^15.0.0", "@metamask/eth-ledger-bridge-keyring": "^5.0.1", "@metamask/eth-query": "^4.0.0", "@metamask/eth-sig-util": "^7.0.1", diff --git a/yarn.lock b/yarn.lock index 027d29f16a3e..906441c0ebcc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5305,25 +5305,6 @@ __metadata: languageName: node linkType: hard -"@metamask/eth-json-rpc-middleware@npm:^14.0.2": - version: 14.0.2 - resolution: "@metamask/eth-json-rpc-middleware@npm:14.0.2" - dependencies: - "@metamask/eth-block-tracker": "npm:^11.0.1" - "@metamask/eth-json-rpc-provider": "npm:^4.1.1" - "@metamask/eth-sig-util": "npm:^7.0.3" - "@metamask/json-rpc-engine": "npm:^9.0.2" - "@metamask/rpc-errors": "npm:^6.3.1" - "@metamask/utils": "npm:^9.1.0" - "@types/bn.js": "npm:^5.1.5" - bn.js: "npm:^5.2.1" - klona: "npm:^2.0.6" - pify: "npm:^5.0.0" - safe-stable-stringify: "npm:^2.4.3" - checksum: 10/8094efcd23bb5a1335f7d41cfb6193e035cc30329c2989f09b65f8870178ce960a643a4818a00fc791076a51d629511190d54f3b327165ac6f966c307dc9b90d - languageName: node - linkType: hard - "@metamask/eth-json-rpc-middleware@npm:^15.0.0": version: 15.0.0 resolution: "@metamask/eth-json-rpc-middleware@npm:15.0.0" @@ -5365,7 +5346,7 @@ __metadata: languageName: node linkType: hard -"@metamask/eth-json-rpc-provider@npm:^4.0.0, @metamask/eth-json-rpc-provider@npm:^4.1.0, @metamask/eth-json-rpc-provider@npm:^4.1.1, @metamask/eth-json-rpc-provider@npm:^4.1.3, @metamask/eth-json-rpc-provider@npm:^4.1.5, @metamask/eth-json-rpc-provider@npm:^4.1.6": +"@metamask/eth-json-rpc-provider@npm:^4.0.0, @metamask/eth-json-rpc-provider@npm:^4.1.0, @metamask/eth-json-rpc-provider@npm:^4.1.3, @metamask/eth-json-rpc-provider@npm:^4.1.5, @metamask/eth-json-rpc-provider@npm:^4.1.6": version: 4.1.6 resolution: "@metamask/eth-json-rpc-provider@npm:4.1.6" dependencies: @@ -26790,7 +26771,7 @@ __metadata: "@metamask/eslint-config-typescript": "npm:^9.0.1" "@metamask/eslint-plugin-design-tokens": "npm:^1.1.0" "@metamask/eth-json-rpc-filters": "npm:^9.0.0" - "@metamask/eth-json-rpc-middleware": "npm:^14.0.2" + "@metamask/eth-json-rpc-middleware": "npm:^15.0.0" "@metamask/eth-json-rpc-provider": "npm:^4.1.6" "@metamask/eth-ledger-bridge-keyring": "npm:^5.0.1" "@metamask/eth-query": "npm:^4.0.0" From 6aeb77791ab67ae3f72868608fc2337fcce64e2d Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Wed, 27 Nov 2024 18:35:20 -0330 Subject: [PATCH 3/3] chore: Bump `@metamask/providers` to v18 (#28757) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## **Description** The `@metamask/providers` package has been updated from v14 to v18. The breaking changes do not require any changes to the extension. They include: * Removal of certain provider features, which were later restored * Updates to JSON-RPC packages that used to impact error serialization in a breaking way, but no longer do (as of rpc-errors v7.0.1) * `webextension-polyfill` added as a peer dependency * Sub-path exports no longer work due to addition of exports and ESM build. Altogether this should result in no functional changes, aside from eliminating some redundant older copies of libraries (reducing bundle size). This update was difficult because of the need for a subpath export in `inpage.js`. We want to import just the `initializeInpageProvider` module without the rest of the package, which means we need to use a subpath export (because browserify doesn't support tree shaking). But this was challenging because the export maps added in v17 prevent the use of any subpath exports not defined in the export map. There was no entry that worked correctly across webpack and browserify. This was resolved by a new entry added in https://github.com/MetaMask/providers/pull/391 (as part of v18.2.0) Changelog: https://github.com/MetaMask/providers/blob/main/CHANGELOG.md#1820 [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28757?quickstart=1) ## **Related issues** N/A ## **Manual testing steps** N/A ## **Screenshots/Recordings** N/A ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --- app/scripts/inpage.js | 2 +- package.json | 2 +- yarn.lock | 49 +++++-------------------------------------- 3 files changed, 7 insertions(+), 46 deletions(-) diff --git a/app/scripts/inpage.js b/app/scripts/inpage.js index d00a0542db03..9aca84081406 100644 --- a/app/scripts/inpage.js +++ b/app/scripts/inpage.js @@ -34,7 +34,7 @@ cleanContextForImports(); import log from 'loglevel'; import { v4 as uuid } from 'uuid'; import { WindowPostMessageStream } from '@metamask/post-message-stream'; -import { initializeProvider } from '@metamask/providers/dist/initializeInpageProvider'; +import { initializeProvider } from '@metamask/providers/initializeInpageProvider'; import shouldInjectProvider from '../../shared/modules/provider-injection'; // contexts diff --git a/package.json b/package.json index a8718102b710..caa0f091ef6b 100644 --- a/package.json +++ b/package.json @@ -333,7 +333,7 @@ "@metamask/ppom-validator": "0.35.1", "@metamask/preinstalled-example-snap": "^0.2.0", "@metamask/profile-sync-controller": "^2.0.0", - "@metamask/providers": "^14.0.2", + "@metamask/providers": "^18.2.0", "@metamask/queued-request-controller": "^7.0.1", "@metamask/rate-limit-controller": "^6.0.0", "@metamask/rpc-errors": "^7.0.0", diff --git a/yarn.lock b/yarn.lock index 906441c0ebcc..20f79c1457d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6250,29 +6250,9 @@ __metadata: languageName: node linkType: hard -"@metamask/providers@npm:^14.0.2": - version: 14.0.2 - resolution: "@metamask/providers@npm:14.0.2" - dependencies: - "@metamask/json-rpc-engine": "npm:^7.1.1" - "@metamask/object-multiplex": "npm:^2.0.0" - "@metamask/rpc-errors": "npm:^6.0.0" - "@metamask/safe-event-emitter": "npm:^3.0.0" - "@metamask/utils": "npm:^8.1.0" - detect-browser: "npm:^5.2.0" - extension-port-stream: "npm:^3.0.0" - fast-deep-equal: "npm:^3.1.3" - is-stream: "npm:^2.0.0" - json-rpc-middleware-stream: "npm:^5.0.1" - readable-stream: "npm:^3.6.2" - webextension-polyfill: "npm:^0.10.0" - checksum: 10/e5ad5d4261f7629df0fd2a7a60e5fbd5a0d39b54ab5b5917ddfc16f741e122625769d65d323c5a97d7dbe95be987e3d5cf1c2ca4fc28ed9f68dc369c9e3209f1 - languageName: node - linkType: hard - -"@metamask/providers@npm:^18.1.1": - version: 18.1.1 - resolution: "@metamask/providers@npm:18.1.1" +"@metamask/providers@npm:^18.1.1, @metamask/providers@npm:^18.2.0": + version: 18.2.0 + resolution: "@metamask/providers@npm:18.2.0" dependencies: "@metamask/json-rpc-engine": "npm:^10.0.1" "@metamask/json-rpc-middleware-stream": "npm:^8.0.5" @@ -6287,7 +6267,7 @@ __metadata: readable-stream: "npm:^3.6.2" peerDependencies: webextension-polyfill: ^0.10.0 || ^0.11.0 || ^0.12.0 - checksum: 10/dca428d84e490343d85921d4fb09216a0b64be59a036d7b4f7b5ca4e2581c29a4106d58ff9dfe0650dc2b9387dd2adad508fc61073a9fda8ebde8ee3a5137abe + checksum: 10/d808f14fc5cf6e240abec61c6b0cb93c0a1d883078ee3d005b9cd49c44e65767a4227d828b19c31500da8e94d85c3632d6957ab35da20b250f6f3a52746ed6b3 languageName: node linkType: hard @@ -24813,18 +24793,6 @@ __metadata: languageName: node linkType: hard -"json-rpc-middleware-stream@npm:^5.0.1": - version: 5.0.1 - resolution: "json-rpc-middleware-stream@npm:5.0.1" - dependencies: - "@metamask/json-rpc-engine": "npm:^7.1.1" - "@metamask/safe-event-emitter": "npm:^3.0.0" - "@metamask/utils": "npm:^8.1.0" - readable-stream: "npm:^3.6.2" - checksum: 10/b5e9b2ae21cc93586f1f4d8c6543634406575bf9cb6e909a4b5d47359b44519f37192a0262279291e5cde0876a67928d26d7e420d9e2aaf7992083e2c1f97a37 - languageName: node - linkType: hard - "json-rpc-random-id@npm:^1.0.0, json-rpc-random-id@npm:^1.0.1": version: 1.0.1 resolution: "json-rpc-random-id@npm:1.0.1" @@ -26810,7 +26778,7 @@ __metadata: "@metamask/preferences-controller": "npm:^13.0.2" "@metamask/preinstalled-example-snap": "npm:^0.2.0" "@metamask/profile-sync-controller": "npm:^2.0.0" - "@metamask/providers": "npm:^14.0.2" + "@metamask/providers": "npm:^18.2.0" "@metamask/queued-request-controller": "npm:^7.0.1" "@metamask/rate-limit-controller": "npm:^6.0.0" "@metamask/rpc-errors": "npm:^7.0.0" @@ -37557,13 +37525,6 @@ __metadata: languageName: node linkType: hard -"webextension-polyfill@npm:^0.10.0": - version: 0.10.0 - resolution: "webextension-polyfill@npm:0.10.0" - checksum: 10/51ff30ebed4b1aa802b7f0347f05021b2fe492078bb1a597223d43995fcee96e2da8f914a2f6e36f988c1877ed5ab36ca7077f2f3ab828955151a59e4c01bf7e - languageName: node - linkType: hard - "webextension-polyfill@npm:^0.8.0": version: 0.8.0 resolution: "webextension-polyfill@npm:0.8.0"