CVE-2022-39197
Prioritize patching. It under exploitation confirmed by CISA and has a public proof of concept.
Apply updates per vendor instructions.
Summary
Vulnerabilidade de Cross-Site Scripting (XSS) no Cobalt Strike Teamserver, presente em todas as versões até a 4.7 (inclusive). Um atacante que controla o campo username de um payload/beacon pode injetar HTML/script que é processado pelo teamserver, abrindo caminho para execução de código no lado do operador. Está no catálogo KEV da CISA com exploração confirmada, o que eleva a prioridade mesmo com CVSS moderado (6.1).
Technical detail
A falha (CWE-79, classificada pela CISA também com CWE-20 de validação de entrada insuficiente) está na forma como o Teamserver do Cobalt Strike processa e exibe metadados de configuração do Beacon — especificamente o campo username incorporado no payload. Esse campo é normalmente preenchido automaticamente pelo sistema operacional da máquina comprometida (o usuário sob o qual o Beacon está executando), mas nada impede que um atacante extraia a configuração de um payload existente, edite esse campo manualmente e reinjete a configuração modificada.
Como o teamserver renderiza esse valor em sua interface (provavelmente em logs, listagem de sessões ou console de operador) sem sanitização adequada, uma string malformada contendo HTML/JavaScript é interpretada e executada no contexto da interface do teamserver, e não apenas exibida como texto.
O atacante controla integralmente o conteúdo do campo username em um payload arbitrário — não precisa comprometer uma máquina real para isso, basta ter acesso a um payload gerado (ou a exemplos publicamente disponíveis) e a capacidade de modificar seus bytes de configuração antes de o Beacon se conectar ao teamserver.
How it’s exploited
O vetor exige que o atacante primeiro obtenha ou gere um payload do Cobalt Strike, extraia a configuração embutida e altere o campo username para um valor malformado contendo o payload XSS. Esse payload de configuração modificado então precisa fazer o Beacon se conectar (check-in) a um teamserver, momento em que o teamserver processa e renderiza o campo malicioso.
O pré-requisito prático mais relevante é que o alvo é o operador do teamserver (o red teamer ou o atacante que administra a infraestrutura C2), não uma vítima final da campanha — ou seja, é um ataque de "atacante contra atacante": quem cria/manipula o payload ataca quem opera o servidor que recebe a conexão. Isso é significativo no contexto de teamservers Cobalt Strike crackeados/piratas usados por grupos de crime, onde outro operador ou pesquisador pode injetar um payload malformado para comprometer o console de quem está gerenciando aquela infraestrutura maliciosa.
A interação do usuário (UI:R no vetor CVSS) reflete a necessidade de o operador visualizar a sessão/log onde o campo malformado é renderizado. A CISA descreve o resultado final como possibilidade de execução remota de código, indicando que o XSS pode ser encadeado para ações além da simples injeção de script na interface — não há detalhamento público de exploit completo aqui, apenas o mecanismo confirmado.
Versions
How to protect
Atualizar para a versão 4.7.1 ou posterior do Cobalt Strike, lançada como correção fora do ciclo normal ("out-of-band update") especificamente para este problema. Não há paliativo de configuração documentado nas fontes disponíveis — a correção está no código de sanitização/renderização do teamserver, então versões anteriores a 4.7.1 permanecem expostas independentemente de configuração.
Como controle compensatório, restringir e monitorar quem tem acesso ao teamserver e à revisão de payloads/configurações de Beacon antes de aceitá-los como legítimos reduz a superfície, mas não elimina a falha em si — o ataque ocorre no momento em que o teamserver processa a configuração recebida.
Não há mitigação via WAF aplicável, já que o vetor não é HTTP tradicional voltado a usuários web, mas processamento interno de configuração de Beacon pelo teamserver.
How to detect
Não há assinatura de rede tradicional a procurar, já que o vetor é o conteúdo do campo username dentro da configuração de um Beacon/payload, não tráfego HTTP anômalo isolado. Analistas devem inspecionar configurações extraídas de payloads Cobalt Strike (via ferramentas de parsing de configuração de Beacon) buscando valores de username com caracteres de marcação HTML/JavaScript (``, `script`, event handlers) em vez de nomes de usuário plausíveis do sistema operacional — presença desses padrões é forte indicativo de tentativa de exploração ou de payload malformado propositalmente.