[Sécurité] decode-uri-component <=0.4.2 via expo-router -> query-string@7 (inatteignable, risque accepté) #120
Labels
No labels
autopilot:pending-human
source:analyste
source:defenseur
source:human
source:medic
status:approved
status:blocked
status:in-progress
status:needs-clarification
status:needs-fix
status:ready
status:review
status:triage
type:bug
type:feature
type:infra
type:refactor
type:schema
type:security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: maximus/simpl-liste#120
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Contexte
npm auditsignaledecode-uri-component <= 0.4.2(GHSA-vcc3-ghjq-m6fr, moderate, DoS par decodage exponentiel d'une entree percent-encodee malformee) par la chaine :expo-router@6.0.23->query-string@7.1.3->decode-uri-component@0.2.2Finding residuel apres #117 / PR #119.
Diagnostic (2026-09-27)
Code vulnerable inatteignable
query-string@7,decode-uri-componentn'est appele que par la fonction internedecode(), utilisee parparse(),parseUrl()et les helpers derives (pick,exclude,stringifyUrl).queryString.stringify()(build/fork/getPathFromState.js:276,build/fork/getPathFromState-forks.js:71), qui encode viastrict-uri-encodeet n'appelle jamaisdecode().queryString.parse()du fork (build/fork/getStateFromPath.js:538) est commente.app/,src/) n'importe niquery-stringnidecode-uri-component.Les deep links et URLs parsees par expo-router ne passent donc pas par le code vulnerable.
Pas d'issue par upgrade
query-string ^7.1.3: 55.0.18 (sdk-55), 56.2.21 (sdk-56), 57.0.23 (sdk-57, latest), 58.0.8 (next).decode-uri-component@0.5.0, seule version corrigee, est ESM-only ("type": "module").query-string@7la charge parrequire(), donc un override casserait le module au chargement.query-string@8+est ESM-only aussi : pas d'override possible cote expo-router.Decision
Risque accepte, issue fermee. Le finding
npm auditreste visible (moderate).Conditions de reouverture
queryString.parse()/parseUrl()(a verifier a chaque bump d'expo-router :grep -rn "queryString\." node_modules/expo-router/build --include=*.js) ;query-stringdirectement.Analyse (/analyze) : la premisse du corps initial ne tient pas sur deux points.
query-string ^7.1.3.queryString.stringify(), qui ne passe jamais pardecode-uri-component. Le seulqueryString.parse()du fork (getStateFromPath.js:538) est commente. Les deep links ne touchent donc pas le code vulnerable.Corps reecrit en consequence, issue fermee en risque accepte.
Corps d origine
Residual finding after #117 / PR #119.
npm auditstill reportsdecode-uri-component <= 0.4.2(GHSA-vcc3-ghjq-m6fr, moderate, DoS via exponential decoding of malformed percent-encoded input) through:expo-router@6.0.23->query-string@7.1.3->decode-uri-component@0.2.2Why it is not fixed by an override
decode-uri-component@0.5.0, which is ESM-only ("type": "module").query-string@7loads it withrequire(), so an override would break expo-router's URL parsing.expo-router@6.0.24(latest 6.0.x) still depends onquery-string ^7.1.3.Way out
Upgrade expo-router to a release that drops
query-string@7(likely comes with an Expo SDK bump). Re-check the dependency chain at the next SDK upgrade.Exposure
Local app, input = deep link / URL strings parsed by expo-router. Impact limited to a hang of the app on a crafted link.
[Sécurité] decode-uri-component <=0.4.2 via expo-router -> query-string@7 (needs SDK upgrade)to [Sécurité] decode-uri-component <=0.4.2 via expo-router -> query-string@7 (inatteignable, risque accepté)