Unknown · Leafletlayer · CVE-2026-27156
**Nome do Software Vulnerável e Versões Afetadas**
Versões do NiceGUI anteriores à 3.8.0
**Descrição**
As APIs do NiceGUI, incluindo `Element.run method()`, `AgGrid.run grid method()`, `EChart.run chart method()` e outras, utilizavam um fallback `eval()` dentro da função JavaScript `runMethod()`. Isso permitia a execução arbitrária de JavaScript no navegador da vítima quando uma entrada controlada pelo usuário era fornecida como nome do método. Além disso, `Element.run method()` e `Element.get computed prop()` utilizavam interpolação de strings em vez de `json.dumps()` para nomes de métodos/propriedades, permitindo a injeção de aspas para contornar o contexto de string pretendido. Um atacante poderia criar uma URL maliciosa com um payload como parâmetro de consulta e, se o aplicativo passasse esse parâmetro como nome do método para qualquer uma das APIs afetadas, o payload seria enviado ao cliente via WebSocket e executado. Isso poderia levar ao roubo de cookies/tokens, manipulação do DOM e ações realizadas como o usuário vítima. Os métodos afetados incluem: `Element.run method()`, `Element.get computed prop()`, `AgGrid.run grid method()`, `AgGrid.run row method()`, `EChart.run chart method()`, `JsonEditor.run editor method()`, `Xterm.run terminal method()`, `Leaflet.run map method()`, `Leaflet.run layer method()` e `LeafletLayer.run method()`.
**Recomendações**
Atualize para a versão 3.8.0 ou superior do NiceGUI.
Caso a atualização não seja possível imediatamente, utilize `ui.run javascript()` em vez de passar funções JavaScript como nomes de métodos. Por exemplo, substitua `row = await grid.run grid method('g => g.getDisplayedRowAtIndex(0).data')` por `row = await ui.run javascript(f'return getElement({grid.id}).api.getDisplayedRowAtIndex(0).data')`.