Hoje recebemos um email informando sobre um problema de segurança no Google Website Optimizer. Segue a descrição do problema e sua solução para quem já utiliza este serviço:


“Prezado usuário do Otimizador de website,

Estamos escrevendo para informá-lo sobre um possível problema com o Otimizador de website. Ao explorar a vulnerabilidade no script de controle do Otimizador de website, um invasor pode executar um código malicioso em seu site usando um ataque Cross-Site Scripting (XSS). Esse ataque só pode acontecer em um website ou navegador que já tenha sido comprometido por um ataque diferente. Enquanto a probabilidade imediata deste ataque é baixa, recomendamos que você tome providências para proteger seu site.

Reparamos o bug e todas as experiências novas não estão suscetíveis. No entanto, quaisquer experiência que você esteja fazendo precisa ser atualizada para que o bug seja reparado em seu site. Além disso, se você tiver algum script do Otimizador de website de experiências pausadas ou interrompidas que foram criadas antes do dia 3 de dezembro de 2010, será necessário remover ou também atualizar esse código.

Há duas maneiras de atualizar seu código. Você pode interromper as experiências atuais, remover os scripts antigos e criar uma experiência nova ou atualizar o código de seu site diretamente. É altamente recomendável criar uma nova experiência, uma vez que se trata do método mais simples.

Como criar uma nova experiência

  1. Interrompa todas as experiências atualmente em execução no Otimizador de website
  2. Remova todos os scripts do Otimizador de website de seu site
  3. Crie uma nova experiência normalmente. As novas experiências não são vulneráveis.

Como atualizar diretamente o Script de controle do Otimizador de website

  1. Localize o script de controle em seu site. Ele terá esta aparência:

Script de controle de teste A/B
<!-- Google Website Optimizer Control Script -->
<script>
function utmx_section(){}function utmx(){}
(function(){var k='XXXXXXXXXX',d=document,l=d.location,c=d.cookie;function f(n){
if(c){var i=c.indexOf(n+'=');if(i>-1){var j=c.indexOf(';',i);return c.substring(i+n.
length+1,j<_x0030__x003f_c.length:j_x0029__x007d__x007d__x007d_var x="f('__utmx'),xx=f('__utmxx'),h=l.hash;">
d.write('<sc'+'ript src="'+
'http'+(l.protocol=='https:'?'s://ssl':'://www')+'.google-analytics.com'
+'/siteopt.js?v=1&utmxkey='+k+'&utmx='+(x?x:'')+'&utmxx='+(xx?xx:'')+'&utmxtime='
+new Date().valueOf()+(h?'&utmxhash='+escape(h.substr(1)):'')+
'" charset="utf-8"></sc'+'ript>')})();
</script><script>utmx("url",'A/B');</script>
<!-- End of Google Website Optimizer Control Script -->

Script de controle de teste multivariável
<!-- Google Website Optimizer Control Script -->
<script>
function utmx_section(){}function utmx(){}
(function(){var k='XXXXXXXXXX',d=document,l=d.location,c=d.cookie;function f(n){
if(c){var i=c.indexOf(n+'=');if(i>-1){var j=c.indexOf(';',i);return c.substring(i+n.
length+1,j<0?c.length:j)}}}var x=f('__utmx'),xx=f('__utmxx'),h=l.hash;
d.write('<sc'+'ript src="'+
'http'+(l.protocol=='https:'?'s://ssl':'://www')+'.google-analytics.com'
+'/siteopt.js?v=1&utmxkey='+k+'&utmx='+(x?x:'')+'&utmxx='+(xx?xx:'')+'&utmxtime='
+new Date().valueOf()+(h?'&utmxhash='+escape(h.substr(1)):'')+
'" charset="utf-8"></sc'+'ript>')})();
</script>
<!-- End of Google Website Optimizer Control Script -->

  1. Localize o seguinte trecho no script de controle: return c.substring(...
  2. Altere a linha a seguir conforme mostrado:
    ANTES: return c.substring(i+n.length+1,j<0?c.length:j)
    CORRIGIDO: return escape(c.substring(i+n.length+1,j<0?c.length:j))
    Não se esqueça de incluir o parêntese final “)”

Script de controle de teste A/B corrigido
<!-- Google Website Optimizer Control Script -->
<script>
function utmx_section(){}function utmx(){} (function(){var k='XXXXXXXXXX',d=document,l=d.location,c=d.cookie;function f(n){ if(c){var i=c.indexOf(n+'=');if(i>-1){var j=c.indexOf(';',i);
return escape(c.substring(i+n.length+1,j<0?c.length:j))}}}
var x=f('__utmx'),xx=f('__utmxx'),h=l.hash; d.write('<sc'+'ript src="'+
'http'+(l.protocol=='https:'?'s://ssl':'://www')+'.google-analytics.com'
+'/siteopt.js?v=1&utmxkey='+k+'&utmx='+(x?x:'')+'&utmxx='+(xx?xx:'')+'&utmxtime='
+new Date().valueOf()+(h?'&utmxhash='+escape(h.substr(1)):'')+
'" charset="utf-8"></sc'+'ript>')})();
</script><script>utmx("url",'A/B');
</script>
<!-- End of Google Website Optimizer Control Script -->

Script de controle de teste multivariável corrigido
<!-- Google Website Optimizer Control Script -->
<script>
function utmx_section(){}function utmx(){}
(function(){var k='XXXXXXXXXX',d=document,l=d.location,c=d.cookie;function f(n){
if(c){var i=c.indexOf(n+'=');if(i>-1){var j=c.indexOf(';',i);
return escape(c.substring(i+n.length+1,j<0?c.length:j))}}}
var x=f('__utmx'),xx=f('__utmxx'),h=l.hash; d.write('<sc'+'ript src="'+
'http'+(l.protocol=='https:'?'s://ssl':'://www')+'.google-analytics.com'
+'/siteopt.js?v=1&utmxkey='+k+'&utmx='+(x?x:'')+'&utmxx='+(xx?xx:'')+'&utmxtime='
+new Date().valueOf()+(h?'&utmxhash='+escape(h.substr(1)):'')+
'" charset="utf-8"></sc'+'ript>')})();
</script>
<!-- End of Google Website Optimizer Control Script -->

A linha k=XXXXXXXXX nos exemplos de script de controle acima é um marcador de posição.

Sua experiência continuará normalmente depois que você fizer essa atualização. Não é necessário pausar ou reiniciar a experiência.

Temos o compromisso de manter o Otimizador de website seguro, e sentimos muito por esse problema. Continuaremos trabalhando muito para evitar vulnerabilidades futuras.


Atenciosamente,
Trevor
Equipe do Otimizador de website do Google”

 

O Google Website Optimizer é um serviço gratuito para testes A/B e Multivariável, uma boa solução para que sua empresa possa melhorar as conversões do seu site, conforme já mostrado no nosso post http://www.mundowa.com.br/blog/teste-ab-e-multivariavel/

Até o próximo post!

Tagged with:
 

Os cookies são partes importantes da coleta de dados de qualquer Web Analytics baseado em “Pagging Tag”, trabalham em conjunto para conseguir identificar visitante único, tempo no site, entre outros dados. Para se ter uma idéia desta “parceria”, quando um browser possui uma configuração de segurança que não permite a gravação de nenhum tipo de cookie, o Google Analytics não consegur coletar os dados desta visita e portanto ela não será reportada nos seus relatórios.

O que são os cookies?

Cookies são pequenos arquivos de texto, 4095 bytes, que são trocados entre seu browser e o servidor web que você esta acessando. Sem estes arquivos, o servidor web, os ad´servers ou o web analytics não tem como diferenciar pessoas que já visitaram o site ou não, guardar informações da navegação do visitante tais como páginas que forma vistas, dados do browser utilizado, banners que foram vistos e quantas vezes os banners foram vistos, também servem para armazenar informações de preferência do visitante que podem ser usadas posteriormente para uso em “behavioral targetting”.

Devemos colocar aqui um alerta, os cookies não identificam pessoas, só armazenam dados de sua navegação. Outro ponto interessante a ser lembrado é que somente o dominio que gravou este cookie é que o pode ler, exemplo se um cookie é gravado quando o visitante vai ao site http://www.waconsulting.com.br, somente o domínio “waconsulting.com.br” pode ler os dados gravados nestes cookies e de mais nenhum outro domínio.

A RFC2109 especifica sobre como os browsers devem tratar os cookies, nela vemos que a quantidade minima de cookies que um browser deve suportar, apesar de alguns terem um suporte maior, são:

  • Total de cookies – 300 para todos os domínios visitados
  • Total de cookies por domínio – 20
Os cookies podem ser divididos de acordo com o tempo que se mantém ativos em:
  • Cookies de sessão – após 30 minutos de inatividade ou o fechamento do browser este tipo de cookie é apagado.
  • Cookie permanente – este tipo de cookie se mantém gravado mesmo após o término da sessão, apesar do nome eles permanecem ativos durante um tempo préviamente determinado pelo servidor que irá ler estes dados no futuro, vejam os exemplos abaixo quando estamos trabalhando com o Google Analytics.
Também são divididos de acordo com que dominio esta gravando estes cookies:
  • First Party Cookie – é o mais aceito pelos browsers em suas configurações de segurança, ele é gravado pelo dominio que você esta visitando.
  • Third Party Cookie – é quando outro dominio grava um cookie quando você esta visitando  um outro domínio. É usado pelos Ad´Servers, por exemplo, para  identificar quantas vezes você viu um determinado banner, mesmo este banner estando em vários dominios diferentes. Dependendo da configuração de segurança do seu browser, ele pode não ser gravado.
Os Cookies do Google
O Google Analytics trabalha com um conjunto de 6 cookies:
  • _utma – Identifica os visitantes únicos – Cada browser guarda um único cookie deste tipo com um ID unico que permite verificar se este visitante já esteve no site. Devemos alertar para duas situações, a primeira é que se mais de uma pessoa usar o mesmo PC o site irá identificar todos como sendo o mesmo visitante, e, no caso do visitantes utilizar vários browsers, este poderá ser identificado como visitantes diferentes, já que cada browser terá o seu grupo de cookies. Este cookie tem uma permanência de 2 anos após sua gravação.
  • _utmb e _utmc – Identificação da sessão – Trabalham em conjunto para identificar se é uma sessão nova, o inicio de uma sessão e o tempo total de visita. Sendo que a última página visitada, ou no caso de bounces a única página visitada, não tem o  seu tempo contabilizado pelo Google Analytics no tempo total de permanência na página. È através do _utmc que o Google Analytics verifica se o tempo de permanência em um site sem atividades passou de 30 minutos e inicia uma nova sessão (visita) se houver alguma atividade. O tempo de expiração destes cookies é de 30 minutos de inatividade ou caso o visitante feche o browser. Este tempo de 30 minutos pode ser alterado pelo pageTracker._setSessionTimeout(“tempo em segundos”), mas não recomendamos pois este é um tempo aceito internacionalmente.
  • _utmv – Identificação de segmento do visitante. Este cookie é gravado quando é encontrado você coloca na tag do Google o pageTracker._setVar(“segmento”) para que sua empresa possa criar uma segmentação para seus visitantes. Como no caso do _utma, este cookie permanece ativo por 2 anos após ser gravado.
  • _utmz – Identifica as variáveis de campanha. Ele é usado para gravar se o visitante veio direto para o site, se veio de um site com um link para o seu, de uma busca em um buscador ou de uma campanha criada pela empresa. Este cookie tem validade por até 6 meses a partir de sua criação, isto quer dizer que se a pessoa veio a seu site por uma campanha, mesmo que a campanha tenha terminado, 6 meses depois ainda você terá a identificação que o visitante veio por aquela campanha específica. A informação gravada pode ser modificada pelo _utm_nooverride, que já tratamos neste blog. Outro ponto é que este cookie pode ter o seu tempo de expiração modificado por pageTracker._setCookieTimeout(“tempo em segundos”)
  • _utmx – Utilizado pelo Google Website Optimizer - É utilizado para que o GWO possa identificar qual página o visitante recebeu durante um teste A/B, A/B/n ou Multivariável, para que durante o teste ele sempre receba a mesma página e não uma outra variação. Este cookie se mantém ativo por até 2 anos.
Existem casos em que é necessário o uso de multiplos do Google Analytics em suas páginas, neste caso eles irão compartilhar o mesmo conjunto de cookies. Lembrando que este tipo de situação não é recomendada.
Formato dos cookies do Google
Os campos dos cookies são delimitados por “.”, assim temos:
  • _utma – Código do dominio.ID do visitante.tempo inicial da visita.numero de vezes que visitou o site
  • _utmb – Código da sessão
  • _utmc – Código da sessão
  • _utmv – ID do visitante.Segmento que você escolheu
  • _utmx – Variação do conteudo.Sessão
  • _utmz – ID do visitante. xxx . xxx. x.utmcsr=origem da campanha|utmccn=nome da camapanha|utmcmd=meio da campanha|utmctr – palavras chaves da campanha|utmcct=conteúdo da campanha
Os dados da campanha são os mesmos que você especificou na ferramenta de tagging de campanhas do Google.
Até o próximo post!