-
Notifications
You must be signed in to change notification settings - Fork 1.5k
fix: enable dynamic URLs for Chrome web accessible resources #17429
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This commit adds use_dynamic_url: true to the extension's web_accessible_resources configuration. When enabled, Chrome generates random session-based GUIDs for extension resource URLs instead of using the predictable static extension ID. This enhances privacy by making extension resource URLs unpredictable and prevents third-party enumeration of installed extensions. The feature is supported in Chrome 102+ and changes resource URLs from chrome-extension://[static-id]/resource to chrome-extension://[random-guid]/resource, with GUIDs regenerating each browser session while maintaining all existing extension functionality. Addresses: https://bitwarden.atlassian.net/browse/PM-28344
|
Great job! No new security vulnerabilities introduced in this pull request |
|
Claude finished @addisonbeck's task —— View job Code Review CompleteSummaryThis is a focused, well-executed privacy enhancement for Chrome MV3. The single-line change adds dynamic URL generation for web-accessible resources, preventing extension fingerprinting. The PR description is comprehensive with clear objectives and visual verification. FindingsFinding 1: PR description and implementation are both excellent - clear objective, proper tracking reference, verification screenshots, and technically sound change (apps/browser/src/manifest.v3.json:168) Finding 2: 💭 Manifest v2 (manifest.json) doesn't support Finding 3: 💭 Consider documenting browser version requirements - while the PR description mentions Chrome 102+, this information isn't captured in code comments or documentation Optional: Browser compatibility noteIf you want to add clarity for future maintainers, you could add a comment above the // Chrome 102+ feature: Generates random session-based GUIDs instead of static extension ID
// Enhances privacy by preventing extension fingerprinting via resource URLs
"use_dynamic_url": trueHowever, JSON doesn't support comments, so this would need to be documented elsewhere (README, architecture docs, or inline code comments where the manifest is referenced). Technical Review
The change is minimal, targeted, and well-reasoned. The screenshot effectively demonstrates the before/after behavior showing static extension ID URLs becoming randomized. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #17429 +/- ##
==========================================
+ Coverage 40.78% 41.11% +0.33%
==========================================
Files 3542 3544 +2
Lines 101467 101753 +286
Branches 15216 15241 +25
==========================================
+ Hits 41380 41840 +460
+ Misses 58337 58153 -184
- Partials 1750 1760 +10 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This commit adds use_dynamic_url: true to the extension's web_accessible_resources configuration. When enabled, Chrome generates random session-based GUIDs for extension resource URLs instead of using the predictable static extension ID. This enhances privacy by making extension resource URLs unpredictable and prevents third-party enumeration of installed extensions. The feature is supported in Chrome 102+ and changes resource URLs from chrome-extension://[static-id]/resource to chrome-extension://[random-guid]/resource, with GUIDs regenerating each browser session while maintaining all existing extension functionality. Addresses: https://bitwarden.atlassian.net/browse/PM-28344

🎟️ Tracking
https://bitwarden.atlassian.net/browse/PM-28344
sibling change from the same Jira ticket: #17466
📔 Objective
This commit adds use_dynamic_url: true to the mv3 extension's web_accessible_resources configuration. When enabled, Chrome generates random session-based GUIDs for extension resource URLs instead of using the predictable static extension ID. This enhances privacy by making extension resource URLs unpredictable and prevents third-party enumeration of installed extensions.
The feature is supported in Chrome 102+ and changes resource URLs from chrome-extension://[static-id]/resource to chrome-extension://[random-guid]/resource, with GUIDs regenerating each browser session while maintaining all existing extension functionality.
It might be wise to also review the HTML I used for testing. It is shared in the Recreation Steps in Jira.
📸 Screenshots
A before and after using the test HTML shared in Jira
⏰ Reminders before review
🦮 Reviewer guidelines
:+1:) or similar for great changes:memo:) or ℹ️ (:information_source:) for notes or general info:question:) for questions:thinking:) or 💭 (:thought_balloon:) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion:art:) for suggestions / improvements:x:) or:warning:) for more significant problems or concerns needing attention:seedling:) or ♻️ (:recycle:) for future improvements or indications of technical debt:pick:) for minor or nitpick changes