Existe uma vulnerabilidade de execução insegura no campo de cálculo do formulário Bazar (CalcField.php) do YesWiki. O aplicativo tenta sanear fórmulas matemáticas definidas pelo usuário usando uma expressão regular recursiva complexa antes de passar para a função eval() do PHP. Esta implementação é inerentemente deficiente: é vulnerável a Negação de Serviço de Expressão Regular (ReDoS / Stack Overflow) que pode bloquear o servidor, e cria uma arquitetura de alto risco onde qualquer contorção lógica resulta diretamente em execução arbitrária de código PHP. Componente afetado - **Arquivo**: ferramentas/bazar/ campos/CalcField.php - **Metodo**: formatoValoresAntes deSave( $entry) - **Mecanismo Vulnerável:** Combinação de uma validação regal recursiva complexa seguida de eval(). O código tenta implementar uma caixa de areia para operações matemáticas verificando a estrutura da fórmula antes de executá- la:.

``` $regexpParaCheckIfMathFormula = '/^(('. $number. ''''. $funções. '\s*\((? 1 )+\)|\((? 1 )+\)(?:'. $operators. '(? 1 ))?)+$/'; if (preg_match($regexpToCheckIfMathFormula, $formula)) { $formula = preg_replace('!piÃπ!', 'pi()', $formula); tente { eval("\ $value = $formula;"); // LINEA VULNERÁRIA //... ```### Falhas arquitetônicas ** Overflow & ReDoS do PCRE Stack (A Exploitação Imediata):**. A definição de regex depende fortemente de um padrão recursivo (? 1 )+. No motor PHP PCR, padrões recursivos profundamente aninhados são processados na pilha do sistema. Se um atacante introduzir uma fórmula com milhares de parênteses ou grupos repetitivos, o motor irá desencadear um exaustão pcre.recursion_limit (retornando falso ou nulo) ou causar uma falha de segmentação, quebrando instantaneamente o processo PHP (Denial of Service).

**A armadilha "Validação-Antes-Substituição":**. O regex verifica a variável $formula depois de tokenized e reassemblado a string de entrada. Se qualquer função subjacente chamada durante a tokenização (como testEntryValue ou futuras atualizações para getEntryValue) retorna ou vaza um formato de string inesperado, a estrutura de string muda. **Completar a Confiança na Eval():**. Usar eval() como um analisador de matemática significa que o perímetro de segurança do aplicativo depende inteiramente de uma única expressão regular. O histórico mostra que os desinfectantes complexos do regex para avaliação de scripts são constantemente evitados através de sintaxes de borda, truques de codificação de caracteres ou erros do motor do PCR. ** Cenário A: Negação remota de serviço (Crisc de servidor)**. Um atacante com direitos para criar ou editar um formulário Bazar adiciona um campo Calc e injecta uma estrutura matemática recursiva profundamente anidada.

`(((((((((((((((((((((((((((((((((((((((((( 1 + 1 )))))))))))))))))))))))))))))))))))))))))))) `. (Multiplicado por 2000 para 5000 iterações dependendo da configuração do servidor pcre.recursion_limit e pilha). O motor PCRE fica sem memória de pilha, levando a um colapso imediato do trabalhador PHP-FPM ou processo Apache que manipula o pedido, tornando o serviço indisponível. ** Cenário B: Conexão lógica para RCE**. Como eval() executa código PHP bruto, se um atacante tiver conseguido confundir o padrão recursivo ou explorar uma vulnerabilidade não empaquetada na versão específica da biblioteca PCR instalada no sistema operacional host, ele poderá deslizar uma carga útil PHP através do bloco de validação.

` abs( 1 ) + sistema( 'id') `. Se ocorrer um bypass de validação, a string avalia como PHP nativo, concedendo ao atacante os privilégios do usuário www- data (web server), levando a um compromisso completo da máquina. - Confidencialidade: ALT. Os atacantes podem ler arquivos de sistema sensíveis (por exemplo, arquivos de configuração do. env. /etc/passwd). - Integridade: ALTAMENTE. Os atacantes podem modificar arquivos de aplicativos, injetar portas traseiras ou alterar o conteúdo do banco de dados.

- Disponibilidade: HAUTO. Os atacantes podem facilmente derrubar o serviço web através do vetor de falha de redo/segmentação. ### Remediação e Mitigação. - Não use expressões regulares para proteger a eval(). Em vez disso, substitua o bloco de execução por um analisador matemático de síntaxa de abstrato (AST) dedicado e seguro ou um componente de linguagem de expressão que não pode executar o contexto do sistema. Registro de aconselhamento: GHSA- px 5 m- h 76 g- p 7 p 8. Identificadores relacionados: CVE- 2026 - 52778.

Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 09 T 21: 03: 04.000 Z e lista a sua última modificação como 2026 - 07 - 09 T 21: 03: 04.000 Z. Gravidade: Crítico. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.

Software afetado e informações de versão: pacote Packagist yeswiki/ yeswiki — ECOSYSTEM: introduzido 0, corrigido 4.6.6. Classificação e evidência: identificadores de fraqueza CWE- 1333, CWE- 94. O registro contém 5 suporte de referências nestes tipos: WEB, AVISO, EMBALAGAMENTO.