Update vulnerable client-side libraries and resource manifests#19326
Conversation
Upgrade jQuery UI 1.12.1 to 1.14.2, Vue 2.6.14 to 2.7.16, and Monaco Editor 0.46.0 to 0.52.2 to address medium-severity findings from the 2026 penetration test (vulnerable client-side libraries). - jQuery UI 1.14.2: refreshed vendor files, CDN URLs and SRI hashes - Vue 2.7.16: updated npm alias, vendor copy, CDN URLs and SRI hashes - Monaco Editor 0.52.2: upgrades bundled DOMPurify from 3.0.5 to 3.1.7 - Applied KeyCode.KEY_S -> KeyCode.KeyS rename (breaking in Monaco 0.47+) - Fixed Worker URL resolution for multi-tenant paths (prepend origin) - Updated Assets.json copy paths and documentation references Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…rdCMS/OrchardCore into ma/update-client-libraries # Conflicts: # src/OrchardCore.Modules/OrchardCore.Liquid/Assets/package.json # src/OrchardCore.Modules/OrchardCore.Resources/Assets/package.json # src/OrchardCore.Modules/OrchardCore.Resources/ResourceManagementOptionsConfiguration.cs # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/base/browser/ui/codicons/codicon/codicon.ttf # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/base/worker/workerMain.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/abap/abap.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/apex/apex.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/azcli/azcli.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/bat/bat.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/bicep/bicep.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/cameligo/cameligo.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/clojure/clojure.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/coffee/coffee.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/cpp/cpp.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/csharp/csharp.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/csp/csp.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/cypher/cypher.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/dart/dart.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/dockerfile/dockerfile.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/ecl/ecl.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/elixir/elixir.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/flow9/flow9.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/freemarker2/freemarker2.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/fsharp/fsharp.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/go/go.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/graphql/graphql.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/handlebars/handlebars.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/hcl/hcl.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/html/html.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/ini/ini.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/java/java.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/javascript/javascript.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/julia/julia.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/kotlin/kotlin.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/less/less.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/lexon/lexon.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/liquid/liquid.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/lua/lua.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/m3/m3.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/markdown/markdown.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/mdx/mdx.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/mips/mips.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/msdax/msdax.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/mysql/mysql.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/objective-c/objective-c.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/pascal/pascal.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/pascaligo/pascaligo.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/perl/perl.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/pgsql/pgsql.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/php/php.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/pla/pla.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/postiats/postiats.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/powerquery/powerquery.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/powershell/powershell.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/pug/pug.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/python/python.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/qsharp/qsharp.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/r/r.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/razor/razor.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/redis/redis.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/redshift/redshift.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/restructuredtext/restructuredtext.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/ruby/ruby.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/rust/rust.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/sb/sb.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/scala/scala.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/scheme/scheme.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/shell/shell.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/solidity/solidity.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/sophia/sophia.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/sparql/sparql.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/sql/sql.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/st/st.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/swift/swift.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/systemverilog/systemverilog.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/tcl/tcl.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/twig/twig.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/typescript/typescript.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/vb/vb.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/xml/xml.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/basic-languages/yaml/yaml.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/css-CaeNmE3S.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/editor/editor.main.css # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/editor/editor.main.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/language/css/cssMode.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/language/css/cssWorker.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/language/html/htmlMode.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/language/html/htmlWorker.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/language/json/jsonMode.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/language/json/jsonWorker.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/language/typescript/tsMode.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/language/typescript/tsWorker.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/loader.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/protobuf-BmtuEB1A.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/scss-C1cmLt9V.js # src/OrchardCore.Modules/OrchardCore.Resources/wwwroot/Scripts/monaco/vs/wgsl-BhLXMOR0.js # src/docs/reference/modules/Resources/README.md # yarn.lock
|
We need to refactor the Monaco Editor in OC. Probably with ESM. |
@Skrypt I think that would be required to upgrade to |
|
We don't have functional tests much to rely on to make sure these still work. I guess that we need to trust that nothing is broken. Merge it but beware regressions. 😉 |
|
Yeah. I poked around to make sure nothing is broken but feel free to test it as well. |
|
Some time ago I tried to update Monaco to v55, but as far as I remember, I couldn't get our Liquid functionality running correctly as before. So I stopped working on it. |
|
@gvkries provably because of the loader. This PR upgrades it to 0.52.2 which is the last version before they change how the loader work. 0.52.2 is the latest compatible version with out the vulnerability. If you can, please test drive it to see if you can repo the issue you had when you tried to upgrade it then |
|
I think you're right, this version is from before the problematic changes. I just did a quick check and the Liquid Intellisense worked as expected. |
PR description
Summary
Addresses the “Vulnerable Client-Side Library Discovered (Medium)” finding from the 2026 web application penetration test by upgrading the affected client-side libraries and refreshing the related OrchardCore resource metadata.
Changes in this PR
wwwrootoutputWhy Monaco was updated to 0.52.2 instead of 0.55.1
Monaco 0.55.1 is newer, but it introduces a different worker/module architecture that is not compatible with OrchardCore’s current AMD-based Monaco integration. In practice, that caused runtime failures in the admin editor, including worker loading issues and missing language-service handlers.
Monaco 0.52.2 is the highest version that preserves the older AMD-compatible structure OrchardCore expects, while still remediating the security concern that triggered this work.
Specifically:
Resource/CDN updates
This PR also updates the related OrchardCore resource definitions so the library metadata stays accurate:
1.14.22.7.16Monaco is served from local OrchardCore assets rather than a CDN, so there is no Monaco CDN/SRI entry to update in the resource manifest.
Result
This change remediates the vulnerable client-side library finding while preserving working OrchardCore admin editor behavior.
I reviewed comment from #15666 and ensure that there is no console errors on the UI such as Templates editor UI.