Skip to main content
Blog
Blog security

Como o CTEM se parece na camada do navegador: um script de terceiro, cinco achados

Uma analise ao vivo de um widget da Skeepers em um grande banco internacional encontrou um cookie de 360 dias em subdominios de autenticacao, uma lacuna de CSP e um sub-script controlado por servidor. E assim que o CTEM se aplica a camada do navegador.

Apr 27, 2026 15 min read
Mike Kutlu
Mike Kutlu Author
Como o CTEM se parece na camada do navegador: um script de terceiro, cinco achados

Como o CTEM se parece na camada do navegador: um script de terceiro, cinco achados

Resposta rapida: Continuous Threat Exposure Management (CTEM), o framework definido pela Gartner para reducao continua de exposicao, quebra na camada do navegador na maioria dos programas empresariais. A analise ao vivo da c/side sobre um unico widget de feedback da Skeepers em um grande banco internacional de varejo revelou dois achados altos e tres medios, incluindo um sub-script controlado por servidor ausente da Content Security Policy e um cookie de rastreamento de 360 dias com escopo no subdominio de autenticacao do banco, apesar de zero hits anteriores em bases de ameacas. Este artigo mapeia cada achado para as cinco etapas do CTEM e mostra por que as clausulas PCI DSS 4.0.1 6.4.3 e 11.6.1 exigem mais do que um inventario de scripts.

Um grande banco internacional de varejo carrega um widget de feedback de clientes em seu site principal. O widget define um cookie de rastreamento de 360 dias com escopo em todo o dominio do banco, incluindo o subdominio de autenticacao. Ele injeta dinamicamente um sub-script cujo nome de arquivo e decidido pelo servidor do fornecedor em runtime, e esse sub-script nao esta na Content Security Policy do banco. As paginas de login nao possuem CSP.

Nada disso e hipotetico. Foi o que a c/side encontrou em uma analise profunda de um script Skeepers / MyFeelBack executando em uma propriedade bancaria real.

Este artigo usa esse caso real, anonimizado e com nomes de fornecedores preservados, para mostrar como o Continuous Threat Exposure Management (CTEM) se parece quando e realmente aplicado a camada do navegador, e onde a maioria dos programas deixa o ciclo aberto.

TL;DR

  • CTEM, o framework da Gartner para tratar exposicao como um ciclo continuo, tem cinco etapas: escopo, descoberta, priorizacao, validacao e mobilizacao. A maioria dos programas cobre as duas primeiras e para no navegador.
  • Uma analise ao vivo de um unico widget Skeepers em um banco internacional revelou dois achados HIGH e tres MEDIUM, incluindo um sub-script controlado por servidor fora da allowlist de CSP.
  • As paginas de autenticacao do banco nao tinham cabecalho CSP, em aparente conflito com a clausula PCI DSS 4.0.1 6.4.3.
  • Um cookie de rastreamento de 360 dias tinha escopo em todo o dominio bancario e acompanhava os fluxos de login.
  • A cadeia mediana de inclusao de terceiros na web moderna tem tres niveis de profundidade, com profundidade maxima observada de 2.285 (Web Almanac 2025).
  • Atividades de Magecart e skimmers comprometeram mais de 23 milhoes de transacoes online em 2025 (Recorded Future via Mastercard).
  • Visibilidade sem enforcement e documentacao, nao protecao.

O que e CTEM, e onde ele costuma quebrar?

CTEM e o framework da Gartner para tratar exposicao como um ciclo continuo em cinco etapas: escopo, descoberta, priorizacao, validacao e mobilizacao. A ideia do ciclo e que a exposicao muda constantemente, entao a resposta tambem precisa ser continua.

A maioria dos programas de seguranca fez progresso real nas tres primeiras etapas para ativos tradicionais. Configuracoes cloud sao escaneadas. Espalhamento de identidades e mapeado. Vulnerabilidades recebem pontuacao.

Depois o ciclo quebra na validacao e na mobilizacao para qualquer coisa que execute no navegador.

CTEM do navegador vs CTEM cloud

Etapa CTEMCloud e identidadeCamada do navegador
EscopoMaduroFrequentemente ignorado
DescobertaFerramentas fortesParcial, principalmente via tag managers
PriorizacaoCom score de riscoRaramente pontuada
ValidacaoPentests, BASQuase nunca testada
MobilizacaoCorrigir, isolar, revogarEnviar email ao time de marketing

Exposicao no navegador nao e mobilizada porque a equipe de seguranca normalmente nao consegue mobiliza-la. Ela pode ver um script. Pode abrir um ticket. Nao consegue impedir que o script execute no proximo carregamento de pagina.

Essa e a lacuna. O passo a passo abaixo mostra como essa lacuna aparece em producao.

Estudo de caso: um script, cinco achados relevantes para CTEM

O script em questao e o loader principal do widget de feedback de clientes da Skeepers, antes MyFeelBack. Ele e hospedado em cdnactor.myfeelback.com e carregado nas paginas gerais do site principal de um banco internacional de varejo.

Ele nao e malicioso. Nao houve hits YARA, entradas em bases de ameacas nem alertas de analise estatica. Esse e o ponto. A maior parte da exposicao no navegador nao vem de atores obviamente ruins. Vem de terceiros aprovados e contratados cujo comportamento ninguem governa ativamente.

Achado 1: a allowlist de CSP esta incompleta

As paginas gerais do banco enviam uma Content Security Policy que permite *.myfeelback.com. Ate ai, normal.

Mas o loader da Skeepers injeta em runtime um sub-script a partir de room.cxr.skeepers.io, folhas de estilo de actor.cxr.skeepers.io e uma chamada GeoIP para um endpoint AWS Lambda em c7hn3ry3r4.execute-api.us-east-1.amazonaws.com. Nenhum desses dominios esta no CSP. Portanto, o widget esta parcialmente quebrado em producao, ou o CSP esta sendo contornado de formas que a equipe de seguranca nao autorizou.

Esse e o tipo de divergencia que uma revisao unica de fornecedor nunca captura. O script entrega uma URL *.myfeelback.com no primeiro dia. O comportamento runtime puxa de *.cxr.skeepers.io seis meses depois, apos um rebrand corporativo. Descoberta em nivel CTEM precisa seguir chamadas reais em runtime, nao o contrato.

Achado 2: um sub-script controlado por servidor com hash movel

O loader constroi em runtime uma URL assim:

https://room.cxr.skeepers.io/lib/frontend/handy/js/libraries/{themeDeployment}-libraries.js

A parte {themeDeployment} e decidida pelo servidor do fornecedor. O hash do loader fica estavel. O hash do que ele puxa muda quando a Skeepers quiser. Uma revisao estatica do loader passa na segunda e perde uma troca de sub-script na terca.

Esse e o padrao classico de supply chain no navegador. Polyfill.io funcionou do mesmo jeito em 2024: um script primario limpo, um payload mutavel de segunda etapa e nenhum controle de integridade pela pagina host. Quando a segunda etapa muda, cada visitante de cada site que carrega o script primario vira alvo.

Nesse contexto, validacao CTEM significa fazer fingerprinting continuo do codigo injetado em runtime, nao apenas do loader.

Achado 3: um cookie de rastreamento de 360 dias no dominio apex

O widget define um cookie chamado _MFB_ com estas propriedades:

  • Dominio: todo o apex do banco, incluindo o subdominio de autenticacao
  • Expiracao: 360 dias
  • Conteudo: um blob Base64 com um ID aleatorio persistente de visitante de 11 caracteres, contadores de visitas de campanha e deployment, historico de paginas visitadas, contadores de cliques, TTL de sessao e seletores CSS

Em paralelo, o widget escreve 15 chaves em localStorage e as sincroniza de volta para o cookie em cada carregamento de pagina.

Algumas coisas decorrem disso:

  1. O escopo no apex significa que o cookie viaja com requisicoes para o subdominio de autenticacao, mesmo que o widget nao seja carregado la.
  2. Um identificador pseudonimo de 360 dias em uma propriedade bancaria precisa de consentimento explicito GDPR / CNIL e justificativa documentada de retencao. E uma questao de Record of Processing Activities (ROPA), nao apenas de seguranca.
  3. A sincronizacao entre cookie e localStorage significa que apagar cookies de forma padrao nao redefine o ID de visitante.

Esse e exatamente o tipo de exposicao de privacidade de cauda longa que frameworks CTEM devem revelar durante a priorizacao.

Achado 4: nenhum CSP nas paginas de autenticacao

Esse e o achado mais serio. O fluxo de login do banco nao envia cabecalho Content Security Policy.

O script da Skeepers nao e carregado ali. Mas esse nao e o ponto. O ponto e que qualquer script futuro, uma tag de marketing, uma ferramenta de A/B testing ou um fornecedor comprometido, executaria no fluxo de login sem restricao e com acesso total ao DOM dos campos de credenciais.

A clausula PCI DSS 4.0.1 6.4.3 exige um mecanismo para confirmar e autorizar scripts em paginas de pagamento. A clausula 11.6.1 exige um mecanismo de deteccao de adulteracao nessas paginas. A ausencia total de cabecalho nao satisfaz nenhuma das duas.

A infraestrutura existe. Um endpoint de reporting CSP ja roda para o site geral. Ele simplesmente nao foi estendido para as paginas mais sensiveis da propriedade.

Achado 5: a pesquisa renderiza dentro do DOM host

Quando uma pesquisa e disparada, o widget injeta #mfbIframeOverlay e #mfbIframeBlock diretamente em document.body. Isso parece benigno, e e para a pesquisa em si. Mas significa que o sub-script carregado dinamicamente, aquele com hash movel, executa na mesma origem da pagina do banco. Mesmo acesso ao DOM, aos formularios e aos cookies.

Um listener keydown e anexado para acessibilidade, como armadilha de foco da tecla Tab. Ele nao exfiltra nada hoje. Mas o listener fica no container superior da pesquisa, e o codigo que o controla pode mudar sempre que o fornecedor publicar um novo theme deployment. A priorizacao CTEM deve marcar isso como uma dependencia de confianca no processo de release do fornecedor.

O que a analise exigiu e o que encontrou

Para contextualizar o esforco de descoberta e validacao CTEM:

MetricaValor
Scripts analisados2 (loader primario + sub-script)
Ferramentas chamadas20+ entre script, infra, ameaca e comportamento
Runtime total281,9 segundos
Achados de risco8 (2 HIGH, 3 MEDIUM, 3 INFO)
Hits existentes em threat DB0
Matches YARA0

Zero indicadores de ameaca existentes. Dois achados HIGH. Essa e a assimetria para a qual o CTEM foi criado: a exposicao mais comum no navegador nao e um script conhecido como ruim. E um script aprovado fazendo coisas que nunca foram explicitamente autorizadas.

Por que crawlers e scanners tradicionais nao encontram isso

Uma pergunta razoavel e por que nenhuma ferramenta existente do banco trouxe esses achados. A resposta e que quase nada no stack padrao de seguranca executa a pagina como um usuario real.

Considere o que um scanner tipico ve:

  • Scanners de aplicacoes web (DAST) rastreiam URLs e inspecionam respostas. Nao carregam a pagina em um navegador real, nao executam JavaScript e nao esperam scripts injetados em runtime buscarem payloads de segunda etapa. O loader da Skeepers retorna 200 OK com JS valido. Fim.
  • Crawlers de busca e SEO renderizam com um navegador headless, mas nao pontuam scripts de terceiros por comportamento de seguranca. Eles se importam com conteudo, nao com cookies.
  • Analise estatica (SAST) e SCA olham codigo no seu repositorio. O script da Skeepers nao esta no seu repositorio. Ele carrega do CDN de outra empresa em runtime.
  • CSP em modo report-only pode detectar violacoes, mas apenas para dominios que voce ja sabe que precisa permitir. Nao avisa sobre sub-scripts injetados em runtime cujas URLs sao decididas server-side apos a pagina carregar.
  • Scanners de vulnerabilidade comparam CVEs contra inventarios de software. Nao existe CVE para "o widget de marketing do seu fornecedor define um cookie de 360 dias no seu subdominio de autenticacao."
  • Pentests sao pontuais. O hash do loader Skeepers nao tinha historico de observacao na janela de 90 dias. O hash do sub-script muda quando o fornecedor publica um novo tema. Um pentest em marco nao diz o que carrega em outubro.

O site do banco tem infraestrutura CSP, endpoint de reporting CSP e uma equipe de seguranca competente. Nada disso capturou esses achados porque nenhuma dessas ferramentas observa continuamente o ambiente runtime do navegador.

Essa e a razao estrutural pela qual o navegador fica no ponto cego do CTEM. A exposicao nao esta em codigo que alguem escaneia. Esta em codigo que carrega, muda e executa na maquina do usuario, em um contexto que termina quando a aba fecha. Capturar isso exige observar runtime, nao o repositorio nem a rede.

Por que ferramentas apenas de visibilidade nao fecham o ciclo

O caso Skeepers e o tipo de saida que uma ferramenta de visibilidade pode produzir. A parte dificil vem depois.

AbordagemDescobre scriptsPontua riscoDetecta mudancaPara execucao
Tag managersSimNaoParcialNao
Apenas CSPNaoNaoParcialSim, mas de forma grosseira
Seguranca de navegador focada em visibilidadeSimSimSimNao
Seguranca de navegador focada em enforcementSimSimSimSim

Sem a ultima coluna, o unico caminho de mobilizacao da equipe de seguranca e um ticket para o time que controla a relacao com o fornecedor, geralmente marketing ou CX. Esse ticket compete com trabalho de produto. O fornecedor publica um novo sub-script antes que o ticket seja fechado. O ciclo se repete.

Essa e a razao operacional pela qual o CTEM trava no navegador, mesmo em empresas bem equipadas.

Por que os numeros gerais deveriam preocupar lideres de seguranca

O caso Skeepers e um script em um site. O quadro agregado e muito maior.

  • A cadeia mediana de inclusao de terceiros na web moderna tem 3 niveis de profundidade, com profundidade maxima observada de 2.285 (Web Almanac 2025).
  • Ataques do tipo skimmer e Magecart comprometeram mais de 23 milhoes de transacoes online em 2025 (Recorded Future via Mastercard).
  • A maioria das ferramentas CTEM trata essa camada como problema de outra pessoa.

Um banco carregando dois scripts Skeepers e um caso pequeno. Um checkout de e-commerce carregando 80 a 200 scripts de terceiros e normal. A exposicao escala com a quantidade de scripts, a profundidade da cadeia de inclusao e a cadencia com que fornecedores publicam mudancas.

Mapeando cside para o ciclo CTEM usando este caso

E assim que cada etapa CTEM se parece para este unico script quando a plataforma cside e a camada de controle runtime.

Etapa CTEMO que significa no navegadorExemplo Skeepers
EscopoDefinir quais sites e paginas entram no escopoTodos os subdominios do banco, com rigor extra no fluxo de auth
DescobertaInventariar todos os scripts first-party, third-party e fourth-partyLoader + sub-script runtime + Lambda GeoIP + 3 endpoints CSS
PriorizacaoPontuar scripts por acesso a dados e comportamentoCookie de 360 dias no subdominio auth, sub-script controlado por servidor: HIGH
ValidacaoTestar o que scripts realmente fazem, nao o que dizem fazerConfirmar lacuna de CSP, confirmar escopo do cookie, fazer fingerprint do sub-script
MobilizacaoParar, restringir ou permitir execucaoRestringir o widget a paginas nao auth, fixar hash do sub-script, alertar em mudanca

Os screenshots que muitas equipes retornam dizem a mesma coisa depois que cside e implantado. Elas sabiam que o panorama de terceiros era grande. Nao sabiam que poderia ser 16.000 scripts em uma semana tipica de varejo. Nao sabiam quantos precisavam de revisao PCI. Nao tinham um caminho rapido de "encontramos um problema" para "o problema nao pode executar."

Para e-commerce especificamente, esta e a linha de defesa contra campanhas de protecao contra Magecart e web skimming, que continuam funcionando justamente porque o script continua executando.

O que perguntar a uma ferramenta de exposicao do navegador

Se voce esta avaliando ferramentas e quer manter o enquadramento CTEM, as perguntas sao concretas:

  • Ela descobre scripts que carregam em runtime, nao apenas no carregamento inicial da pagina?
  • Ela segue a cadeia de dependencias ate cargas fourth-party?
  • Ela detecta quando o hash de um script antes limpo muda?
  • Ela informa o que cada script le do DOM, cookies e storage?
  • Ela consegue bloquear ou restringir um script em producao sem redeploy do site?
  • As evidencias mapeiam para PCI DSS 6.4.3 e 11.6.1?
  • Quanto tempo ha entre deteccao e enforcement? Minutos, horas ou um sprint?

Se a resposta para as ultimas tres nao for "sim, rapido, sim", a ferramenta faz descoberta CTEM sem mobilizacao CTEM.

O enquadramento que importa

CTEM funciona porque trata exposicao como continua. O navegador so cabe nesse quadro se a resposta tambem for continua. Auditorias trimestrais de scripts nao acompanham a cadencia de mudanca do codigo de terceiros. Tickets para marketing nao acompanham a velocidade de um skimmer Magecart.

O caso Skeepers e moderado. Nenhum ator malicioso, um fornecedor respeitavel, um padrao SaaS conhecido. Mesmo assim gerou dois achados HIGH em um grande banco internacional, incluindo um que mapeia diretamente para PCI DSS 4.0.1 6.4.3.

Se um fornecedor benigno em um cliente cuidadoso produz tanta exposicao, a pergunta nao e se a camada do navegador precisa de cobertura CTEM. A pergunta e por quanto tempo as empresas vao continuar tratando-a como fora de escopo.

Para ver sua propria exposicao pela mesma lente, o monitoramento de scripts do navegador em uma propriedade real oferece o ciclo de descoberta, priorizacao e enforcement em menos de uma hora.

Se voce tambem compara uma plataforma orientada a visibilidade com uma orientada a enforcement, a comparacao Reflectiz vs cside mostra os trade-offs lado a lado.

Mike Kutlu
Author Mike Kutlu

Client-side security consultant at cside. 10+ years of experience implementing technology solutions for enterprises (previously at Oracle, Cloudflare, and Splunk). Now helping teams use client-side intelligence to catch & reduce fraud.

FAQ

Frequently Asked Questions

CTEM significa Continuous Threat Exposure Management. E o framework da Gartner para tratar exposicao como um ciclo continuo com cinco etapas: escopo, descoberta, priorizacao, validacao e mobilizacao. Diferente de varreduras pontuais de vulnerabilidades, o CTEM assume que a exposicao muda constantemente e que a resposta tambem precisa ser continua.

As mesmas cinco etapas se aplicam, mas cada uma tem um significado especifico no navegador. O escopo define quais paginas entram no programa, geralmente checkout e login primeiro. A descoberta inventaria todo script first-party, third-party e fourth-party que executa. A priorizacao pontua scripts por comportamento e acesso a dados. A validacao testa o que eles realmente fazem. A mobilizacao permite, restringe ou bloqueia execucao em tempo real.

A maioria das ferramentas CTEM foi criada para cloud e identidade, onde os ativos pertencem a organizacao e podem ser controlados. O navegador e diferente: scripts pertencem a terceiros, mudam no ritmo do fornecedor e executam na maquina do usuario. Sem uma camada de controle runtime no navegador, a etapa de mobilizacao do CTEM nao tem alavanca ali.

Sim, na pratica. A clausula 6.4.3 exige um mecanismo que confirme que cada script em paginas de pagamento e autorizado e que sua integridade e mantida. A clausula 11.6.1 exige um mecanismo de deteccao de mudancas e adulteracao no conteudo de paginas de pagamento e cabecalhos HTTP. Ambas exigem controle ativo, nao apenas inventario de scripts.

Ferramentas de visibilidade mostram quais scripts executam e atribuem pontuacoes de risco. Ferramentas de enforcement tambem param ou restringem scripts em tempo real, antes que comportamento sensivel alcance o usuario. A diferenca e se a equipe de seguranca consegue agir sobre o que ve sem redeploy do site nem ticket para outro time.

Uma Content Security Policy e uma base util, mas pouco precisa. O CSP do banco permitia *.myfeelback.com, mas nao incluia *.cxr.skeepers.io, de onde o sub-script real carregava em runtime. CSP nao detecta isso. A gestao de exposicao do navegador trabalha no nivel de script e comportamento, segue chamadas runtime e aplica decisoes em tempo real.

Nao de forma confiavel. Scanners DAST rastreiam URLs sem executar JavaScript como um navegador real. SAST e SCA analisam codigo no seu repositorio, mas scripts de terceiros carregam do CDN de outra empresa em runtime. Scanners de vulnerabilidade comparam CVEs contra inventarios de software, e nao existe CVE para um widget de marketing que define um cookie de 360 dias no seu subdominio de autenticacao. Pentests sao pontuais e perdem mudancas de scripts entre avaliacoes. Capturar esse tipo de exposicao exige observar continuamente o ambiente real do navegador.

Monitore e Proteja Seus Scripts de Terceiros

Gain full visibility and control over every script delivered to your users to enhance site security and performance.

Comece grátis, ou experimente o Business com um teste de 14 dias.

Interface do painel cside mostrando monitoramento de scripts e análises de segurança
Related Articles
Agende uma demonstração