Fix decode-uri-component DoS (CVE-2026-45822) by dropping query-string
Maintainers usually reply within 1 day
Nobody has claimed this yet.
- #11387 by @bipul724 — closed without merging
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 68/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- react, typescript
Research direction
Start with the internal query-string uses in fetch.ts, useListParams, and useRecordFromLocation, then inspect how fetchUtils.queryParameters is exposed. Replace those uses with the proposed native URLSearchParams-based helper while checking the existing default output and CJS build constraints. Done means the vulnerable dependency tree is removed and query output remains byte-for-byte identical; also verify the impact of dropping the undocumented options argument.
Written by the indexing model from the issue text.
Description
Is your feature request related to a problem? Please describe.
ra-core depends on query-string@^7.1.3, which pulls [email protected], affected by GHSA-vcc3-ghjq-m6fr / CVE-2026-45822 (moderate DoS via malformed percent-encoded input, reachable through URL query parsing). The only patched release is 0.5.0.
Describe the solution you'd like
Remove query-string and replace its internal uses (stringify in fetch.ts, parse in useListParams / useRecordFromLocation) with a small native URLSearchParams-based helper. This drops decode-uri-component (and filter-obj, split-on-first, strict-uri-encode) from the install tree with no ESM/CJS problems, and default output stays byte-for-byte identical.
Describe alternatives you've considered
- Bump
query-stringto 9.5.x: the only releases depending on patcheddecode-uri-component@^0.5.0, butquery-string8+ is ESM-only (type: module), whilera-coreships a CJS build (require→dist/index.cjsdoesrequire("query-string")). Breaking for CJS/Node/Jest consumers. - Override just
decode-uri-component: wouldn't help consumers either.resolutions/overridesonly apply to the project that declares them, so an entry in react-admin's repo would fix its own install but consumers would still resolve the vulnerable version. And it doesn't work mechanically anyway, since the patched version is ESM-only and can't berequired byquery-string@7.
Additional context
The native replacement would drop the optional, undocumented StringifyOptions second argument of fetchUtils.queryParameters (currently an alias for query-string's stringify). It isn't used with options anywhere in the repo and isn't documented, but it is technically a public API change.
Would you accept that as part of this security fix in a minor/patch release, or would you prefer to hold it for a major? Happy to open the PR either way.
- Dominant language
- TypeScript
- Stars
- 27k
- Forks
- 5.5k
- Avg merge
- 1d 3m
- Merged PRs (30d)
- 32
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from marmelab/react-admin
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
marmelab/react-admin#11431 ·
Maintainers usually reply within 1 day
-
Pagination: page button aria-labels are not translated on small screensPossibly taken @Singmin claimed this 1 day ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
marmelab/react-admin#11427 ·
Maintainers usually reply within 1 day
-
Add emptyText property to SelectArrayInputPossibly taken @kwitykwity claimed this 59 days ago. Openenhancement good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
marmelab/react-admin#10454 · 7 comments ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 Over a week Newbie friendliness 38/100
marmelab/react-admin#11426 · 1 reaction ·
Maintainers usually reply within 1 day
-
ra-data-graphql-simple: outdated graphql-ast-types-browser dependency causes npm peer warningsMay be free again @bipul724 claimed this 12 days ago, and no pull request is open. Open
Difficulty 4/5 3-5 days Newbie friendliness 25/100
marmelab/react-admin#11395 · 1 comment ·
Maintainers usually reply within 1 day
All issues in marmelab/react-admin
Similar issues
-
fix(worker): keep normal prepare waiting states failure-freePossibly taken @LichKing-2234 claimed this today. Openagent:codex priority:P1
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
AgoraIO-Extensions/agent-infra#3745 ·
Maintainers usually reply within 1 day
-
The five-line work window can drop its oldest line: the per-line byte share ignores the JSON framingPossibly taken @Eapp1e claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
makecindy/cindy#7973 · 1 comment ·
Maintainers usually reply within 1 day
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulty 1/5 Under an hour Newbie friendliness 78/100
lingdojo/kana-dojo#33337 · 1 comment · 5 reactions ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
code-yeongyu/senpi#4917 · 1 comment ·
Maintainers usually reply within 1 day