Skip to content

release: v0.11.18 — clés computed fail-closed (SB-RCE-2026-01) - #507

Merged
simonLouvet merged 5 commits into
productionfrom
master
Sep 9, 2026
Merged

simonLouvet merged 5 commits into
productionfrom
master

Conversation

@simonLouvet

Copy link
Copy Markdown
Collaborator

Migration master → production : v0.11.18 (fail-closed des clés computed + flux de valeur).

simon louvet and others added 5 commits August 26, 2026 19:46
…2026-01, review 2026-08-26)

Nouvelle review du chercheur : foldStaticValue ne résolvait que 3 types de
nœuds (Literal, TemplateLiteral statique, '+') ; tout autre nœud statiquement
constant était traité comme dynamique et contournait les gardes
FORBIDDEN_PROPERTIES / whitelist. Formes acceptées à tort :
  he[(0,'constructor')]  (séquence)
  he[(false||'constructor')]  (logique)
  he[(1?'constructor':'x')]  (ternaire)
  he[['constructor'][0]]  (index de tableau)
  he[String.fromCharCode(99,111,...)]  (appel)
  _[(0,'template')]('<%= 7*6 %>')({})  (reopen lodash.template)

Correctif (posture fail-closed + flux de valeur) :
- KNOWN_BINDINGS (libs + globals autorisés + new whitelist) : une clé sans
  variable libre est statiquement constante ;
- foldStaticValue étendu (séquence, logique ||/&&/??, ternaire, unaire,
  index/membre de littéraux, tableaux/objets littéraux) ;
- resolveKey : constante → repliée et contrôlée ; constante non résolvable
  (appel, méthode de littéral, ...) → REJETÉE (fail-closed) ; clé à variable
  libre → acceptée (résiduel) MAIS tout sous-chemin atteignant une valeur
  interdite → rejeté ((x?['constructor']:[v])[0], (obj,'constructor')).
- Vérifié : 21 cas du chercheur bloqués, 28 patterns prod OK, 182 tests engine.
…ail-closed

security(eval): clés computed fail-closed + flux de valeur (SB-RCE-2026-01)
@simonLouvet
simonLouvet merged commit 639f0a9 into production Sep 9, 2026
12 of 13 checks passed
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.

1 participant