Защита от Drive-by загрузок: как настроить NoScript и аналоги в браузере

Drive-by загрузка — это ситуация, когда сайт пытается скачать файл без понятного и осознанного действия пользователя. Иногда это выглядит как случайный файл в папке «Загрузки», иногда как редирект на сомнительный домен, иногда как попытка воспользоваться уязвимостью в браузере. NoScript и похожие расширения помогают именно на ранней стадии: они не дают JavaScript и другому активному контенту запускаться автоматически на каждом сайте.

Но есть нюанс: если поставить такой инструмент и сразу разрешить всё «чтобы сайты работали», защита почти исчезает. Рабочая схема другая — блокировать всё по умолчанию, а разрешения выдавать точечно и временно.

Что именно мешает Drive-by атакам

Большинство Drive-by сценариев завязаны на код, который сайт запускает в браузере: скрипты, рекламные сети, редиректы, скрытые iframe, подгружаемые виджеты. Современный браузер уже многое ограничивает: sandbox, защита от фишинга, блокировка небезопасных загрузок, запрет старых плагинов. Но этого не всегда достаточно, особенно если пользователь попал на взломанный легитимный сайт или на страницу с агрессивной рекламой.

NoScript и аналоги работают проще: они не пытаются угадать, хороший сайт или плохой. Они спрашивают: «А зачем этому сайту прямо сейчас запускать весь JavaScript?» Если ответа нет, скрипт остаётся заблокированным.

Такая настройка снижает риск в нескольких случаях:

  • сайт пытается автоматически запустить скачивание файла;
  • рекламная сеть перенаправляет на вредоносную страницу;
  • на странице есть подозрительные iframe или скрытые формы;
  • вредоносный код использует JavaScript для обхода обычных браузерных ограничений;
  • пользователь случайно попал на страницу, где кнопка «Скачать» маскирует другой файл.

При этом расширение не заменяет обновления браузера, нормальный антивирус и здравый смысл. Если человек сам нажал «Скачать» и открыл файл, NoScript тут уже не волшебник.

Как настроить NoScript в Firefox

NoScript — это расширение для Firefox. В Chrome, Edge и большинстве Chromium-браузеров его нет, там нужны аналоги. Если используете Firefox, я бы настраивал его так:

  1. Установите NoScript только из официального магазина Mozilla Add-ons. Не скачивайте расширение с лендингов, где большая кнопка «Download» и много рекламы.
  2. После установки не нажимайте «разрешить скрипты везде». Это частая ошибка, после которой расширение превращается в декоративную кнопку.
  3. Оставьте политику по умолчанию, при которой новые сайты не получают постоянных разрешений. В разных версиях NoScript названия пунктов могут отличаться, но смысл один: неизвестный сайт сначала должен быть заблокирован.
  4. Проверьте, что в настройках нет глобального доверия ко всем доменам. Если видите длинный список Trusted-сайтов, лучше пройтись и удалить лишнее.
  5. Для обычных сайтов используйте временные разрешения: Temporary/Temporarily trust, а не постоянное доверие.
  6. Если сайт сломался, разрешайте скрипты не «всем подряд», а только тем доменам, которые реально нужны для работы страницы.

На практике это выглядит так: вы открыли новостной сайт, и половина элементов не работает. Это нормально. Если вам нужно только прочитать статью — включите режим чтения или закройте сайт. Если нужно войти в личный кабинет, временно разрешите скрипты основному домену. Если после этого появились всплывающие окна, редиректы или скачивание — отзовите разрешение и закройте вкладку.

Как выдавать разрешения без лишнего риска

Главная идея — не доверять сайту полностью только потому, что он «похож на настоящий». Лучше мыслить так: сайт состоит из нескольких доменов. Основной домен — это то, куда вы зашли. Сторонние домены — это реклама, аналитика, карты, социальные кнопки, CDN, трекеры. Drive-by часто приходит именно через сторонние элементы.

Удобная схема:

  • первый заход на неизвестный сайт — скрипты заблокированы;
  • если сайт нужен — временно разрешить основной домен;
  • если функциональность не работает — добавить один нужный домен;
  • если после добавления домена началось скачивание или открылась новая вкладка — сразу отозвать разрешение;
  • после работы удалить временные разрешения или перезапустить браузер.

Например, вы зашли на сайт банка. Ему нужны скрипты основного домена, возможно ещё один-два домена для авторизации или форм. Но нет смысла доверять десяткам рекламных и аналитических доменов. Для интернет-магазина ситуация похожая: страница товара может работать с заблокированной аналитикой, а вот оформление заказа иногда требует дополнительных скриптов. Их лучше добавлять только на время покупки.

Какие настройки браузера стоит включить вместе с NoScript

Блокировщик скриптов работает лучше, когда браузер сам не помогает вредоносной странице.

  • Автоматические обновления браузера. Drive-by атаки часто рассчитаны на старые версии браузеров. Обновления закрывают именно такие дыры.
  • Защита от фишинга и вредоносных сайтов. В Firefox, Chrome и Edge такие функции есть. Не отключайте их ради «приватности» или скорости.
  • Вопрос перед сохранением файла. В настройках загрузок полезно включить опцию «спрашивать, куда сохранять файл». Это не остановит атаку, но не даст файлу тихо улететь в папку загрузок.
  • Отключение автооткрытия файлов. Особенно для архивов, документов, исполняемых файлов и HTML-файлов.
  • Отдельный профиль браузера для рискованных задач. Если приходится заходить на сомнительные сайты, лучше делать это не в основном профиле с паролями, банками и почтой.
  • Регулярная чистка разрешений. Раз в месяц стоит проверить список сайтов, которым разрешены скрипты, камеры, микрофон, уведомления и скачивание нескольких файлов.

Если файл начал скачиваться сам — не открывайте его. Отмените загрузку, удалите файл из папки загрузок, закройте подозрительные вкладки и проверьте браузер на неизвестные расширения. Если вы вводили пароль или платёжные данные на такой странице, меняйте пароль отдельно и проверяйте активность аккаунта.

Аналоги NoScript: что выбрать вместо него

NoScript хорошо подходит тем, кто готов иногда чинить сломанные сайты. Но не всем нужен такой строгий режим. Ниже — варианты, которые решают похожую задачу по-разному.

Инструмент Где использовать Что даёт против Drive-by загрузок Когда выбирать Ограничения
NoScript Firefox Блокирует JavaScript и активный контент по умолчанию, разрешения выдаются по доменам Нужна сильная защита и есть готовность вручную разрешать сайты Может ломать сложные сайты, банки, личные кабинеты и интернет-магазины
uBlock Origin в расширенном режиме Firefox, Chrome, Edge и другие Chromium-браузеры Блокирует рекламные и трекерские запросы, может запрещать сторонние скрипты Нужно меньше поломок, но больше защиты, чем у обычного блокировщика рекламы Это не полноценный менеджер разрешений как NoScript
Requestly Chrome, Edge, Firefox Позволяет блокировать или перенаправлять запросы по правилам Есть конкретные домены или URL-шаблоны, которые нужно блокировать Требует понимания правил и адресов запросов
ScriptSafe Chrome, Edge и другие Chromium-браузеры Блокирует JavaScript по сайтам, похож на упрощённый NoScript Нужна простая схема «запретить по умолчанию, разрешить выбранные сайты» Меньше тонких настроек, чем у NoScript
Brave Shields Brave Browser Может блокировать скрипты на сайте, а также рекламу и трекеры Нужно готовое решение без сложной настройки Меньше контроля над отдельными доменами и скриптами
Встроенные настройки JavaScript Chrome, Edge, Firefox Можно запретить JavaScript глобально или разрешить исключения Нет желания ставить расширения Слишком грубый инструмент: обычно нет удобного контроля сторонних скриптов

Как настроить аналоги под ту же задачу

Если NoScript вам не подходит, задача остаётся той же: не давать неизвестным сайтам выполнять лишний код.

uBlock Origin. В обычном режиме он хорошо режет рекламу и трекеры, но против Drive-by загрузок полезнее расширенный режим. Включите блокировку всплывающих окон, сторонних скриптов и подозрительных запросов. Для важных сайтов можно временно отключать только конкретные правила, а не весь блокировщик.

Requestly. Это инструмент для тех, кто понимает, что блокирует. Например, можно создать правило на блокировку скриптов с известного вредоносного домена или запретить загрузку файлов с подозрительного URL-шаблона. Но правило вида «блокировать все .js» сломает почти весь интернет, поэтому такие настройки лучше делать точечно.

ScriptSafe. Хороший вариант для Chrome/Edge, если хочется логику NoScript без перехода на Firefox. Ставьте режим блокировки по умолчанию, а сайты добавляйте в разрешённые только после проверки. Для банков и рабочих сервисов лучше использовать временные разрешения, если инструмент это позволяет.

Brave Shields. Подойдёт, если нужен браузер «поставил и пользуешься». Блокировка скриптов в Brave проще, чем в NoScript, но для обычного пользователя это часто удобнее. Минус — меньше контроля: не всегда понятно, какой именно сторонний скрипт сломал страницу.

Встроенные настройки JavaScript. Самый грубый вариант. Можно запретить JavaScript для всех сайтов и добавить исключения. Проблема в том, что исключение обычно доверяет сайту целиком. Для защиты от Drive-by это слабее, чем по-доменная блокировка в NoScript или ScriptSafe.

Что выбрать в зависимости от ситуации

Если вы используете Firefox и хотите максимальный контроль, ставьте NoScript. Это самый прямой инструмент для задачи «не запускать скрипты без разрешения». Но будьте готовы, что некоторые сайты придётся чинить вручную.

Если вы в Chrome или Edge и не хотите переходить на Firefox, начните с ScriptSafe или uBlock Origin в расширенном режиме. ScriptSafe ближе к NoScript по логике, uBlock Origin — удобнее для повседневной защиты от рекламы, трекеров и части вредоносных запросов.

Если вы не технический пользователь, не начинайте с жёсткого NoScript. Лучше взять Brave с включёнными Shields или uBlock Origin в обычном режиме, добавить запрет всплывающих окон и включить вопрос перед сохранением файлов. Это даст меньше поломок и всё равно заметно снизит риск случайных загрузок.

Если вы работаете с банками, почтой, CRM, документами или платёжными системами, не делайте постоянные разрешения на все связанные домены. Разрешайте только нужное на время работы. После завершения сессии лучше убрать временные разрешения или открыть сервис в отдельном профиле.

Если приходится регулярно заходить на сомнительные сайты, используйте отдельный браузер или отдельный профиль без сохранённых паролей. В таком профиле можно поставить строгий режим NoScript/ScriptSafe и не хранить там ничего важного.

Частые ошибки при защите от Drive-by загрузок

  • Разрешить всё после первой поломки сайта. Это самая частая ошибка. Лучше временно разрешить один домен и проверить, что именно нужно странице.
  • Путать блокировщик рекламы с блокировщиком скриптов. uBlock Origin, AdGuard и похожие инструменты полезны, но если скрипты разрешены, часть кода всё равно может выполняться.
  • Использовать старые браузеры. Никакой блокировщик не спасает от уязвимостей, которые уже исправлены в новых версиях.
  • Доверять сайту только из-за HTTPS. Значок замка означает шифрование соединения, а не то, что сайт безопасен.
  • Оставлять десятки постоянных разрешений. Со временем список Trusted-сайтов разрастается, и пользователь уже не помнит, кому он доверял.
  • Отключать браузерную защиту. Safe Browsing, Enhanced Tracking Protection и похожие функции — это не лишняя нагрузка, а второй слой защиты.
  • Открывать файл сразу после скачивания. Даже если файл выглядит как PDF, архив или документ, его лучше сначала проверить, особенно если загрузка была неожиданной.
  • Ставить сомнительные клоны расширений. Блокировщик скриптов получает широкий доступ к страницам. Устанавливать его нужно только из официального магазина браузера.

Как лучше сделать на практике

Хорошая базовая схема выглядит так:

  1. Поставьте NoScript в Firefox или ScriptSafe/uBlock Origin в Chromium-браузере.
  2. Включите автоматические обновления браузера и защиту от вредоносных сайтов.
  3. В настройках загрузок включите вопрос перед сохранением файла.
  4. Не разрешайте JavaScript всем сайтам глобально.
  5. Для неизвестных сайтов используйте временные разрешения.
  6. Сторонние скрипты разрешайте только если без них функция реально не работает.
  7. После работы с чувствительными сервисами удаляйте временные разрешения.
  8. Раз в месяц проверяйте список разрешённых сайтов и удалённых расширений.

Если сайт после блокировки скриптов выглядит «пустым», это не всегда признак атаки. Многие современные сайты просто не работают без JavaScript. Но если вместе с этим появляются новые вкладки, всплывающие окна, странная кнопка «Обновить браузер», предложение установить кодек или файл начинает скачиваться сам — это уже повод закрыть страницу.

Признаки, что настройка работает нормально

Правильно настроенный блокировщик скриптов не обязан делать интернет идеально гладким. Наоборот, иногда он должен мешать. Хорошие признаки:

  • новые сайты по умолчанию не получают право запускать скрипты;
  • рекламные и трекерские домены часто остаются заблокированными;
  • разрешения выдаются не навсегда, а временно;
  • файлы не скачиваются без ясного действия пользователя;
  • список доверенных сайтов короткий и понятный;
  • браузер спрашивает, куда сохранить файл, а не кладёт его молча в загрузки.

Плохой признак — когда после установки NoScript или аналога все сайты сразу работают как раньше, а в настройках стоит разрешение «всем и навсегда». Это удобно, но почти не защищает от Drive-by сценариев.

Итог

Защита от Drive-by загрузок через NoScript и аналоги строится на простом правиле: неизвестный сайт не должен автоматически запускать скрипты. NoScript в Firefox даёт самый точный контроль, ScriptSafe ближе всего к такой же логике в Chromium-браузерах, uBlock Origin полезен как дополнительный слой, а Brave Shields подойдёт для более простой настройки.

Лучший вариант для большинства осторожных пользователей: блокировать скрипты по умолчанию, разрешать их временно только на нужных сайтах, не доверять сторонним доменам без необходимости и держать браузер обновлённым. Если файл начал скачиваться сам — не открывайте его, отмените загрузку, удалите файл и проверьте, какие разрешения получил сайт.

Оцените статью
PEFile — Безопасность и технологии простым языком