Уровень безопасности сайтов: что показали 884 проверки Smart Audit
Smart Audit пассивно проверил 884 сайта компаний. Средняя оценка безопасности — 19 из 100, а у каждого пятого сайта снаружи открыты служебные файлы: списки пользователей, папки Git, файлы с паролями, даже копии баз данных. Разбираем цифры без жаргона: чем это грозит владельцу и с чего начинать исправление.
- Что мы проверили — 884 сайта компаний через Smart Audit: пассивно, только публичные страницы, ничего не меняя. Средняя оценка безопасности — 19 из 100.
- Что нашли — У каждого пятого (19%) открыты служебные файлы: списки пользователей, папки Git, файлы .env, даже копии баз данных. 9 из 10 сайтов не имеют политики безопасности контента (CSP).
- Что делать — Сначала закрыть открытые служебные файлы и обновить систему, затем заголовки, HTTPS и формы. Свой сайт можно проверить бесплатно за три минуты.
Сайт, который открывается, ещё не обязательно защищён. Владелец видит главную страницу, форму заказа и каталог — и делает вывод, что всё в порядке. Но часть того, что происходит с сайтом, видна лишь снаружи, глазами человека, который его проверяет.
Мы запустили сервис Smart Audit, который именно так и смотрит на чужие сайты: пассивно, только на публичные страницы. Он ничего не меняет, не подбирает паролей и не лезет внутрь. На момент подготовки этой статьи у нас были результаты 884 уникальных сайтов компаний — для каждого берётся последняя успешная проверка. Мы не отбирали «удачные» или «неудачные»: в выборке и интернет-магазины, и корпоративные сайты, и медиа, и сайты крупных организаций. Названий не приводим — нас интересует картина, а не конкретные адреса.
Ниже — что мы увидели, чем это грозит владельцу и с чего начинать исправление.
Общая картина: 22 балла из 100
Средняя общая оценка по всем 884 сайтам — 22 из 100. Отдельно по направлениям: безопасность — 19, скорость — 18, поисковая видимость — 17.
- 480 сайтов (54%) набрали меньше 20 баллов из 100;
- 286 (32%) — от 20 до 39;
- 96 (11%) — от 40 до 59;
- лишь 22 сайта (2,5%) дошли до 60 и выше.
По оценке именно безопасности картина такая: у 466 сайтов (53%) она ниже 10 баллов, у 652 (74%) — ниже 30, и лишь 75 сайтов (8,5%) набрали 60 и больше.
Сразу оговорка, чтобы цифры не прочитали неправильно. «22 из 100» не означает, что сайт защищён на 22%, и тем более — что его взломали. Это расстояние до базового набора проверок: включает ли сайт те защиты, которые давно считаются нормой. Большинство баллов теряется на вещах, которые исправляются быстро и недорого. Именно поэтому на этих цифрах стоит остановиться.
Первый слой: двери без засовов
Каждая страница, которую сервер отдаёт браузеру, сопровождается служебными «инструкциями»: что этой странице разрешено, а что нет. Это так называемые защитные заголовки. Они не делают сайт неприступным, но сдерживают удар, когда найдётся другая брешь. И здесь нехватка почти тотальная:
- Политика безопасности контента (CSP) отсутствует на 90% сайтов. Она определяет, какие скрипты браузеру разрешено выполнять на странице. Без неё любой подсаженный код работает наравне со «своим». Именно так на страницах оформления заказа появляются скиммеры — скрипты, которые незаметно копируют данные банковских карт. Для магазина (а их в выборке 130) это самый дорогой отсутствующий «засов».
- Политики разрешений (Permissions-Policy) нет у 93%. Она ограничивает, что встроенные на сайт виджеты могут запрашивать у посетителя: камеру, микрофон, геолокацию.
- Политики передачи адреса (Referrer-Policy) нет у 88%. Без неё полные адреса ваших страниц — вместе с внутренними номерами заказов или токенами в ссылках — улетают в сторонние счётчики и рекламные сервисы.
- Защиты от встраивания в чужие рамки нет у 73%. Злоумышленник может показать ваш сайт в прозрачной рамке на своей странице и заставить человека нажать «кнопку», которая на самом деле лежит на вашем сайте. Этот приём называют кликджекингом.
- Запрета «угадывать» тип файла нет у 71% (nosniff).
- HSTS не включён у 62%. Без него первый визит человека может пойти по незашифрованному каналу — а в общественной сети Wi-Fi это шанс подмены страницы.
Честно: отсутствие заголовка — это не взломанный сайт. Это отсутствующий уровень защиты. Но исправляется он несколькими строками в настройках сервера, поэтому его отсутствие почти всегда говорит об одном — до настроек безопасности никто не добирался.
Второй слой: то, что лежит на виду
Этот раздел серьёзнее. У 172 сайтов из 884 (19%) — почти у каждого пятого — снаружи доступны служебные адреса, которые никогда не должны были быть публичными. У некоторых сайтов таких мест сразу несколько. Распределение по типам:
- Список учётных записей WordPress — 103 сайта (12%). Стандартный адрес отдаёт логины пользователей, в том числе администраторов. Половина работы злоумышленника сделана: логин известен, остаётся подобрать пароль.
- Служебная папка Git — 45 сайтов (5%). Из неё можно восстановить исходный код сайта, а в истории изменений бывают пароли и ключи, которые когда-то «временно» вписали в код.
- Страница phpinfo — 43 сайта (5%). Она показывает версии PHP, модули, пути на сервере, переменные окружения. Для атакующего это готовая карта местности.
- Служебная страница состояния сервера — 34 сайта (4%). Видно, какие адреса сейчас открывают посетители и с каких IP.
- Файл настроек .env — 33 сайта (4%). В таком файле обычно лежат пароли к базе данных, ключи почты и платёжных сервисов.
- Копия базы данных — 28 сайтов (3%). Файл, который кто-то оставил в корне сайта «на минутку»: клиенты, заказы, телефоны, адреса.
Важно понимать, что здесь ничего взламывать не нужно. Достаточно открыть адрес в браузере. Smart Audit в содержимое этих файлов не заходит: он лишь фиксирует, что по такому адресу что-то отвечает, а содержимое не читается и не сохраняется. Но то, чего не делаем мы, может сделать кто угодно другой — и автоматические сканеры перебирают такие адреса круглосуточно по всему интернету.
Третий слой: устаревшее программное обеспечение
Среди проверенных сайтов больше всего на WordPress — 222 (25%), далее OpenCart — 88 (10%). У остальных платформа не определилась или сайт написан «на заказ».
154 сайта (17%) сами рассказывают, какая у них версия системы. Это видно в служебных метках на странице. Сами по себе они не вредят — вредит сочетание со старой версией. Среди тех, кто открыл версию WordPress, 22 сайта работают на ветках 4 и 5, выпущенных много лет назад. Для таких версий рассчитывать, что новые уязвимости кто-то закроет, не стоит.
Отдельная тема — версия самого сервера. У 247 сайтов (28%) заголовки ответа называют точные версии серверного ПО. Атакующему не приходится гадать: он видит версию и сразу берётся за известный для неё способ. Насколько это существенно, видно на примере критических уязвимостей PHP: там единственная защита — своевременное обновление. А об обратной стороне — что бывает, когда обновление происходит без подготовки, — мы рассказывали в разборе автообновления плагина.
Четвёртый слой: формы и соединения — место, где в сайт попадают данные клиентов
Именно через формы человек передаёт вам имя, телефон, адрес, иногда оплату. Поэтому то, как они устроены, важнее всего. Что нашли:
- 489 сайтов (55%) — формы без защиты от подделки запроса (CSRF). Это когда чужая страница может заставить браузер вашего посетителя или вашего администратора отправить форму от его имени, не спрашивая его.
- 543 (61%) — формы, которые собирают личные данные без согласия на их обработку. Это не только о безопасности: это ещё и вопрос соблюдения законодательства о персональных данных.
- 532 (60%) — формы без защиты от ботов. Последствие знакомо всем, кто видел почту, забитую спамом из «заявок».
- 76 сайтов (9%) — формы передают личные данные в адресе страницы (метод GET). Телефон и имя остаются в истории браузера, в журналах сервера и попадают в сторонние сервисы вместе с адресом.
- 321 (36%) — cookie без защитных меток. Их легче перехватить или прочитать скриптом.
И несколько базовых вещей, которые, казалось бы, давно должны быть у всех: 35 сайтов (4%) открываются вообще без шифрования (браузер показывает на них предупреждение «Не защищено»), у 43 сертификат истекает в ближайшее время, а на 36 сайтах часть содержимого защищённой страницы подгружается по незащищённому каналу — из-за этого шифрование действует не полностью.
Чем это грозит владельцу
Если отбросить жаргон, рисков для бизнеса всего несколько.
- Утечка данных клиентов. Открытая копия базы или файл настроек — это не «техническая мелочь», а возможность забрать список ваших клиентов, ничего не взломав. Дальше — репутационные потери и ответственность за сохранность персональных данных.
- Чужой код на вашем сайте. Обновления, которые не успели поставить, плюс отсутствие CSP — и на страницах появляется реклама казино, перенаправления на сторонние сайты или скиммер на странице оплаты. Вы можете узнать об этом от клиента, а не от себя.
- Пометка «опасный сайт» и просадка в поиске. Браузеры и поисковые системы не рискуют посетителями. Взломанный сайт может просесть в выдаче на недели, и возвращаться придётся дольше, чем вы его теряли.
- Простой и цена восстановления. Восстановить после взлома обычно стоит в разы дороже, чем потребовалось бы на профилактику. А пока сайт лежит — нет заказов.
- Потеря доверия партнёров. Всё чаще крупные клиенты и тендеры просят показать, как у вас с безопасностью. Ответ «не знаем» очков не добавляет.
С чего начинать: порядок, который работает
- Закрыть открытые служебные файлы. Это самые дорогие дыры, а исправляются они быстрее всего: обычно хватает часа работы. Файлы с паролями — убрать из доступа, а сами пароли после этого сменить, потому что считать их неутёкшими нельзя.
- Обновить систему и плагины и убрать из ответов сервера точные версии. Обновлять — на копии сайта, а не наугад на рабочем.
- Добавить защитные заголовки. Начинать с HSTS, защиты от встраивания, nosniff и Referrer-Policy — они почти никогда ничего не ломают. CSP вводить постепенно, сначала в режиме наблюдения.
- Привести в порядок HTTPS: автоматическое продление сертификата, перенаправление с http, отсутствие незащищённого содержимого.
- Проверить формы: токен против подделки запроса, защита от ботов, передача только методом POST, понятное согласие на обработку данных.
- Настроить копии вне сайта и мониторинг. Копия, которая лежит рядом с сайтом, при взломе исчезает вместе с ним. А доступность сайта должен проверять не клиент.
Как мы помогаем
Smart Audit отвечает на вопрос «что именно не так» на языке приоритетов: отчёт делит находки на те, что видны сразу, и те, что заложены в самой платформе сайта. Первые мы закрываем на вашем текущем сайте. Вторые — старые версии, ограничения системы, невозможность нормально настроить защиту — обычно решаются переездом на нашу систему Smart CMS, где защитные заголовки, защита форм и обновления уже встроены в основу. Переезд мы выполняем сами: переносим страницы и адреса, сохраняем настройки поисковой видимости и помогаем на каждом этапе, чтобы вы не потеряли ни трафика, ни заказов.
С чего бы вы ни решили начинать, сначала стоит увидеть собственную картину.
Проверить свой сайт можно бесплатно, без регистрации, за три минуты — на audit.sgt.com.ua. А если хотите, чтобы мы посмотрели на результат вместе с вами и прямо сказали, что исправлять первым, — напишите нам.