Unknown · Swift Prometheus · CVE-2024-28867
**Nome do software vulnerável e versões afetadas**
Versões do Swift Prometheus anteriores à 2.0.0-alpha.2
**Descrição**
O problema ocorre quando valores de string não sanitizados são utilizados em nomes de métricas ou rótulos, permitindo que um invasor envie um parâmetro de consulta `?lang` contendo quebras de linha, `}` ou caracteres semelhantes. Isso pode levar o invasor a assumir o controle do formato exportado, incluindo a criação de um número ilimitado de métricas armazenadas, o aumento do uso de memória do servidor ou a geração de métricas “falsas”. Os desenvolvedores devem validar as entradas do usuário antes de usá-las como nomes de métricas, nomes de rótulos ou valores para evitar tais ataques.
**Recomendações**
Para versões anteriores à 2.0.0-alpha.2, atualize para a versão 2.0.0-alpha.2 ou posterior para corrigir a vulnerabilidade. Como solução alternativa temporária, considere validar valores de rótulos e nomes de métricas para evitar entradas maliciosas. Os desenvolvedores podem configurar o `PrometheusSanitizer` para aplicar uma lógica de validação personalizada. Por exemplo, crie um sanitizador personalizado:
```swift
let mySanitizer = PrometheusSanitizer { metricName, labels in
// ... sua lógica aqui ...
(metricName, labels)
}
```
Em seguida, use esse sanitizador ao criar um `PrometheusCollectorRegistry`:
```swift
let registry = PrometheusCollectorRegistry(sanitizer: mySanitizer)
```