SOLFIND
Web Lens
Portal home

refactor: ensure IpcRenderer is not bridgable by MarshallOfSound · Pull Request #40330 · electron/electron · GitHub

https://github.com/electron/electron/pull/40330 • 382 KB fetched
Open original page


refactor: ensure IpcRenderer is not bridgable by MarshallOfSound · Pull Request #40330 · electron/electron · GitHub Skip to content Navigation Menu Sign in Appearance settings * Platform * AI CODE CREATION * GitHub Copilot Write better code with AI * GitHub Copilot app Direct agents from issue to merge * MCP Registry Integrate external tools * DEVELOPER WORKFLOWS * Actions Automate any workflow * Codespaces Instant dev environments * Issues Plan and track work * Code Review Manage code changes * Code Quality Enforce quality at merge * APPLICATION SECURITY * GitHub Advanced Security Find and fix vulnerabilities * Code security Secure your code as you build * Secret protection Stop leaks before they start * EXPLORE * Why GitHub * Documentation * Blog * Changelog * Marketplace View all features * Solutions * BY COMPANY SIZE * Enterprises * Small and medium teams * Startups * Nonprofits * BY USE CASE * App Modernization * DevSecOps * DevOps * CI/CD * View all use cases * BY INDUSTRY * Healthcare * Financial services * Manufacturing * Government * View all industries View all solutions * Resources * EXPLORE BY TOPIC * AI * Software Development * DevOps * Security * View all topics * EXPLORE BY TYPE * Customer stories * Events & webinars * Ebooks & reports * Business insights * GitHub Skills * SUPPORT & SERVICES * Documentation * Customer support * Community forum * Trust center * Partners View all resources * Open Source * COMMUNITY * GitHub Sponsors Fund open source developers * PROGRAMS * Security Lab * Maintainer Community * GitHub Stars * Archive Program * REPOSITORIES * Topics * Trending * Collections * Enterprise * ENTERPRISE SOLUTIONS * Enterprise platform AI-powered developer platform * AVAILABLE ADD-ONS * GitHub Advanced Security Enterprise-grade security features * Copilot for Business Enterprise-grade AI features * Premium Support Enterprise-grade 24/7 support * Pricing Search / Sign in Sign up Appearance settings You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert Uh oh! There was an error while loading. Please reload this page . electron / electron Public * Notifications You must be signed in to change notification settings * Fork 17.5k * Star 123k * Code * Issues 626 * Pull requests 132 * Actions * Projects * Security and quality 61 * Insights Additional navigation options * Code * Issues * Pull requests * Actions * Projects * Security and quality * Insights refactor: ensure IpcRenderer is not bridgable - # 40330 # 40330 Merged jkleinsc merged 3 commits into main electron/electron:main from prevent-ipc-renderer-bridge electron/electron:prevent-ipc-renderer-bridge Copy head branch name to clipboard Oct 31, 2023 Conversation Commits 3  ( 3 ) Checks Files changed Merged refactor: ensure IpcRenderer is not bridgable # 40330 jkleinsc merged 3 commits into main electron/electron:main from prevent-ipc-renderer-bridge electron/electron:prevent-ipc-renderer-bridge Copy head branch name to clipboard Conversation MarshallOfSound commented Oct 25, 2023 Copy link Copy Markdown Member It's a security footgun that IpcRenderer (unlike everything else) can go over the context bridge by accident. Let's just make it so it can't Notes: no-notes Sorry, something went wrong. Uh oh! There was an error while loading. Please reload this page . All reactions MarshallOfSound requested a review from miniak October 25, 2023 15:25 electron-cation Bot added the new-pr 🌱 PR opened recently label Oct 25, 2023 MarshallOfSound requested a review from codebytere October 25, 2023 15:25 MarshallOfSound added semver/patch backwards-compatible bug fixes no-backport labels Oct 25, 2023 codebytere approved these changes Oct 25, 2023 View reviewed changes miniak approved these changes Oct 25, 2023 View reviewed changes miniak commented Oct 25, 2023 Copy link Copy Markdown Contributor @MarshallOfSound would it make sense to do this as well for consistency? class IpcRendererInternal extends EventEmitter implements ElectronInternal . IpcRendererInternal { send ( channel : string , ... args : any [ ] ) { return ipc . send ( internal , channel , args ) ; } sendSync ( channel : string , ... args : any [ ] ) { return ipc . sendSync ( internal , channel , args ) ; } async invoke < T > ( channel : string , ... args : any [ ] ) { const { error , result } = await ipc . invoke < T > ( internal , channel , args ) ; if ( error ) { throw new Error ( `Error invoking remote method ' ${ channel } ': ${ error } ` ) ; } return result ; } ; } export const ipcRendererInternal = new IpcRendererInternal ( ) ; All reactions Sorry, something went wrong. Uh oh! There was an error while loading. Please reload this page . MarshallOfSound commented Oct 25, 2023 Copy link Copy Markdown Member Author @miniak Oh yeah sure All reactions Sorry, something went wrong. Uh oh! There was an error while loading. Please reload this page . electron-cation Bot removed the new-pr 🌱 PR opened recently label Oct 26, 2023 dsanders11 commented Oct 30, 2023 Copy link Copy Markdown Member Should this be considered a breaking change? In #40321 the docs are being updated to avoid the footgun pattern, but currently the IPC tutorial said "In the renderer process, use the event parameter to send a reply back to the main process [...]" (and gave a code example doing so). If someone followed that tutorial, won't this change break their code? All reactions Sorry, something went wrong. Uh oh! There was an error while loading. Please reload this page . MarshallOfSound commented Oct 30, 2023 Copy link Copy Markdown Member Author Should this be considered a breaking change? In the sense we could note it somewhere, probably, in the sense that it's semver/major no. Security fixes aren't considered semver/major. No plans to backport this one though All reactions Sorry, something went wrong. Uh oh! There was an error while loading. Please reload this page . dsanders11 commented Oct 30, 2023 Copy link Copy Markdown Member In the sense we could note it somewhere, probably Let's add it to breaking changes then. 👍 All reactions Sorry, something went wrong. Uh oh! There was an error while loading. Please reload this page . MarshallOfSound added 2 commits October 30, 2023 22:43 refactor: ensure IpcRenderer is not bridgable 421c93c chore: add notes to breaking-changes d48bd5a MarshallOfSound force-pushed the prevent-ipc-renderer-bridge branch from 60ae5ba to d48bd5a Compare October 31, 2023 05:48 MarshallOfSound requested a review from a team as a code owner October 31, 2023 05:48 jkleinsc requested changes Oct 31, 2023 View reviewed changes jkleinsc left a comment Copy link Copy Markdown Member There was a problem hiding this comment. Choose a reason for hiding this comment The reason will be displayed to describe this comment to others. Learn more . Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality Hide comment Looks like this change is causing the node feature does not hang when using the fs module in the renderer process test to fail. Sorry, something went wrong. Uh oh! There was an error while loading. Please reload this page . All reactions spec: fix test that bridged ipcrenderer 8a71f9c jkleinsc approved these changes Oct 31, 2023 View reviewed changes jkleinsc merged commit 83892ab into main Oct 31, 2023 jkleinsc deleted the prevent-ipc-renderer-bridge branch October 31, 2023 21:29 release-clerk Bot commented Oct 31, 2023 Copy link Copy Markdown No Release Notes All reactions Sorry, something went wrong. Uh oh! There was an error while loading. Please reload this page . MrHuangJser pushed a commit to MrHuangJser/electron that referenced this pull request Dec 11, 2023 refactor: ensure IpcRenderer is not bridgable ( electron#40330 ) ... 39dcf66 * refactor: ensure IpcRenderer is not bridgable * chore: add notes to breaking-changes * spec: fix test that bridged ipcrenderer dsanders11 mentioned this pull request Aug 5, 2024 docs: api history #42982 Merged 18 tasks Sign up for free to join this conversation on GitHub . Already have an account? Sign in to comment Reviewers jkleinsc jkleinsc approved these changes miniak miniak approved these changes codebytere codebytere approved these changes Assignees No one assigned Labels no-backport semver/patch backwards-compatible bug fixes Projects None yet Milestone No milestone Development Successfully merging this pull request may close these issues. Uh oh! There was an error while loading. Please reload this page . 5 participants Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments. Suggestions cannot be applied while the pull request is queued to merge. Suggestion cannot be applied right now. Please check back later. Footer (c) 2026 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Community * Docs * Contact * Manage cookies * Do not share my personal information You can’t perform that action at this time.

Links found on this page

  1. Skip to content [direct]
  2. Sign in [direct]
  3. GitHub Copilot Write better code with AI [direct]
  4. GitHub Copilot app Direct agents from issue to merge [direct]
  5. MCP Registry Integrate external tools [direct]
  6. Actions Automate any workflow [direct]
  7. Codespaces Instant dev environments [direct]
  8. Issues Plan and track work [direct]
  9. Code Review Manage code changes [direct]
  10. Code Quality Enforce quality at merge [direct]
  11. GitHub Advanced Security Find and fix vulnerabilities [direct]
  12. Code security Secure your code as you build [direct]
  13. Secret protection Stop leaks before they start [direct]
  14. Why GitHub [direct]
  15. Documentation [direct]
  16. Blog [direct]
  17. Changelog [direct]
  18. Marketplace [direct]
  19. View all features [direct]
  20. Enterprises [direct]
  21. Small and medium teams [direct]
  22. Startups [direct]
  23. Nonprofits [direct]
  24. App Modernization [direct]
  25. DevSecOps [direct]
  26. DevOps [direct]
  27. CI/CD [direct]
  28. View all use cases [direct]
  29. Healthcare [direct]
  30. Financial services [direct]
  31. Manufacturing [direct]
  32. Government [direct]
  33. View all industries [direct]
  34. View all solutions [direct]
  35. AI [direct]
  36. Software Development [direct]
  37. DevOps [direct]
  38. Security [direct]
  39. View all topics [direct]
  40. Customer stories [direct]
  41. Events & webinars [direct]
  42. Ebooks & reports [direct]
  43. Business insights [direct]
  44. GitHub Skills [direct]
  45. Customer support [direct]
  46. Community forum [direct]
  47. Trust center [direct]
  48. Partners [direct]
  49. View all resources [direct]
  50. GitHub Sponsors Fund open source developers [direct]
  51. Security Lab [direct]
  52. Maintainer Community [direct]
  53. GitHub Stars [direct]
  54. Archive Program [direct]
  55. Topics [direct]
  56. Trending [direct]
  57. Collections [direct]
  58. Copilot for Business Enterprise-grade AI features [direct]
  59. Premium Support Enterprise-grade 24/7 support [direct]
  60. Pricing [direct]
  61. Sign up [direct]
  62. electron [direct]
  63. electron [direct]
  64. Notifications [direct]
  65. Issues 626 [direct]
  66. Pull requests 132 [direct]
  67. Actions [direct]
  68. Projects [direct]
  69. Security and quality 61 [direct]
  70. Insights [direct]
  71. jkleinsc [direct]
  72. main [direct]
  73. prevent-ipc-renderer-bridge [direct]
  74. Commits 3  ( 3 ) [direct]
  75. Checks [direct]
  76. Files changed [direct]
  77. MarshallOfSound [direct]
  78. miniak [direct]
  79. electron-cation [direct]
  80. new-pr 🌱 [direct]