lambdaclass / lambdaclass/lambda_compiler_kit

security: deep nesting causes stack overflow in JSON parser

Ouverte
#30 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. 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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.