Ответ 1
Отказ от ответственности. Я не эксперт по безопасности/эксперт, ваша проблема просто вызвала мой интерес;)
Предупреждение. Хотя я разделяю первоначальный вывод о том, что сам код, вероятно, безвреден, базовая технология, безусловно, может быть (ab) использована для злонамеренных намерений, поэтому, пожалуйста, позаботьтесь, исследуя это сами.
Анализ
Вы уже сами убедились в соответствующих доказательствах - в дальнейшем я обнаружил еще один pastebin drop, который более читабельен, поэтому я использую этот для объяснения (хотя на первый взгляд другой мог бы это сделать и после форматирования).
В фрагменте представлены фрагменты JavaScript со следующими основными функциями:
-
Строка 13 инициализирует переменную
_GPL
всеми видами элементов для последующего использования, например. различные константы, вспомогательные функции, материалы совместимости с браузером и фактические полезные нагрузки, например:-
Line20 определяет пустую строку
basdeCDN
, строка 21 определяетfCDN
, которая, оказывается, является тем, о котором идет речь (d15gt9gwxw5wu0.cloudfront.net) -
строка 261 определяет функцию
removeScripts(),
, которая в свою очередь используетfindScript()
из строки 266, дополнительно сопровождаемуюinsertJS()
в строке 277 - их соответствующее намерение очевидно -
строка 270 определяет функцию
loadDomainRules()
, которая, по-видимому, является той, которая генерирует URL-адрес, который вы нашли в ваших журналах - см. приложение ниже для фрагмента кода- Вычет: Даже без дополнительных доказательств, собранных ниже, имена и функциональные возможности сильно намекают на
r.js
, являющийся файлом JavaScript, обслуживающим пользовательский JavaScript, специально собранный/сгенерированный для домена под рукой
< бр /" >
- Вычет: Даже без дополнительных доказательств, собранных ниже, имена и функциональные возможности сильно намекают на
-
строка 100 определяет функцию
loadGeo()
, которая действительно ссылается на какой-либо рекламный сервер (ads2srv.com) - см. приложение ниже для фрагмента кода -
строка 368, наконец, определяет функцию
i()
, которая предоставляет наиболее определенные подсказки относительно вероятного происхождения всего этого, а именно понятие некоторого Yontoo Client и Yontoo API - см. приложение ниже для фрагмента кода
-
Следствие
Что это значит?
Извлеченные ключи Yontoo Client и Yontoo API легко приводят к Yontoo, платформе приложений, которая позволяет вам контролировать посещаемые вами веб-сайты каждый день, то есть он звучит как коммерческая версия Userscripts.org, см. Что такое приложение Yontoo?:
Yontoo - это надстройка для браузера, которая настраивает и улучшает базовый веб-сайт
Где я могу его использовать?
Yontoo работает на любом сайте в Интернете, хотя функциональность поступает из отдельных приложений под названием Yontoo Apps которые предоставляют определенные функции в зависимости от того, на каком сайте вы находитесь на.
[акцент мой]
Теперь, глядя на текущие списки в App Market, легко демонстрируется, почему это может быть использовано для questionable непрозрачная реклама, например, во всех таблицах доверия и печати в нижнем колонтитуле.
Как это закончилось в ваших журналах?
Другая цитата дает более полное представление о функциях и о том, как это могло бы привести к проблеме, с которой вы столкнулись:
Yontoo [...] - это браузер, который создает виртуальные слои, которые можно редактировать до создать внешний вид, внеся изменения в Веб-сайт. [...] Если вы видите потребность в приложении или инструменте над веб-сайтом, то вы могут создавать!
Итак, кто-то, по-видимому, посетил ваш сайт и создал для него некоторые пользовательские правила домена с помощью клиента Yontoo (если он фактически разрешает это для конечных пользователей) или один из доступные приложения (фрагмент, используемый для анализа, ссылается на приложение Drop Down Deals в строке 379), что вызвало создание d15gt9gwxw5wu0.cloudfront.net/js/_MY_WEB_APP_DOMAIN_/r.js
для хранения этих правил для повторного использования при следующем посещении сайта по очереди.
Из-за какого-то недостатка в безопасности (см. заключение ниже) этот URL-адрес или соответствующий фрагмент JavaScript должен быть введен в код JavaScript вашего приложения (например, с помощью Межсайтовый скриптинг (XSS)действительно) и вызвал ошибку входа в журнал в какой-то момент.
Заключение
Как уже упоминалось выше, я разделяю первоначальный вывод о том, что сам код, вероятно, безвреден, хотя базовая технология, безусловно, может быть (ab) использована для злонамеренных намерений, а также из-за самой природы насмешек над клиентским JavaScript, т.е. пользователь позволяет коду из сторонней службы взаимодействовать с сайтами (и особенно данными), которые он использует и доверяет каждый день, - ваш случай является очевидным доказательством того, что уже произошло в этом отношении.
Я не исследовал архитектуру безопасности (если есть) Yontoo, но не смог найти какую-либо информацию по этой важной теме сразу на своем веб-сайте (например, в Support), что в значительной степени неприемлемо для технологии, такой как IMHO, несмотря на все признаки доверия и печати в нижнем колонтитуле.
С другой стороны, пользователи устанавливают сторонние скрипты, например. Userscripts.org все время, конечно, не для тонкой настройки пользовательского опыта на Stack Exchange;)
Пожалуйста, сделайте свое собственное мнение соответствующим образом.
Приложение
Ниже вы можете найти фрагменты кода, указанные в анализе (я не смог встроить их в списки, не нарушая макет или подсветку синтаксиса):
loadDomainRules()
function () {
if (location.host != "") {
var a = location.host.replace(RegExp(/^www\./i), "");
this.insertJS(this.proto + this.fCDN + "/js/" + a + "/r.js")
}
this.loaded_domain_rules = true
}
loadGeo()
function () {
var cid = this.items.e6a00.get("geo.cid");
var updatetime = this.items.e6a00.get("geo.updatetime");
if (!cid || (cid && updatetime && (Math.floor((new Date()).getTime() / 1000) - parseInt(updatetime)) >= 259200)) {
this.insertJS(((this.proto == 'https://') ? 'https://s.' : 'http://') + 'ads2srv.com/tb/gc.php?json&cb=_GPL.setGeoAndGo')
} else {
this.vars.cid = this.items.e6a00.get("geo.cid");
this.vars.rid = this.items.e6a00.get("geo.rid");
this.vars.ccid = this.items.e6a00.get("geo.ccid");
this.vars.ip = this.items.e6a00.get("geo.ip");
this.loadCC();
this.loadDomainRules()
}
}
я()
function () {
if (typeof YontooClient != 'undefined') YontooClient = {};
if (typeof yontooAPI != 'undefined') yontooAPI = {};
if (typeof DealPlyConfig != 'undefined') {
DealPlyConfig.getBaseUrl = function () {
return "https://d3lvr7yuk4uaui.cloudfront.net/items/blank.js?"
};
DealPlyConfig.getCrownUrl = function () {
return "https://d3lvr7yuk4uaui.cloudfront.net/items/blank.js?"
}
}
this.rm(this.ri, ['dropdowndeals', 'Y2LeftFixedCurtain', 'gbdho', 'bdca', 'dealply-toast-1', 'pricegong_offers_iframe', 'SF_VISUAL_SEARCH', 'batAdRight', 'batAdBottom', 'batAdMiddle_0', 'batAdMiddleExt1_0', 'batAdRight2', 'invisiblehand-iframe', 'scTopOfPageRefinementLinks', 'sf_coupon_obj']);
this.rm(this.rc, ['yontoolayerwidget', 'dealply-toast', 'imb-ad']);
this.rm(this.ric, [
['productbox', 'g'],
['related-searches', 'related-searches-bing']
]);
this.rm(this.rtn, ['MIVA_AdLink', 'itxtrst', 'kLink', 'FAAdLink', 'IL_AD', 'skimwords-link'])
}