GCWing / GCWing/OpenBitFun

[Security]: generative widget accepts postMessage updates from any window (HTML injection via forged bitfun-widget:update)

Cerrado Apto para principiantes
#2,603 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Rust
Estrellas
2.3k
Forks
231
Merge medio
2 h 49 min
PR fusionados (30 d)
589

Descripción

Summary: The generative widget iframe shell processes `message` events without verifying the sender. Any window that can postMessage into the host page can forge a `bitfun-widget:update` event, causing arbitrary attacker-controlled HTML to be written into the widget document via `setContent`.

Area: Web UI

Reproduction or evidence: `src/web-ui/src/tools/generative-widget/GenerativeWidgetFrame.tsx:862` registers `window.addEventListener('message', ...)` whose handler reads `event.data` and, for `type === 'bitfun-widget:update'`, calls `setContent(String(data.html || ''), Boolean(data.runScripts))` with no `event.source` check — while the reverse (iframe→parent) direction already validates `event.source` against the iframe content window (:921/:922).

Environment: BitFun version/commit 32f2427697ee16f253ee6119860a03255c0b3e47 (origin/main).

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comienza en src/web-ui/src/tools/generative-widget/GenerativeWidgetFrame.tsx alrededor de las líneas 862 y 921-922. Compara el manejador de mensajes entrantes con la validación de origen existente de iframe-to-parent y, después, verifica que las actualizaciones de ventanas no relacionadas no puedan llegar a setContent, mientras que las actualizaciones válidas del widget sigan funcionando. Se considera terminado cuando los mensajes falsificados bitfun-widget:update ya no controlen el HTML del widget.

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

Evaluación

Stack tecnológico
typescript
Área
frontend, security
Tipo de issue
Error
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Activo
Claridad
Bien especificado
Aptitud para principiantes
78/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.