a2ui-project / a2ui-project/a2ui

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

Cerrado
#2,299 2 comentarios 0 reacciones 1 asignado Reclamado por @Varun-S10 Ver en GitHub
P2 status: first-line-handled status: needs review type: bug
Lenguaje dominante
TypeScript
Estrellas
16.4k
Forks
1.3k
Merge medio
3 d 15 h
PR fusionados (30 d)
134

Descripción

# 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.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

El problema se encuentra en la ruta de lectura del procesador de modelos v0_8, específicamente en `model-processor.ts`, en las líneas 356-377. Empieza examinando cómo `current[segment]` resuelve las propiedades. Es probable que la corrección implique usar `Object.prototype.hasOwnProperty` para comprobar que las propiedades sean propias antes de acceder a ellas, o cambiar a un almacenamiento basado en Map coherente con la ruta de escritura. Ejecuta las pruebas existentes para asegurarte de que la corrección no rompa la funcionalidad existente y verifica que las propiedades heredadas, como `toString`, ya no sean accesibles mediante rutas proporcionadas por el agente.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
typescript
Área
security
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Activo
Claridad
Bien especificado
Aptitud para principiantes
65/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.