a2ui-project / a2ui-project/a2ui
[BUG]: v0_8 read path resolves JSON pointers through ordinary-object prototype chains
- Langage dominant
- TypeScript
- Étoiles
- 16.4k
- Forks
- 1.3k
- Merge moyen
- 3 j 15 h
- PR mergées (30 j)
- 134
Description
# v0_8 read path resolves JSON pointers through ordinary-object prototype chains
Repository: https://github.com/a2ui-project/a2ui
Affected: `@a2ui/web_core` v0_8 processing
CWE: CWE-200 (Exposure of Sensitive Information — read-path traversal)
## Summary
The v0_8 model processor resolves JSON Pointer reads by walking plain objects (`current[segment]`, `model-processor.ts:356-377`). Properties inherited through the prototype chain (e.g. `Object.prototype` built-ins) are therefore reachable by agent-supplied paths.
Notes on scope:
- The v0_8 **write** path is Map-based and unaffected.
- The v0_9 path rejects dangerous keys (`__proto__`/`constructor`/`prototype`) after unescaping.
## Impact
Agent-supplied paths may resolve to inherited values (e.g. a `toString` function) instead of data-model values, causing unexpected types to flow into bindings and expression evaluation. No modification/write primitive was found — this is read-path behavior only.
## Suggested remediation
Resolve reads with `Object.prototype.hasOwnProperty` checks, or store values in Maps consistent with the write path.
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Le problème se situe dans le chemin de lecture du processeur de modèles v0_8, plus précisément dans `model-processor.ts`, aux lignes 356-377. Commencez par examiner la manière dont `current[segment]` résout les propriétés. La correction impliquera probablement d'utiliser `Object.prototype.hasOwnProperty` pour vérifier qu'il s'agit de propriétés propres avant d'y accéder, ou de passer à un stockage basé sur Map cohérent avec le chemin d'écriture. Exécutez les tests existants pour vous assurer que la correction ne casse pas les fonctionnalités existantes, et vérifiez que les propriétés héritées telles que `toString` ne sont plus accessibles via des chemins fournis par l'agent.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- security
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- Active
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 65/100