Skip to content

chore(deps): update dependency quasar to v2.22.0 [security] - #193

Open
renovate[bot] wants to merge 1 commit into
developfrom
renovate/npm-quasar-vulnerability
Open

chore(deps): update dependency quasar to v2.22.0 [security]#193
renovate[bot] wants to merge 1 commit into
developfrom
renovate/npm-quasar-vulnerability

Conversation

@renovate

@renovate renovate Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
quasar (source) 2.18.52.22.0 age confidence

Quasar: Prototype pollution in the extend() utility

CVE-2026-73647 / GHSA-3r53-75j5-3g7j

More information

Details

Summary

quasar@2.20.1, the latest published version at the time of testing, appears to be vulnerable to prototype pollution through the public extend() utility exported from the package root.

When extend(true, target, source) is used for a deep merge, attacker-controlled object keys are recursively copied into the target object without blocking prototype-pollution primitives such as __proto__, constructor, or prototype.

This can allow attacker-controlled properties to be written to Object.prototype.

Details

Affected source:

src/utils/extend/extend.js

Distributed files include:

dist/quasar.server.prod.js
dist/quasar.server.prod.cjs
dist/quasar.client.js

The package root publicly exports extend. During deep merge, source object keys are recursively assigned into the target object. If the source object contains an own __proto__ property, the merge can descend into the prototype object and assign attacker-controlled properties onto Object.prototype.

PoC
rm -rf /tmp/quasar-extend-pp-poc
mkdir /tmp/quasar-extend-pp-poc
cd /tmp/quasar-extend-pp-poc

npm init -y >/dev/null
npm install quasar@2.20.1 vue@3.5.31 >/dev/null

cat > hack.mjs <<'JS'
import { extend } from 'quasar';

delete Object.prototype.polluted;

extend(true, {}, {
  ['__proto__']: {
    polluted: 'yes'
  }
});

console.log(({}).polluted);

delete Object.prototype.polluted;
JS

node ./hack.mjs

Observed output:

yes

Expected output:

undefined
Impact

This is a prototype pollution vulnerability.

If an application passes user-controlled or partially user-controlled objects into extend(true, ...), an attacker may be able to pollute Object.prototype in the same JavaScript process.

Depending on how the polluted property is later consumed, this may lead to logic bypass, unsafe default option injection, denial of service, or other application-specific security impact.

Suggested Fix

Reject or safely ignore dangerous keys before assignment, including:

__proto__
prototype
constructor

The merge implementation should also avoid descending into prototype-related properties during recursive merge.

Severity

  • CVSS Score: 5.6 / 10 (Medium)
  • Vector String: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

quasarframework/quasar (quasar)

v2.22.0

Compare Source

[!IMPORTANT]
If you will be using the new SSG mode with Quasar CLI, you will need to upgrade to this version.

Security fixes

  • fix(ui): prevent extend prototype pollution
  • fix(ui): secure SSR meta serialization

Other fixes

  • fix(ui): align runtime public surface behavior (#​18379)
  • fix(ui): clean up deferred lifecycle work (#​18383)
  • fix(ui): align form control behavior (#​18385)
  • fix(ui): improve SSR hydration safety (#​18382)
  • fix(ui): harden overlay focus lifecycle (#​18381)
  • fix(ui): improve keyboard accessibility (#​18380)
  • fix(ui): harden QTable interactions (#​18386)
  • fix(ui): align RTL interaction behavior (#​18384)
  • fix(QSlideItem): preserve pending action side (#​18403)
  • fix(QDialog): restore scroll after URL metadata changes (#​18406)
  • fix(QInput): preserve focused value with v-model.trim (#​18402)
  • fix(QCarousel): initialize navigation state on render (#​18401)
  • fix(ui): harden QUploader state handling (#​18397)

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:

v2.21.4

Compare Source

Changes
  • fix(ui): table pagination range labels for LTR languages (#​18378)
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.21.3

Compare Source

Changes

  • fix(ui): HasSsrOrSsg defaults to SSR branch for non-SSR apps (#​18356)

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.21.2

Compare Source

Changes

  • feat(ui): prepare types for upcoming SSG mode

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.21.1

Compare Source

Changes

  • fix+perf(QDialog): css instead of js approach to fix page scroll loss functionality after closing QDialog in Safari (macOS) #​18275

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.21.0

Compare Source

Changes

  • feat(QTable): export getCellValue(colName,row) on the instance
  • feat(lang): new language pack "lb"
  • feat(ui): integrate lang audit into the build system
  • feat(ui): integrate icon set audit into build system
  • feat(ui): json api build system -> best effort method to catch undeclared component methods
  • fix(ui): icon-set type has non-existent svg-mdi-v3 & svg-mdi-v4
  • fix(ui): add missing type for clone() util
  • fix(QTooltip): guard MutationObserver against detached innerRef (#​18316)
  • fix(ui): Audit and align UI language packs (#​18339)
  • fix(lang): az-Latn -> lang native name
  • fix(lang): eo -> tree.noData should be tree.noNodes
  • fix(lang): fi -> unused pullToRefresh definitions
  • fix(lang): fr -> tree.noData should be tree.noNodes
  • fix(lang): hi -> lang native name
  • fix(lang): it -> tree.noData should be tree.noNodes
  • fix(lang): kur-CKB -> unused date.singleDay
  • fix(lang): lt -> lang native name
  • fix(lang): ms-MY -> lang native name
  • fix(lang): ms -> date.months translation
  • fix(lang): ug -> missing pagination
  • fix(lang): correct Norwegian (nb-NO) table.selectedRecords + minor fixes (#​18334)
  • fix(lang): lv -> date.months translation
  • fix(lang): ms-MY -> date.headerTitle and date.firstDayOfWeek
  • fix(lang): my -> wrongly being used for Malaysia; translated to actual lang
  • fix(lang): uk -> date.days translation
  • fix(lang): correct Japanese (ja) mistranslations in editor/tree labels (#​18336)
  • fix(iconSet): themify -> remove unused carousel.thumbnails

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.20.3

Compare Source

Changes

  • fix(TouchPan): glitch in getChanges() which breaks js flow #​18337

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.20.2

Compare Source

Changes

  • fix(QDrawer): swipe-to-open gesture broken on mobile (onOpenPan guard condition inverted) #​18331
  • fix(portal): avoid focus tampering while in the wait state #​18333
  • feat(ui): small tweaks to further modernize code
  • feat(ui): re-organize UMD

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.20.1

Compare Source

Fixes
  • fix(QInput): type="number" label overlap #​18326
  • fix(QDialog): accessibility warning on backdrop #​18314
  • fix(portal): do not allow focus on any element while in the wait state
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.20.0

Compare Source

Quasar UI is now much smaller in size and runs faster! We are bumping the minor version because this release is significant in many areas.

Changes

  • feat+perf(ui): modernize codebase
  • feat+fix+perf(runSequentialPromises): modernize; avoid crashing when passing non-async fn; avoid setTimeout() which adds unnecessary delays (they add up)
  • feat(Cookies): modernize; use MaxAge instead of expires
  • feat+perf(uid): modernize function
  • fix(QPopupProxy): should not emit update:modelValue due to useAnchor()
  • fix(TouchSwipe): account for UMD too where modifiers will be lowercased to work for mouseCapture
  • fix(Ripple): correctly destroy ctx
  • fix(ui): QDrawer hideOnRouteChange logic
  • feat(ui): remove legacy "vetur" step from the build
  • refactor(ui): improve the build system; better leverage of the rolldown API
  • fix(frameDebounce): calling context of execution function
  • fix(ui): add missing HasElectron type

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.19.3

Compare Source

Changes

  • feat(ui): new icon sets -> Fontawesome v7 (& svg, & pro variants), Svg Ionicons v7 & v8
  • feat(ui): decouple q/extras types from the UI package
  • feat(ui): update Italian translations (#​18284)
  • fix(useInterval): remove unused argument passed to removeInterval (fixes #​18273) (#​18274)
  • fix(ui): UMD prod -> isRuntimeSsrPreHydration is undefined in setup() due to bug in rolldown #​18272

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.19.2

Compare Source

Changes

  • fix(QIcon): error with material-icons-outlined #​18267

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.19.1

Compare Source

Changes

  • fix(ui): QInput/QSelect placeholder visible behind label when field is empty #​18265

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.19.0

Compare Source

We're bumping the minor version without new features to signal our important shift to the Oxc+Rolldown ecosystem for our internal build system (which also generates smaller Quasar UI dist files).

For the standalone/umd version, we're now targetting the "baseline-widely-available" agreed minimum versions (chrome/edge 111, firefox 114, safari/ios 16.4) and Node.js v20 (already required by q/app-vite [v22 for this one] & q/app-webpack).

Changes

  • feat(ui): [internal build system] replace: esbuild -> rolldown, cssnano -> lightningcss, eslint -> oxfmt & oxlint
  • fix(QEditor): save selection range before execCommand('createLink') t… (#​18249)
  • fix(ui): date/getMinDate & date/getMaxDate should return Date instead of number (#​18261)

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.18.7

Compare Source

Changes

  • perf(ui): runSequentialPromise() -> never start more threads than supplied number of promises
  • fix(QBtnDropdown): API -> description for 'cover' property (#​18208)
  • fix(ui): openURL() should not invoke rejectFn when noopener is set (#​18221) (#​18229)

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.18.6

Compare Source

Changes

  • fix(ui): threadsNumber not working correctly for runSequentialPromises() util

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/Paris)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants