🔒 fix: remove deprecated SystemJS plugin renderer#13305
Conversation
…ution risk The old plugin render system (ui.mode === 'module') that used SystemJS to dynamically load and execute JS from untrusted URLs has been fully retired. Remove SystemJsRender and systemjs dependency entirely. Ref: GHSA-46v7-wvmj-6vf7 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
@ONLY-yours - This PR removes the deprecated SystemJS plugin renderer from the plugin system. Please take a look. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## canary #13305 +/- ##
========================================
Coverage 66.71% 66.72%
========================================
Files 1884 1884
Lines 150871 150871
Branches 15184 14473 -711
========================================
+ Hits 100660 100662 +2
+ Misses 50100 50098 -2
Partials 111 111
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
|
❤️ Great PR @arvinxx ❤️ The growth of project is inseparable from user feedback and contribution, thanks for your contribution! If you are interesting with the lobehub developer community, please join our discord and then dm @arvinxx or @canisminor1990. They will invite you to our private developer channel. We are talking about the lobe-chat development or sharing ai newsletter around the world. |
Summary
ui.mode === 'module') andsystemjsdependency entirelyDetails
The old plugin system used SystemJS to dynamically load and execute JS modules from untrusted URLs via
System.import(url)without any sandbox, domain allowlist, or integrity check. This allowed arbitrary JavaScript execution in the LobeChat origin context, with RCE escalation possible in the Electron desktop app via theelectronAPIIPC bridge.Since no plugins use
ui.mode === 'module'anymore, the entireSystemJsRendercomponent andsystemjsdependency have been removed. Plugin rendering now only goes through the iframe-based renderer.Security advisory: GHSA-46v7-wvmj-6vf7
Test plan
🤖 Generated with Claude Code