Google Safe Browsing — пришла беда откуда не ждали
Google Safe Browsing внезапно нашел вирус на моем сайте.
[WNC-611600] Malicious or unwanted software detected on site…
(Которого не было — как выяснилось позже)
Посетители сайта видят полноэкранное, красное окно с текстом, что сайт содержит вредоносные программы и авторы сайта пытаются обманом установить эти программы на ваш компьютер, чтобы поменять домашнюю страницу или показывать дополнительную рекламу на сайтах (все это является форменной клеветой).
И пользователи уходят, бегом бегут с сайта, так как верят всему, что на красном экране написано. И я их не осуждаю. Любой на их месте поступил бы также.
False Positive! Ошибка антивируса!
Это бывает.
Сейчас напишем в Google, там разберутся и мигом справедливость восторжествует.
На деле все оказывается сложнее и путь к справедливости тернист и чреват потерями времени и денег из-за неверных действий.
Но это не самое страшное.
Беда в том, что ошибка не единичная. От нее страдаю не только я.
И исправить ее окончательно Google не в состоянии.
По крайней мере сейчас.
А значит, чем больше людей узнает об этом, тем лучше.
И може кто-то важный в Google прочтет, позвонит и скажет:
— Прости, Дима! Наш косяк. (просто мои мечты, в которые я сам не верю)
В скобках мой внутренний голос, который не во всем согласен с основным и все время хочет выражаться нецензурно. За что я заранее извиняюсь.
Разберемся по порядку.
Что такое Google Safe Browsing?
Google Safe Browsing (GSB) защищает порядка 3 миллиардов устройств (компьютеры, телефоны) по всему миру уже 12 год, с 2007 года.
Многие об этом не знают, так как никогда не устанавливали такой программы на свой компьютер.
А это и не требуется, так как GSB автоматически устанавливается в Chrome и его клонах, в Firefox и Safari. Отсюда и взялись впечатляющие цифры в 3 миллиарда.
GSB не является дополнением браузера, а скрывается в его настройках, куда добраться не так и просто.
В Firefox вы Google Safe Browsing не найдете.
Хотя он установлен и активен по умолчанию.
В настройках Firefox, Security есть опция «Block dangerous and deceptive content». За этой надписью оно и скрывается.
Выглядит это так, как будто сам Firefox что-то защищает, хотя это не так.
Разработчики Firefox в любой момент могут поменять защитника, например на Yandex Safe Browsing.
В браузер встроен код, который обменивается данными с системой Safe Browsing и сверяет хэши URL и файлов с таблицей, полученной от GSB. В зависимости от результатов браузер блокирует доступ и показывает красную картинку.
Вообщем, GSB целиком и полностью управляет кого блокировать, а кого нет. А браузер делает все, что скажут.
У Microsoft есть свой аналог — Smart Screen, который ничего плохого на моем сайте и программах не нашел.
Smart Screen встроен в Internet Explorer и Edge, доля которых намного меньше Chrome.
А теперь детектив!
История началась ранним утром 30 ноября 2018 г.
Я получил письмо от Google Search Console
[WNC-611600] Malicious or unwanted software detected on site…
Это ошибка! — подумал я.
Потому что это был мой сайт и мои файлы, указанные как вредоносные.
Пока я завтракал, пришли такие же письма про второй мой сайт и количество найденных «вредоносных» файлов увеличилось.
Бегу на работу.
Проверил файлы. Все подписаны цифровой подписью и скачав их я убедился, что подпись действительна. Подпись не новая, выдана больше года.
Все найденные файлы с разной датой, но не очень старые — в диапазоне от недели до месяца.
Загрузил их на Virustotal с перепроверкой.
Чистые!
Я занимаюсь созданием программ для Windows уже 20 лет и за это время случались ложные детекты антивирусов.
— Ладно, не в первой — подумал я.
В письме от Google предлагали отправить апелляцию, что я немедленно и сделал.
Через два часа пришел ответ, что апелляция отклонена.
И никаких комментариев к ответу.
Следующим письмом Google сообщил что заблокировал весь домен сайта и все страницы, с которых вели ссылки на файлы.
Логика его действий, видимо, следующая: если страница содержит ссылку на вредоносный файл, то вредоносной считается и эта страница. Если ссылки есть на главной странице сайта, то и весь домен.
При заходе на сайт пользователи видели ужасное полноэкранное красное окно:
«The site ahead contains harmful programs»
При скачивании файла он помечается как вредоносный и открыть его в принципе можно, несколько раз подтвердив, что я уверен, что хочу открыть этот файл. Я не думаю, что хоть один из обычных пользователей сайта станет делать это.
Украли подпись?
Я провел несколько экспериментов: подписал файл с помощью другого сертификата (EVO, подпись на токене), создал пустой проект в C++ Builder, собрал его, подписал файл, выложил на сайт.
Google посчитал его вирусом.
Из чего я сделал вывод, что теперь он считает все файлы с этого домена вредоносными, созданными после определенного времени.
Старый файл, месячной давности Google считал совершенно чистым.
Я знаю, что в нем принципиального ничего не менялось (вирусов я туда не добавлял).
Смущало и то, что детект был какой то выборочный. Google считал почему то стандартную редакцию программы вирусной, а золотую чистой (наверное золото оберегает от вирусов).
Все это выглядело странно.
В письме от Google предлагали создать тему на форуме Google.
Это я сделал.
В ответ я получил сообщение от негласного модератора, что он видит уже третий такой случай за день.
Я проверил форум и нашел много ответов от модератора.
Товарищ пытался помочь в меру сил (предлагал бесполезные советы), но в Google он не работал и ничем реально помочь не мог.
Зато в тему начали записываться другие пострадавшие.
Оказывается я не один!
Ссылка на Google форум:
https://productforums.google.com/forum/?#! msg/webmasters/CThwZ6Oq9Ck/jto5r8cdCgAJ
Я начал искать по форуму Google Webmasters подобные случаи со счастливым концом и нашел один прошлогодний. В нем даже был ответ от «вероятного сотрудника Google», который предлагал направлять все false positive прямо из Chrome через функцию Report an issue.
Привожу его ответ:
Sergey_Semenov:
If it doesn’t help after a review in console, send Chrome issue report from browser (Alt+Shift+I) saying you’re a good white-hat company and your files is absolutely clean. It clearly helped us because we had all issues in google console disappeared after Chrome issue report without requesting another review.
Немного странно рапортовать об ошибке в форме уведомления о нежелательных программах и сайтах. Но отдельной формы False Positive ни в Хроме, ни на сайте GSB нет.
Вероятно, Google считает ошибок у них не бывает (нет слов).
Ночь прошла тревожно.
(На самом деле намного хуже. Я думал, а что делать. Как жить дальше. Ну хорошо, хоть ребенок уже подрос)
Количество пострадавших увеличилось.
Всех объединяло то, что это были производители программ для Windows и в той или иной мере имели связь со средой программирования Delphi.
Delphi bug?
(не думаю…)
Неполный список пострадавших:
Greatis Software (RegRun, UnHackMe, BootRacer), Scooter Software (Beyond Compare), IBE Software (HelpNDoc), Blumentals Software (HTMLPad, WeBuilder, RapidPHP), Balanced Scorecard Software (BSC Designer), SpamBully, Gillmeister Software (Rename Expert), Autorun Organizer (Chemtable)…
9 из 10 использовали инсталлятор Innosetup, который написан на Delphi.
Один использовал Nullsoft.
У всех файлы были подписаны цифровыми подписями компаний.
Род деятельности у всех разный, но мирный: редактор PHP, архиватор, программа сравнения файлов, аддон к Power Point, менеджер автозагрузки, программа создания файлов справки.
Себя я не рекламирую, но у меня есть одна программа, которая удаляет вирусы (перепутать вирус и антивирус не сложно).
А другая работает в некоторых крупных компаниях по всему миру (Европарламент, Western Digital, Metropolitan Police, банках и др.). Что могло вылиться в большие неприятности.
Варианты с фолсами по Delphi и Inno Setup были и раньше известны.
Смущало, что количество пострадавших хоть и увеличивалось, но не глобально. В мире много компаний, использующих Delphi программы и инсталляторы Inno Setup.
Почему не страдают они?
Думая над этим вопросом я взялся «очищать» сайты, убирая ссылки на якобы вредоносные файлы. Нашлось несколько Download архивов, с которых можно было скачать те же файлы и куда Google не добрался.
Куда GSB добрался, было плохо. Их тоже пометили. Страница моей программы на Fileforum.com встречала красным экранам.
Download.com просто заблокировал аккаунт моей компании и удалил все программы со своего сайта.
Name.com (подразделение IBM) лишил доступа к своим DNS серверам для домена.
Это ущерб, который трудно восполнить немедленно.
Я очистил сайты от ссылок.
Отправил в Google ссылки на программы.
И о чудо!
Через день после того как все файл были отосланы в GSB, сайты отправлены на review, Google пошел на попятный и убрал все свои притязания.
Все файлы стали чистыми как слеза. И новые и старые!
И у всех других пострадавших тоже!
Мы вернулись к жизни, к работе (и стали жить счастливо и не умерли в один день).
И все было бы хорошо, если бы…
Через неделю я выложил новую версию программы и через 2 часа ее задетектили как вредоносную!
Это был тяжелый удар (я так и сел, а потом лег).
Я быстро восстановил старую версию.
Отправил на review.
Утром все очистилось.
С тех пор я постоянно делаю процедуру перед выкладкой новых версий:
1) Кладу новый файл в новый каталог на сайте.
2) Отправляю через Chrome, Report an Issue ссылку.
3) Жду пару часов.
4) Выкладываю новую версию на новый сайт.
Больше у меня срабатываний не было.
Рецидив возник снова у одного из пострадавших 30 Января.
Он написал мне на почту и мы вместе решили проблему примерно за день.
В феврале такая же проблема возникла у другого автора программ. Увидел на RSDN.
Проблема ложных срабатываний не решена (и решать ее никто не собирается).
Что теперь бояться всю оставшуюся жизнь?
Если вам тоже не повезло, попробуйте это.
Методика действий, основанная на личном опыте:
1) Не пытайтесь оспаривать сразу же через Google Search Console.
Можете потерять время и увеличить свой ущерб.
2) Убирайте найденные Google файлы с сайтов. Если оставите — ущерб может быть больше.
3) Если есть старые версии файлы, восстановите их. Если нет, посмотрите, где в Интернете хостятся ваши файлы и Google их не банит. Посылай трафик туда.
4) Отправляйте очищенный сайт на Review через Google Search Console.
5) Закачайте в новое место свои подозрительные файлы (новый каталог, другой сайт) и отправляйте ссылки на неверно определенные файлы через Report Issue. В новой Search Console есть такая же ссылка. Так, что Chrome не обязателен.
6) Ждите оправдания в пределах 2 часов от GSB, и в течении суток от Google Search Console.
7) От GSB никакого ответа не будет.
Можно проверить статус ссылок поиском на сайте
transparencyreport.google.com/safe-browsing/search
Первый вывод: cистема апелляции построена из рук вон плохо
(ты во всем виноват, а почему и в чем, мы тебе не скажем!)
Отсутствует форма Report False Positive.
Например, у Microsoft такая есть. И от них приходит ответ.
Не отписка, а результаты тестов и предпринятые ими действия.
От GSB никаких ответов.
Нашел, что в США люди дозваниваются по телефону до поддержки Google (это не просто) и получают тот же совет написать на форум. Никто в Google помогать и отвечать не собирается.
На форуме бывают сотрудники Google и, вероятно, его читают (проверено, что читают).
Но отвечают редко. В последнее время — никогда.
(Разговаривать самому с собой и со стенкой — не лучшие ощущения)
Время реакции на апелляцию слишком велико.
Может пройти и день и два.
Вердикту GSB безропотно верят все (особенно в Google).
(потом и не отмоешься!)
В Google вам заблокируют все: сайт, Youtube, почту и т.п., если есть диагноз от GSB.
GSB читает и Gmail. И непонятно на что и как может среагировать (у меня блокирует найденные письма, если в них есть имена вирусов. Т.е. находит вирус в тексте. Это высокое достижение!)
Поэтому, я так думаю, отказывают в review.
Если есть вердикт GSB, все, что вы скажете игнорируется.
Плохо и то, что причины отказа вы никогда и не узнаете, потому что Google ее не сообщает. (Google присылает стандартные отписки, что вы виновны в нарушении всего и вся)
Разберемся, а на чем основан вердикт GSB?
Оказывается это тайна!
Результаты Virustotal, также принадлежащей Google, могут полностью противоречить решениям GSB.
Вы знаете антивирус GSB? Нет?
И я нет.
А никакого антивируса Google Safe Browsing нет!
GSB — это проверка URL или хэша файла по некоей своей базе.
Никто не анализирует сайт в реальном времени, прямо перед тем как вы туда попадаете.
Никто не просматривает JS скрипты или файлы на этом сайте.
Просто браузер время от времени скачивает базу на компьютер и проверяет локально.
Больше похоже, что GSB реагирует на поведение.
Появился новый файл, неизвестный ему и система напряглась.
Стали его скачивать больше чем обычно с этого сайта — уже опасно.
А если такой же файл есть на «плохом» сайте, например, у пиратов?
(ну точно — вирус)
А ведь причина банальна. Просто выходит новая версия программы.
И ее начинают больше скачивать.
Для GSB нормально, что если скачиваешь файл по одной ссылке — он заражен. Скачиваешь этот же файл по другой ссылке — чист.
Удивлены?
Я тоже.
Это говорит о том, что ссылка помещается в базу без проверки ее содержимого.
(На основании предположений робота)
Обычно это бывает на начальном этапе включения GSB бульдога.
Затем бульдог включается на полную и добавляет хэш файла в базу.
После этого не важно, с какого URL качают файл.
Он везде метится.
При этом, с 99% вероятностью ни один человек файл не анализировал.
Далее бульдог переходит к следующей стадии.
Он начинает метить все похожие файлы на сайте.
Он метит файлы по цифровой подписи файла, если она есть.
Я проверял этот процесс, создавая пустой проект и компилируя его в exe файл.
Подписанный файл детектируется как вредоносный.
Последняя стадия: все файлы с домена детектируются как опасные.
Логика действий бульдога понятна: вцепиться и остановить распространение файла как можно скорее.
Судя по истории детектов, видно, что проблема началась с детекта URL (хэш файла не детектился). Затем детект дорос до того, что любые новые файлы с сайта считались вредоносными.
Детект исключительно машинный, основанный на «неизвестных принципах».
В любом случае все это называется «эвристикой» с определенной долей вероятности.
И вердикт у такой системы должен быть не ВИРУС, а ВОЗМОЖНО подозрительный.
Почему срабатывания появились в одно время у многих, а до этого никогда не появлялись?
Мое предположение, что в GSB что-то придумали, например, обучили нейросеть.
Нейросеть находит похожие файлы. К несчастью, наши файлы оказались похожи с каким-то вирусом.
И GSB считает достаточным основанием, чтобы обвинить в преступлении.
Потом молча убрать свои ошибки и радостно отрапортовать сколько вирусов они нашли.
(Если по такой схеме будет работать суд, то любой может оказаться в тюрьме уже завтра)
Страдают маленькие
Все пострадавшие — это небольшие компании, которым тяжело засудить Google. Видимо, крупные у них в белом списке.
(а на маленьких можно просто не обращать внимания)
Как я понял, на текущий момент, единственное, чем могут помочь в Google — это убирать URL и хэши из плохого списка по запросу.
Может быть GSB так хорош, что победил малварь во всем мире?
Не похоже.
Я встречаю одни и те же сайты с малварью уже много лет и они чувствуют себя прекрасно. Количеством дектектов, которым хвастает GSB, меня тоже не убедить. Малварь легко и быстро размножается.
Сама идея проверки по некоей базе, которая к тому же скачивается локально подразумевает некоторый лаг по времени.
(Уже попался, а потом скачалась база)
Второй вывод: не стоит полагаться, что GSB защитит и спасет
Здесь нужны совсем другие средства.
А зачем Google эта борьба с вирусами?
Для чего все эти усилия команды GSB?
Сделать мир лучше?
Или получить информацию о посещаемых пользователями сайтах?
Google уверяет, что проверяет URL сайтов только по хэшу и локально на клиенте, а не на сервере. И отправляет запросы на сервера Google тоже используя только хэши, а не полные URL.
www.chromium.org/developers/design-documents/safebrowsing
Как это работает в Firefox:
support.mozilla.org/en-US/kb/how-does-phishing-and-malware-protection-work
Но какой толк GSB только от хэшей?
Может быть потому, что Google это еще и компания, которая сканирует весь Интернет и имеет базу в которой легко может найти хэш и таким образом получать URL посещаемых сайтов и их анализировать.
Что разглашает Google:
www.google.com/intl/en/chrome/privacy/#safe-browsing-practices
В итоге Google может получать поведенческие характеристики сайтов, даже если Google Analytics на сайте не установлен. Все данные дает GSB совершенно бесплатно.
Несмотря на свои собственные правила для «хороших» приложений при установке Chrome нет галочки «Включить Safe Browsing» и никому не очевидно, что Chrome отсылает информацию в GSB.
(Мой личный вывод, что GSB — это совсем не бескорыстная забота о ближних)
А хотелось бы чтобы GSB следовал хотя бы общепринятым нормам в плане ответственности за свои действия, был открытым и понятным для всех участников процесса: пользователей, владельцев сайтов, производителей ПО.
(не будь злым, ну пожалуйста!)