Рынку видеокарт нужны видеокарты
К новости о том, что Intel анонсировала новые мобильные игровые видеокарты с конкурентной производительностью.
К новости о том, что Intel анонсировала новые мобильные игровые видеокарты с конкурентной производительностью.
Украдено с вк , очевидно
Предыстория. Дело было вечером. Будучи веб-программистом на удалёнке я в пятницу решил рвануть на природу пораньше (с позволения начальства, естественно), но работа застала прямо в дороге - срочно надо кое-чего сделать. Бывает! По приезде на место расчехлил ноутбук, подрубился к мобильному интернету TELE2 с телефона и приступил. Работа не волк, как говорится, но вместо работы меня сегодня ждали охренительные истории.
Далее будет история обнаружения этого дерьма, и если вам это не интересно, сходите в конец поста и прочитайте, чем это опасно и как с этим бороться. Кстати, все ссылки в посте безопасны для посещения (но можете не посещать, если страшно).
В общем, захожу я на локальный проект в виртуальной машине, открываю консоль ииии.... Что я вижу?
Чегоблядь.jpg
На локальном проекте в виртуалке была попытка загрузки малвари через document.write. Э?
А теперь для тех, кто не в теме, подробно описываю.
Первая, жёлтая строка - это предупреждение от браузера, что здесь неприятно пахнет. А ещё написано, что скрипт, который страница загрузила с официального хранилища Google (что важно), и который должен был содержать известную всем веб-разработчикам библиотеку JQuery, каким-то образом пытался писать код напрямую в страницу - а это уже давно известный признак вирусни, которая пытается прописать в страницу левый скрипт, и браузером выдаётся предупреждение в таком случае. Более того, jquery такое не делал никогда и вообще не должен. А тут - нате...
Следом красной строкой нарисована ошибка загрузки некоего скрипта, адрес которого, во-первых, НУ УЖ ОЧЕНЬ СОМНИТЕЛЬНЫЙ, а во-вторых, я ТОЧНО знаю, что у меня такой скрипт нигде грузиться не должен. "А он есть" (с). Спасибо AdBlock, что не дал этому говну проникнуть на мой компьютер, отчего и ошибка, а не обманчивая тишина.
Далее я захожу в заголовочную часть страницы и вижу: вот он, красавчик!
Я точно этого не добавлял. Вопрос: откуда оно тут взялось?
Я решил вручную загрузить библиотеку по той же ссылке, что на странице http://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min... (обратите внимание, что используется http вместо https). Я должен был получить сжатый код библиотеки, а получил странное...
Чегоблядь2.jpg
На часах второй час ночи и я подумал, что брежу. Для непосвящённых: вместо нужной мне библиотеки здесь какой-то подосланный скрипт, который упал мне с официального репозитория гугла. Ошибки в адресе нет. Я зачем-то ещё пару раз обновил страницу, и в один раз библиотека загрузилась, после чего признаки вируса исчезли вообще, сколько бы я не обновлял страницу.
Вот тут я вообще выпал, господа. Адрес - один, результата - два. Причём, в статическом CDN. Дела! При ближайшем рассмотрении оказалось, что скрипт делает интересное: он сначала грузит непрошеный скрипт по адресу http://p.tlrtb.com/ad/base.js, а потом уже грузит нужную библиотеку, чтобы не возникало ошибок! Кстати, загружаемый вирусный скрипт жутко обфусцирован (запутан) и пока непонятно, что делает, но это вопрос времени.
Скрипт, уже проникший на сайт:
Я лихорадочно жму F5 миллиард раз и ИНОГДА получаю в ответ вот такой незатейливый скрипт. То есть зараза отдаётся с какой-то вероятностью.
Наличие вируса на компьютере или расширения исключено - адрес 74.125.131.95 числится за Google. Гугл внедряет скрпты слежки? Пффф. Они точно могли изобрести что-то более элегантное, чем скрипт, который палится их же браузером. Кто тогда?
Помните, я говорил про HTTP и HTTPS? Прелесть https в том, что трафик, проходящий по такому соединению, сложно шифруется и исключает возможность атаки MITM - Man In The Middle (человек посередине). Если использовать незащищённый протокол HTTP, то все пакеты будут видны всем, через кого будет проходить трафик. Эти "все" могут не только читать, но и изменять данные, которые вы отправляете и получаете. А через кого у нас проходит трафик, выходя из мобилки, к которой я подключен? Правильно, через провайдера сотовой связи, в моём случае - TELE2. Штука в том, что локальный проект не имеет шифрования (а нахой? он же локальный), отсюда и отсутствие https на загрузке статики - и вот тут-то и закралась ошибка.
Теле2 решили поступить умно и довольно хитро. Зачем пихать скрипт прямиком на страницу? Это сложно, да ещё и можно сайт клиенту сломать и попалиться на этом довольно быстро. Они смекнули, что многие разработчики не уделяют должного внимания безопаности при загрузке статики и указывают ссылку с HTTP, вместо HTTPS. Так что теперь можно взять самую популярную js-библиотеку для сайтов, которая воткнута практически в каждый сайт в интернете, и по ссылкам с публичных CDN выдавать вместо нужного скрипта подкидыша, который сначала затянет на сайт вредонос, а потом уже - нужный скрипт. И что печально, если у вас не стоит adblock, ваш браузер просто напишет вам предупреждение, которое вы не увидите, потому что оно в консоли для разработчиков.
В подтверждение своей теории я зашёл удалённо на свой домашний сервер, где подключен другой провайдер и сделал оттуда curl-запрос на этот адрес по обычному http. Итог: 100 из 100 запросов вернули библиотеку, в то время как тот же запрос с локальной машины регулярно отдаёт вирусный скрипт. Так же было выяснено, что DNS по ajax.googleapis.com может отдавать несколько разных IP (видимо, так работает балансировщик), но данный магический эффект чаще всего повторяется на 74.125.131.95. Возможно, они взяли первый попавшийся.
Чем это грозит?
Ничем хорошим. Скорее всего, данный скрипт предназначен для показа дополнительной рекламы и парсинга сайта, на который вы зашли, чтобы вычленить из него ключевые слова и сформировать для вас более таргетированную рекламу. Однако используемый для этого механизм может применяться для внедрения любого скрипта вплоть до полной слежки: всё, что вы вводите, читаете, отправляете, загружаете, любые символы и нажатия клавиш, даже движения мыши. Но даже если вы отправляете данные формы по зашифрованному каналу (через ajax, например), это не спасёт вас от скрипта, который УЖЕ на вашей странице.
Достоверно известно, что пчолайн давно делает то же самое - только они суют рекламу прямиком на страницу, насколько я знаю. Адблок не спасет.
Что делать?
1. РАЗРАБОТЧИКАМ: HTTPS, HTTPS, HTTPS! Ставьте на свои сайты сертификаты. Если сертификата по каким-то причинам нет и вы грузите статику с CDN - грузите по HTTPS! Забудьте про http в статике - это прямой путь подарить клиенту малварь от провайдера.
2. Ставьте Adblock. Часто спасет. Иногда - нет.
3. Не игнорируйте предупреждения браузера о безопасности: особенно о незащищённом соединении. Если вы оказались на не защищённом сайте, помните о том, что за вами могут следить. Не в буквальном смысле, но данные о том, что вы делаете, могут сливаться напрямую провайдеру или другим третьим лицам: введённые пароли, логины, личная информация, куки и многое другое.
4. БДИ ЗА СВОЙ ЖЕПЬ
Всем честных провайдеров. Хотя, скорее я деда мороза дождусь.
P.S.
В процессе написания наткнулся в интернете на несколько статей аж прошлого года, где всё это было вскрыто, с подробностями, так что я далеко не первый, кто узрел это дерьмо. Однако, я думаю, тут много тех, кто не знал, что такое существует и как оно работает.
Найдено в вк. Прошу прощения за шакалов, качество исходное.