Рівень безпеки сайтів: що показали 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. А якщо хочете, щоб ми подивилися на результат разом із вами й сказали прямо, що виправляти першим, — напишіть нам.