Skip to content

Conversation

runway-github[bot]
Copy link
Contributor

@runway-github runway-github bot commented Oct 13, 2025

Description

Introduces URL path based blocking within the extension. This allows
websites like example.com/path to be blocked rather than blocking all
of example.com.

Open in GitHub Codespaces

Changelog

CHANGELOG entry: Added path-based blocking for URLs

Related issues

Fixes:

Manual testing steps

  1. Go to sites.google.com/view/aoooop/aave-com and make sure that it
    you are redirected to the Phishing Warning Page
  2. Go to sites.google.com/view/aoooop/ and make sure that it does not
    redirect you.
  3. Go to sites.google.com/view/aoooop/aave-com/path and make sure that
    you are redirected to the Phishing Warning Page.
  4. Click proceed anyway
  5. Going to sites.google.com/view/aoooop/aave-com should also no
    longer redirect to the Phishing Warning Page.
  6. Going to sites.google.com/view/aoooop/aave-com/path should also no
    longer redirect to the Phishing Warning Page (implicit in step 4).

Screenshots/Recordings

Before

After

Pre-merge author checklist

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.

Note

Introduce trie-based path matching for phishing detection, add path whitelisting, migrate hotlist diffs to v2, and update tests/mocks and dependencies.

  • Phishing Detection:
    • Path-based blocking: Add PathTrie (insert/delete/match, list->trie, deep copy) used to match hostname+path.
    • Controller (PhishingController): new state.whitelistPaths; test/bypass honor path matches; parse stalelist blocklistPaths via convertListToTrie; hotlist diffs endpoint to v2.
    • Detector (PhishingDetector): check blocklistPaths with matchedPathPrefix; expose blockingPath(url).
    • Utils: add getHostnameAndPathComponents/getPathnameFromUrl; applyDiffs supports blocklistPaths with trie ops; minor config cleanup.
  • Tests/Mocks:
    • Update E2E/unit tests for path-based logic; add mock pages with nested paths; adjust phishing mocks/schema; expect diffsSince v2; metrics masks include whitelistPaths.
  • State/Telemetry: Sanitize/remove whitelistPaths from UI state and snapshots.
  • Build & Deps:
    • Patch @metamask/phishing-controller (adds new dist files); bump @metamask/phishing-warning; lockfile/attributions updates; LavaMoat policies allow console.error for base-controller.

Written by Cursor Bugbot for commit 5b70d32. This will update automatically on new commits. Configure here.


Co-authored-by: augmentedmode [email protected] 8bdd1e1

@runway-github runway-github bot requested a review from a team as a code owner October 13, 2025 16:08
Copy link
Contributor

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.

@metamaskbot metamaskbot added the team-runway-bot-deprecated DEPRECATED: please use "team-bots" instead label Oct 13, 2025
@metamaskbot
Copy link
Collaborator

metamaskbot commented Oct 13, 2025

✨ Files requiring CODEOWNER review ✨

🔑 @MetaMask/accounts-engineers (1 files, +1 -0)
  • 📁 app/
    • 📁 scripts/
      • 📁 lib/
        • 📁 snap-keyring/
          • 📁 utils/
            • 📄 isBlockedUrl.test.ts +1 -0

🧩 @MetaMask/extension-devs (4 files, +8 -0)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +2 -0
      • 📁 experimental/
        • 📄 policy.json +2 -0
      • 📁 flask/
        • 📄 policy.json +2 -0
      • 📁 main/
        • 📄 policy.json +2 -0

📜 @MetaMask/policy-reviewers (4 files, +8 -0)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +2 -0
      • 📁 experimental/
        • 📄 policy.json +2 -0
      • 📁 flask/
        • 📄 policy.json +2 -0
      • 📁 main/
        • 📄 policy.json +2 -0

Tip

Follow the policy review process outlined in the LavaMoat Policy Review Process doc before expecting an approval from Policy Reviewers.


🔗 @MetaMask/supply-chain (4 files, +8 -0)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +2 -0
      • 📁 experimental/
        • 📄 policy.json +2 -0
      • 📁 flask/
        • 📄 policy.json +2 -0
      • 📁 main/
        • 📄 policy.json +2 -0

Copy link

socket-security bot commented Oct 13, 2025

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updated@​metamask/​messenger@​0.2.0 ⏵ 0.3.010010076 +189 -1100
Updated@​metamask/​base-controller@​8.3.0 ⏵ 8.4.11001007795 +1100
Updated@​metamask/​controller-utils@​11.12.0 ⏵ 11.14.199 +110077 +196 +3100
Updated@​metamask/​utils@​11.7.0 ⏵ 11.8.199 +110094 +194 -2100
Updated@​metamask/​phishing-warning@​5.0.1 ⏵ 5.1.0100 +8100100 +7100 +10100

View full report

@metamaskbot metamaskbot requested review from a team as code owners October 13, 2025 16:16
cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: ecbd824 | Date: 10/13/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±73ms) 🟡 | historical mean value: 1.05s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 735ms (±70ms) 🟢 | historical mean value: 739ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 75ms (±13ms) 🟢 | historical mean value: 77ms ⬇️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 73ms 1.01s 1.33s 1.28s 1.33s
domContentLoaded 735ms 70ms 697ms 1.01s 945ms 1.01s
firstPaint 75ms 13ms 60ms 188ms 84ms 188ms
firstContentfulPaint 75ms 13ms 60ms 188ms 84ms 188ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [ecbd824]
UI Startup Metrics (1258 ± 73 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1258111214967313111363
load109096012996811401193
domContentLoaded108195312846711331183
domInteractive18144561836
firstPaint59894129443710921163
backgroundConnect25123243321254270
firstReactRender25175162739
getState1456781728
initialActions51506611
loadScripts838719101566891936
setupStore1062331017
WebpackHomeuiStartup19751424252127721582457
load15891118193721117541861
domContentLoaded15791114192321317481850
domInteractive171292121545
firstPaint1636640766188287
backgroundConnect3315291383156
firstReactRender82393306078305
getState3052896914270
initialActions62315620
loadScripts15751112191121217451838
setupStore186248351325
FirefoxBrowserifyHomeuiStartup1368120918059914221537
load1186106113676712471305
domContentLoaded1185106013666712471305
domInteractive973029247110214
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3119135133545
firstReactRender27236062734
getState7310810612
initialActions40477312
loadScripts1161104212986312211258
setupStore11419620825
WebpackHomeuiStartup15571362186313316651836
load13261167160412014211567
domContentLoaded13261167160312014201566
domInteractive1053331453105280
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3321100103848
firstReactRender37314933841
getState63132711
initialActions3110236
loadScripts13001131158412113981539
setupStore11514115920

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 5b54350 | Date: 10/13/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±78ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 741ms (±85ms) 🟢 | historical mean value: 739ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 89ms (±126ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 78ms 1.01s 1.44s 1.29s 1.44s
domContentLoaded 741ms 85ms 699ms 1.28s 969ms 1.28s
firstPaint 89ms 126ms 60ms 1.34s 88ms 1.34s
firstContentfulPaint 89ms 126ms 60ms 1.34s 88ms 1.34s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [5b54350]
UI Startup Metrics (1239 ± 72 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1239110414407212701383
load107195412606511031206
domContentLoaded106294112536510921198
domInteractive18144761738
firstPaint54892121741510461175
backgroundConnect25324035413256279
firstReactRender25168992940
getState15692121929
initialActions51698613
loadScripts81769299964849945
setupStore1072331117
WebpackHomeuiStartup19061468250628421252430
load15281178192621416911848
domContentLoaded15211172191521316871836
domInteractive171283131441
firstPaint1686547167182297
backgroundConnect271371102856
firstReactRender91363407479329
getState3253047313281
initialActions62245519
loadScripts15171169190421216851824
setupStore146244231323
FirefoxBrowserifyHomeuiStartup14151218178212014861696
load1221106815198312831351
domContentLoaded1220106815188312821350
domInteractive1073550565111239
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect38211842838104
firstReactRender28247972934
getState936011743
initialActions3014238
loadScripts1193104814717912511314
setupStore94335822
WebpackHomeuiStartup15351312188616216741850
load13071113158413614031560
domContentLoaded13071113158313614021559
domInteractive1063529760102287
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect331987113846
firstReactRender36305443744
getState7315515610
initialActions411061035
loadScripts12831094156213813811541
setupStore95828817

cursor[bot]

This comment was marked as outdated.

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: cc97556 | Date: 10/14/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±73ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 739ms (±70ms) 🟢 | historical mean value: 737ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±11ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 73ms 1.01s 1.34s 1.27s 1.34s
domContentLoaded 739ms 70ms 697ms 1.02s 951ms 1.02s
firstPaint 77ms 11ms 64ms 172ms 88ms 172ms
firstContentfulPaint 77ms 11ms 64ms 172ms 88ms 172ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [cc97556]
UI Startup Metrics (1253 ± 86 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1253111614948613011457
load108496712867611211258
domContentLoaded107695612777611151249
domInteractive18135971837
firstPaint61785130244310651197
backgroundConnect2502362717256264
firstReactRender25165372739
getState145103111729
initialActions51657514
loadScripts8337171031748661000
setupStore952131014
WebpackHomeuiStartup20171514251923321482436
load16171211194518017371859
domContentLoaded16061201194218217301852
domInteractive171295111544
firstPaint1666438465205287
backgroundConnect4014349613163
firstReactRender84363297379320
getState3843038214289
initialActions62224614
loadScripts16021199193218117241850
setupStore236302551429
FirefoxBrowserifyHomeuiStartup15041258204313515791758
load12961103169710113671455
domContentLoaded12961103169710113671455
domInteractive1103530456113258
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect4122168224497
firstReactRender28243733033
getState83607721
initialActions50538420
loadScripts1265108415729513421416
setupStore12510714938
WebpackHomeuiStartup15211356216816915881940
load12991147191414413561591
domContentLoaded12991147191314413561591
domInteractive106333306695287
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3522251273850
firstReactRender36308963742
getState63233611
initialActions511791839
loadScripts12711120173913813351571
setupStore1069513917

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: d5da20f | Date: 10/14/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.07s (±72ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 746ms (±69ms) 🟢 | historical mean value: 737ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 79ms (±12ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.07s 72ms 1.02s 1.35s 1.29s 1.35s
domContentLoaded 746ms 69ms 707ms 1.01s 972ms 1.01s
firstPaint 79ms 12ms 60ms 180ms 92ms 180ms
firstContentfulPaint 79ms 12ms 60ms 180ms 92ms 180ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [d5da20f]
UI Startup Metrics (1215 ± 69 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1215107914216912521332
load104990412456510801172
domContentLoaded104189912346410721163
domInteractive18136171735
firstPaint61082121442310581111
backgroundConnect2472322667252260
firstReactRender2616164152642
getState14685101725
initialActions40254611
loadScripts80165999563832925
setupStore952731015
WebpackHomeuiStartup20821545262125922322525
load16621233204020317881939
domContentLoaded16541228202420117761931
domInteractive2013130191678
firstPaint1756467090193347
backgroundConnect3116340333353
firstReactRender102383388093311
getState235290531436
initialActions8217217721
loadScripts16501226201120017731929
setupStore2663045817186
FirefoxBrowserifyHomeuiStartup14641255180011815301703
load1261108814708713161442
domContentLoaded1261108714708713161442
domInteractive1063835655111245
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3721149223778
firstReactRender29248172940
getState838111721
initialActions41446413
loadScripts1234106914328612931416
setupStore12512515942
WebpackHomeuiStartup14981298199915115851815
load12851119159512713881541
domContentLoaded12851119159412713871540
domInteractive101293135797272
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect31216593746
firstReactRender35294633641
getState6321269
initialActions41647310
loadScripts12611093157512913671523
setupStore10510511819

@metamaskbot
Copy link
Collaborator

📊 Page Load Benchmark Results

Current Commit: 5b70d32 | Date: 10/14/2025

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.06s (±149ms) 🟡 | historical mean value: 1.05s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 747ms (±166ms) 🟢 | historical mean value: 737ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 98ms (±225ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)
📈 Detailed Results
Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.06s 149ms 1.00s 2.39s 1.27s 2.39s
domContentLoaded 747ms 166ms 695ms 2.27s 944ms 2.27s
firstPaint 98ms 225ms 60ms 2.34s 88ms 2.34s
firstContentfulPaint 98ms 225ms 60ms 2.34s 88ms 2.34s
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms

Results generated automatically by MetaMask CI

@metamaskbot
Copy link
Collaborator

Builds ready [5b70d32]
UI Startup Metrics (1235 ± 75 ms)
PlatformBuildTypePageMetricMean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyHomeuiStartup1235109814437512811362
load106992912597511261195
domContentLoaded106192112507511181186
domInteractive18134561739
firstPaint70283125342810911171
backgroundConnect2482332717251262
firstReactRender23164552533
getState14699111628
initialActions50788513
loadScripts82168199775882942
setupStore962731018
WebpackHomeuiStartup19851497249527321672416
load15931205195521517551887
domContentLoaded15821194194621617441877
domInteractive171283121546
firstPaint1616341466187283
backgroundConnect3217350343056
firstReactRender93363337482322
getState175285381327
initialActions8218619622
loadScripts15791192193521517421865
setupStore236303541429
FirefoxBrowserifyHomeuiStartup14171243184912014841722
load1221108315478212821350
domContentLoaded1221108315478212821349
domInteractive993328247102226
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect3519104153973
firstReactRender27234432834
getState10319523730
initialActions5118819310
loadScripts1195106315287912461322
setupStore1056910840
WebpackHomeuiStartup16091394202916317131941
load13771173178614514671642
domContentLoaded13761173178614414671642
domInteractive1103332055107283
firstPaintNaNNaNNaNNaNNaNNaN
backgroundConnect352372104055
firstReactRender36314633841
getState73757611
initialActions6118720315
loadScripts13511144175514514471621
setupStore105139141018

},
"@metamask/base-controller": {
"globals": {
"console.error": true,
Copy link
Contributor

@gauthierpetetin gauthierpetetin Oct 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note to facilitate future stable-sync PR creation: All lavamoat file updates come from the upgrade of "@metamask/base-controller" from v8.3.0 to v8.4.0 in this PR, which is included in release 13.5.0.

);
assert.equal(
METAMASK_HOTLIST_DIFF_URL,
'https://phishing-detection.api.cx.metamask.io/v1/diffsSince',
Copy link
Contributor

@gauthierpetetin gauthierpetetin Oct 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note to facilitate future stable-sync PR creation: Some changes in this e2e test file have been omitted here on purpose (while there were on the original PR) because important refactoring has taken place in e2e test files on main which makes it too difficult to import the changes here.
Instead, we'll rely on manual testing for the phishing detection e2e test cases on this release branch.
Then we'll need to ensure that these changes don't get merged back to main.

@gauthierpetetin gauthierpetetin merged commit 8ae39c5 into release/13.4.3 Oct 14, 2025
274 of 277 checks passed
@gauthierpetetin gauthierpetetin deleted the cherry-pick-13-4-3-8bdd1e1 branch October 14, 2025 19:02
@github-actions github-actions bot locked and limited conversation to collaborators Oct 14, 2025
@metamaskbot metamaskbot added the release-13.4.3 Issue or pull request that will be included in release 13.4.3 label Oct 14, 2025
@metamaskbot
Copy link
Collaborator

No release label on PR. Adding release label release-13.4.3 on PR, as PR was cherry-picked in branch 13.4.3.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

release-13.4.3 Issue or pull request that will be included in release 13.4.3 team-runway-bot-deprecated DEPRECATED: please use "team-bots" instead

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants