deps(deps): update dependency @quasar/app-vite to v3 - autoclosed #705
No reviewers
Labels
No labels
accepted
bug
dependencies
docker
documentation
duplicate
enhancement
github-actions
github_actions
good first issue
gradle
hacktoberfest-accepted
help wanted
invalid
javascript
not-an-issue
npm
question
rejected
wontfix
Working on it
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Griefed/ServerPackCreator!705
Loading…
Reference in a new issue
No description provided.
Delete branch "renovate/quasar-app-vite-3.x"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
^2.4.0→^3.0.0Quasar Framework: App Vite SSR and SSG nonce attributes are not safely constrained
CVE-2026-106107 / GHSA-5m6h-8g35-p3m7
More information
Details
Several @quasar/app-vite SSR and SSG renderer paths interpolate
ssrContext.noncedirectly into quoted HTML attributes. An application that derives or overrides the nonce using untrusted data can allow a quote to terminate the nonce attribute and inject additional attributes or markup into generated HTML.Cryptographically generated base64 or base64url nonces are not directly affected because they do not contain HTML attribute delimiters. Exploitation requires an application to place attacker-controlled or otherwise unsafe data in
ssrContext.nonce.The remediation centralizes nonce handling across development SSR/SSG, production SSR, production SSG, critical CSS, store-state scripts, and Vue Devtools. It validates the value as a non-empty base64/base64url CSP nonce and HTML-encodes the attribute value before rendering.
Severity
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:NReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
Quasar Framework: Development TLS private keys are cached with overly permissive filesystem permissions
CVE-2026-106105 / GHSA-fh39-c73x-5pjv
More information
Details
The
@quasar/ssl-certificatedevelopment utility caches a combined PEM containing a generated private key and certificate without explicitly restricting its filesystem permissions. On systems with a typical process umask, the PEM can be readable by other local users. A local attacker with filesystem access could copy and reuse the private key to impersonate a development TLS endpoint in an environment that trusts the certificate.The generated certificate was also unnecessarily CA-capable and included broad key usages beyond its localhost HTTPS purpose. Its IPv6 loopback entry was encoded as a DNS name rather than an IP subject alternative name.
The remediation writes and repairs the cached PEM with owner-only permissions on supported platforms, generates a non-CA server-auth leaf certificate with constrained key usage, corrects the IPv6 loopback SAN, and bases cache expiry on content modification time so permission metadata changes cannot extend the certificate lifetime. This issue does not expose the key remotely by itself; exploitation requires another local user to be able to read the cached PEM file.
Severity
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:NReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
Quasar Framework: App Vite build cleanup can recursively remove unsafe configured output directories
CVE-2026-106109 / GHSA-q9mq-245r-4g93
More information
Details
Summary
@quasar/app-viterecursively removesbuild.distDirbefore producing build artifacts. The configured path was made absolute, but it was not checked before removal. A configuration mistake could therefore target the project root, user home directory, a filesystem root, or another directory outside the project.Details
The build command and mode builders passed the resolved output directory directly to
fs-extrarecursive removal. Existing symlink ancestors were not resolved before deletion either, so a path that appeared to be inside the project could operate on a directory outside it.quasar.configis trusted application code, and no attacker-controlled input reachesbuild.distDirby default. This issue is primarily destructive-build safety hardening. It can become a security boundary when build configuration is generated or influenced by less-trusted automation.Impact
Running a normal Quasar build with an unsafe
build.distDircan delete data accessible to the build user before compilation begins.Remediation
Validate the effective deletion target before every artifact cleanup. Always reject filesystem roots, the user home directory and the project root; resolve existing symlink ancestors; require an explicit
build.allowOutsideProjectDistDiropt-in for external output directories; and log the exact resolved target before removal.Severity
CVSS:4.0/AV:L/AC:H/AT:P/PR:H/UI:A/VC:N/VI:N/VA:H/SC:N/SI:N/SA:NReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
Quasar Framework: SSR/SSG dev error page discloses the full shell environment and its escape is bypassable
CVE-2026-106106 / GHSA-r5mf-4r5x-q78f
More information
Details
Summary
The error page that Quasar CLI shows when an SSR or SSG render throws in development serializes every variable in
process.env, every request header and every cookie into the HTTP response, and the dev server binds0.0.0.0by default. Any host that can reach the port therefore gets the developer's cloud keys, registry tokens and database URLs from a single unauthenticated GET. The same page embeds that data inside a<script>element behind areplaceAll('</script>', ...)guard that is ASCII-case-sensitive and requires a literal>, so</SCRIPT>,</script >and</script/>all escape the element and give script execution in the dev server's origin.Details
renderSSRError()builds the page by splicing a JSON blob into a prebuilt bundle (utils/render-ssr-error/src/index.js):beforeandafterare the two halves of the compiled error-page UI, split inside a<script type="module">element, sodatais emitted as a JS object literal in raw script text. The data itself comes fromutils/render-ssr-error/src/env.js:The page is served by
serve.devError({ err, req })inapp-vite/lib/modes/ssr/ssr-devserver.jsand by the SSG equivalent, which the generated render middleware calls on any render exception. The dev server listens on every interface becauseapp-vite/lib/quasar-config-file.jsoverrides Vite'slocalhostdefault:The escape fails because the HTML tokenizer ends script raw text on
</followed by a case-insensitivescriptfollowed by any of tab, newline, form feed, space,/or>.replaceAllwith a string pattern matches one exact spelling.</SCRIPT>,</ScRiPt>,</script >and</script/>are all untouched and all close the element.JSON.stringifydoes not escape<or>, and cookie values are additionally run throughdecodeURIComponentbefore being placed in the blob, so percent-encoded payloads decode into working markup.The project already implements this correctly elsewhere.
ui/src/plugins/meta/Meta.jsuses a case-insensitive pattern with no trailing>:PoC
Harness that replicates the dev server's error branch using the published
@quasar/render-ssr-error@2.2.3, with two canary values planted in the environment:Disclosure needs no payload at all. A plain
GET /returns a 957 KB page containing both canaries:For the injection, the payload goes in an ordinary request header.
JSON.stringifyescapes"as\", so the handler uses single quotes:Loaded in headless Chromium:
The negative control is the same payload with the one spelling
replaceAllactually matches. Nothing is injected and nothing runs, which isolates the bug to the escape rather than to the surrounding page. Confirming the injection context, a probe header comes back inside the single<script type="module">element:No
Content-Security-Policyis sent with the page.Impact
Exposure of sensitive system information, plus HTML injection into a page that carries it. This is development only, since
serve.devErrordoes not exist in a production build, and it requires the app's SSR render to throw. That is the routine state this page exists to display, and an attacker who can reach the port can simply poll for it.The disclosure is the substantive half and needs nothing but a TCP connection: shell environment, all request headers, all cookies, and ten lines of source around every stack frame. On a developer machine that typically means cloud credentials, npm or GitHub tokens and database connection strings. Because Quasar overrides Vite's
localhostdefault with0.0.0.0, everyone on the same network segment or in a shared container network can ask for it.The injection is best treated as a chained issue on top of that rather than as a drive-by. A raw HTTP client can set the header but only poisons its own page. For the code to run in the developer's browser the payload has to travel with the developer's own request, which in practice means the cookie channel, since cookie values are URL-decoded and any page on a
localhostor127.0.0.1origin can set a cookie that is sent to every port on that host. Cross-originfetchdoes not work: CORS-safelisted headers forbid<and>, and browsers percent-encode them in the URL whilereq.urlis never decoded.Fixing the escape alone leaves the disclosure. Serializing with something that escapes
<, such as theserialize-javascriptalready used correctly inapp-vite/lib/modes/ssr/ssr-utils.js, closes the injection; redacting or omittingprocess.envand cookie values closes the disclosure; defaultingdevServer.hosttolocalhostas Vite does would reduce who can ask.Severity
CVSS:4.0/AV:A/AC:H/AT:P/PR:N/UI:P/VC:H/VI:L/VA:N/SC:H/SI:H/SA:NReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
Release Notes
quasarframework/quasar (@quasar/app-vite)
v3.3.0Compare Source
Security fixes
false) for quasar.config > build > allowOutsideProjectDistDirNew
Other
Donations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If Quasar is useful in your workflow and you want to support ongoing maintenance, please consider the following:
v3.2.0Compare Source
New
Fixes
Donations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If Quasar is useful in your workflow and you want to support ongoing maintenance, please consider the following:
v3.1.0Compare Source
Huge new features
This release feels more like a 4.0 (with no breaking changes) for us rather than simply 3.1, but here we go:
~references relative to the extension package, including dependencies nested within its pnpm dependency treeOther new features
quasar.config > ssroptions:clientSideRenderingRoutes,noPreloadTagRoutes, andextendSSRManifestJsonctx.modetypingserialize-javascriptpackage when needed, providing predictable outputlogger.progress()with an optional{ target?: string; doneAction?: string }parameterFixes
publicPathvueDevtoolstypecapacitor.capacitorCliPreparationParamsconfiguration contractinjectPWAMetaTagswhen provided as a functionbeforePackagingtyperegisterQuasarRuntime()usage and types; it was previously declared as asynchronousdevcommand help, including removal of the unsupported--ideoption and clarification ofquasar run$display_overrideproperty toPwaManifestOptionsNotes on upgrading
If you use
@intlify/unplugin-vue-i18n, update itsssroption so it also recognizes SSG mode:ssr: ctx.mode.ssr || ctx.mode.ssg. This ensures the plugin applies the appropriate server-rendering behavior in both SSR and SSG builds.Donations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If Quasar is useful in your workflow and you want to support ongoing maintenance, please consider the following:
v3.0.1Compare Source
Changes
Donations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:
v3.0.0Compare Source
Bird's eye view on what's new
⚡ Blazing Fast Compilation: We've replaced esbuild with Rolldown for /src-* folders and completely redesigned the build architecture. Build steps are now parallelized across all Quasar modes, resulting in significantly faster speeds and a smaller footprint for your production distributables.
⚙️ Next-Gen Environment Management: We’ve redesigned env file management from the ground up. You will no longer need to restart the dev server when making changes to these files, and you can now use them directly within your quasar.config file too!
🔒 Enhanced Security & Modern Standards: We’ve migrated from
process.envto the modernimport.meta.env(aligning with Vite's native model) with full TypeScript support. A new security layer ensures client-side files only use a configurable prefix for env definitions, preventing potential leaks of sensitive data.📦 Smarter Dependency Isolation: We now have a clear separation of dependencies for each Quasar mode. You can install mode-specific packages directly in their respective /src-* folders. For example, the default Electron app will no longer require dependencies to be installed in its dist folder—only what you explicitly install in /src-electron will be included.
🌍 Redesigned SSR Architecture: SSR mode now features superior support for custom web servers and proper TypeScript integration. When adding SSR, the CLI will prompt you to spawn a preconfigured /src-ssr folder using Hono, Fastify, Express, or Koa (let us know what other out-of-the-box servers you’d like!).
📂 New Server Assets Folder for SSR: We've introduced a /src-ssr/server-assets folder alongside helpful utility functions. This makes it incredibly easy to reference assets (like HTTPS certificates) across dev and production runtimes, eliminating the strict need for an Apache/Nginx wrapper. We've also made the serverless support a breeze.
🚀 Paving the Way for SSG: This new SSR architecture lays the necessary groundwork for us to finally release Static Site Generation (SSG) mode in the future.
🖥️ Revamped Electron Mode: We’ve added lots of new features to make desktop development smoother. Similar to SSR, we've introduced a /src-electron/electron-assets folder. Referencing files from here (or from the /public folder) is now much easier via new utility methods available in both /src-electron and /src.
🛣️ Vue Router: First-class support for the filename-based routing.
🚀 Smarter reloads (when absolutely needed): You'll notice the DX on dev has improved significantly, with even smarter heuristics when changing the quasar.config file or the dotenv files.
🛠️ Modernized Core: The codebase has been updated to take full advantage of Node.js v22+ features, alongside countless other small but significant improvements across all Quasar modes to boost your productivity. The CLI uses significantly less dependencies.
...and sooo many other new features and enhancements!
Upgrade Guide
Please refer to docs for the Upgrade Guide. Read top to bottom first.
Donations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:
v2.6.2Compare Source
Changes
@betasuffixDonations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:
v2.6.1Compare Source
Changes
@quasar/extrasv2 so the package managers won't complain about it.Donations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:
v2.6.0Compare Source
Breaking
We're sorry for this, but you need to lookup
{*path}and replace it with*in your/src-ssrfolder. This is due to reverting back to Express v4, otherwise SSR with non-express server gets broken.Changes
Donations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:
v2.5.4Compare Source
Changes
Donations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:
v2.5.3Compare Source
Changes
Donations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:
v2.5.2Compare Source
Changes
Donations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:
v2.5.1Compare Source
Changes
browsertarget type inBuildTargetOptions(#18248)Donations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:
v2.5.0Compare Source
Important!
We have upgraded to Vite 8, so you might want to check its release notes. Unless you have tampered with advanced rollupOptions (now rolldownOptions) settings, you can safely upgrade. 99.9% of the users won't be affected by this, which is why we have released this as a minor version of q/app-vite.
Also, in order to fully support Vite 8, we are forced to bump up the minimum Node.js version to v22. Since the latest LTS is 24 (as of writing these lines), most you have probably upgraded from Node.js v20 anyway.
We highly recommend updating the build target in your /quasar.config file:
Changes
Donations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:
v2.4.1Compare Source
Changes
Donations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:
Configuration
📅 Schedule: (in timezone Europe/Berlin)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate CLI.
⚠️ Artifact update problem
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:
The artifact failure details are included below:
File name: serverpackcreator-web-frontend/package-lock.json
deps(deps): update dependency @quasar/app-vite to v3to deps(deps): update dependency @quasar/app-vite to v3 - autoclosedPull request closed