lambdaclass / lambdaclass/lambda_compiler_kit
security: deep nesting causes stack overflow in JSON parser
Personne n'a encore pris cette issue.
- Langage dominant
- Lean
- Étoiles
- 2
- Forks
- 1
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
Problem
The JSON parser (parseValue/parseArrayElems/parseObjectElems) is mutually recursive with no depth limit. Deeply nested JSON (e.g., [[[[...10000 levels...]]]]) will exhaust the Lean runtime stack.
This is distinct from the DoS risk in #13 (which is about exponent arithmetic) — this is about recursion depth on the parse stack.
Expected fix
Add a configurable maximum nesting depth to the parser (defaulting to a safe value like 512 or 1024). Return a ParseError.nestingDepthExceeded on overflow.
References
- Related to: #13 (DoS prevention)
- Flagged by AI code review on PR #8
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par lire les fonctions de l’analyseur JSON parseValue, parseArrayElems et parseObjectElems afin de suivre leur récursion mutuelle et la gestion existante de ParseError. Définissez comment la limite de profondeur configurable est transmise et quelle valeur par défaut est appropriée, puis vérifiez qu’une entrée profondément imbriquée renvoie ParseError.nestingDepthExceeded sans épuiser la pile d’exécution.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Domaine
- compilers, security
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100