Bug 2527907 - CVE-2026-82417 nextcloud: qs: Denial of Service via improper validation in stringify function [epel-all]
Summary: CVE-2026-82417 nextcloud: qs: Denial of Service via improper validation in st...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora EPEL
Classification: Fedora
Component: nextcloud
Version: epel10
Hardware: Unspecified
OS: Unspecified
high
high
Target Milestone: ---
Assignee: Andrew Bauer
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard: {"flaws": ["5249b05d-adab-442e-b122-f...
Depends On:
Blocks: CVE-2026-82417
TreeView+ depends on / blocked
 
Reported: 2026-09-03 10:15 UTC by jkelly
Modified: 2026-09-28 01:17 UTC (History)
2 users (show)

Fixed In Version: nextcloud-34.0.4-1.fc45 nextcloud-34.0.4-1.el10_4 nextcloud-34.0.4-1.el10_2 nextcloud-34.0.4-1.el10_3 nextcloud-34.0.4-1.fc44 nextcloud-34.0.4-1.fc43
Clone Of:
Environment:
Last Closed: 2026-09-28 00:16:08 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description jkelly 2026-09-03 10:15:36 UTC
Disclaimer: Community trackers are created by Red Hat Product Security team on a best effort basis. Package maintainers are required to ascertain if the flaw indeed affects their package, before starting the update process.

### Summary



`qs.stringify` throws a `TypeError` when it serializes an object whose own `constructor` property has a truthy, non-callable `isBuffer` member. `utils.isBuffer` duck-types buffers by calling `obj.constructor.isBuffer(obj)` after checking only that the property is truthy, so a value such as `{ constructor: { isBuffer: "x" } }` makes the call throw `TypeError: obj.constructor.isBuffer is not a function`.



### Details



`lib/stringify.js:127` calls `utils.isBuffer` on every non-primitive value it serializes. `utils.isBuffer` (`lib/utils.js:332`) reads `obj.constructor.isBuffer` and invokes it without verifying that it is a function. `constructor` and `isBuffer` are ordinary property names, so any object carrying them as own properties reaches the unchecked call.



Such an object can be built from untrusted input. `qs.parse("x[constructor][isBuffer]=y", { plainObjects: true })` or `{ allowPrototypes: true }` keeps the `constructor` key as an own property (the default parse options drop it), and `JSON.parse("{\"a\":{\"constructor\":{\"isBuffer\":\"x\"}}}")` produces the same shape with no qs option involved. Express 4 with its default `query parser` setting and body-parser with `extended: true` both call `qs.parse` with `allowPrototypes: true`, so on those stacks `req.query` and `req.body` can carry the shape directly.



#### PoC



```js



var qs = require("qs");



qs.stringify(qs.parse("x[constructor][isBuffer]=y", { plainObjects: true }));



qs.stringify(JSON.parse("{\"a\":{\"constructor\":{\"isBuffer\":\"x\"}}}"));



// TypeError: obj.constructor.isBuffer is not a function



//     at Object.isBuffer (lib/utils.js:332:78)



//     at stringify (lib/stringify.js:127:45)



```



#### Fix



`lib/utils.js`, applied in e83d321 on `main` and released as v6.16.0:



```diff



- return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));



+ return !!(obj.constructor && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj));



```



Real `Buffer`, `safer-buffer`, and browserify `buffer` polyfill instances serialize exactly as before; only the throw is removed.



### Affected versions



`>=2.2.5 <6.16.0`, fixed in v6.16.0.



The unguarded duck-type was introduced in 3768a75 and first shipped in v2.2.5 (September 2014). v2.2.4 and earlier used `Buffer.isBuffer` and are not affected. Every release from v2.2.5 through v6.15.3 contains the unguarded call.



### Impact



An unauthenticated request can make any code path that re-serializes attacker-influenced data with `qs.stringify` (for example, rebuilding a query string from `req.query` for a redirect or an upstream request, or serializing a parsed JSON body) throw synchronously. In a typical Node.js HTTP framework the throw is caught by the framework error boundary and the affected request returns a 500; the process survives and other requests are unaffected. Where the call runs outside an error boundary, such as an `async` Express 4 handler (where the throw becomes an unhandled promise rejection) or a background job, the process exits, so the impact in that case depends on the application error handling rather than on qs.

Comment 1 Fedora Update System 2026-09-19 20:08:46 UTC
FEDORA-2026-5c1bbb46c3 (nextcloud-34.0.4-1.fc45) has been submitted as an update to Fedora 45.
https://bodhi.fedoraproject.org/updates/FEDORA-2026-5c1bbb46c3

Comment 2 Fedora Update System 2026-09-19 20:09:18 UTC
FEDORA-2026-362f1943c8 (nextcloud-34.0.4-1.fc44) has been submitted as an update to Fedora 44.
https://bodhi.fedoraproject.org/updates/FEDORA-2026-362f1943c8

Comment 3 Fedora Update System 2026-09-19 20:10:16 UTC
FEDORA-2026-c495e95154 (nextcloud-34.0.4-1.fc43) has been submitted as an update to Fedora 43.
https://bodhi.fedoraproject.org/updates/FEDORA-2026-c495e95154

Comment 4 Fedora Update System 2026-09-19 20:10:57 UTC
FEDORA-EPEL-2026-9f20c01514 (nextcloud-34.0.4-1.el10_4) has been submitted as an update to Fedora EPEL 10.4.
https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2026-9f20c01514

Comment 5 Fedora Update System 2026-09-19 20:19:06 UTC
FEDORA-EPEL-2026-d1bff6d983 (nextcloud-34.0.4-1.el10_2) has been submitted as an update to Fedora EPEL 10.2.
https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2026-d1bff6d983

Comment 6 Fedora Update System 2026-09-19 20:19:06 UTC
FEDORA-EPEL-2026-31615b47ef (nextcloud-34.0.4-1.el10_3) has been submitted as an update to Fedora EPEL 10.3.
https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2026-31615b47ef

Comment 7 Fedora Update System 2026-09-20 01:41:52 UTC
FEDORA-2026-c495e95154 has been pushed to the Fedora 43 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2026-c495e95154`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2026-c495e95154

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 8 Fedora Update System 2026-09-20 01:47:47 UTC
FEDORA-EPEL-2026-9f20c01514 has been pushed to the Fedora EPEL 10.4 testing repository.

You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2026-9f20c01514

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 9 Fedora Update System 2026-09-20 02:02:01 UTC
FEDORA-2026-362f1943c8 has been pushed to the Fedora 44 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2026-362f1943c8`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2026-362f1943c8

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 10 Fedora Update System 2026-09-20 02:02:43 UTC
FEDORA-EPEL-2026-d1bff6d983 has been pushed to the Fedora EPEL 10.2 testing repository.

You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2026-d1bff6d983

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 11 Fedora Update System 2026-09-20 02:07:56 UTC
FEDORA-EPEL-2026-31615b47ef has been pushed to the Fedora EPEL 10.3 testing repository.

You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2026-31615b47ef

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 12 Fedora Update System 2026-09-20 02:24:43 UTC
FEDORA-2026-5c1bbb46c3 has been pushed to the Fedora 45 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2026-5c1bbb46c3`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2026-5c1bbb46c3

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 13 Fedora Update System 2026-09-28 00:16:08 UTC
FEDORA-2026-5c1bbb46c3 (nextcloud-34.0.4-1.fc45) has been pushed to the Fedora 45 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 14 Fedora Update System 2026-09-28 00:30:36 UTC
FEDORA-EPEL-2026-9f20c01514 (nextcloud-34.0.4-1.el10_4) has been pushed to the Fedora EPEL 10.4 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 15 Fedora Update System 2026-09-28 00:53:02 UTC
FEDORA-EPEL-2026-d1bff6d983 (nextcloud-34.0.4-1.el10_2) has been pushed to the Fedora EPEL 10.2 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 16 Fedora Update System 2026-09-28 01:11:20 UTC
FEDORA-EPEL-2026-31615b47ef (nextcloud-34.0.4-1.el10_3) has been pushed to the Fedora EPEL 10.3 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 17 Fedora Update System 2026-09-28 01:13:28 UTC
FEDORA-2026-362f1943c8 (nextcloud-34.0.4-1.fc44) has been pushed to the Fedora 44 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 18 Fedora Update System 2026-09-28 01:17:05 UTC
FEDORA-2026-c495e95154 (nextcloud-34.0.4-1.fc43) has been pushed to the Fedora 43 stable repository.
If problem still persists, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.