a2ui-project / a2ui-project/a2ui

[BUG]: v0_8 read path resolves JSON pointers through ordinary-object prototype chains

Fermée
#2,299 2 commentaires 0 réactions 1 personne assignée Réclamée par @Varun-S10 Voir sur GitHub
P2 status: first-line-handled status: needs review type: bug
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

Recevez les nouvelles issues par e-mail

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