В 2021 году Google выпустила специальное обновление Chrome: текущая версия содержала уязвимость, благодаря которой хакеры могли выполнять свой код на веб-страницах пользователей. В том же году стало известно об уязвимости, которая позволяла перехватить управление веб-сервером Apache. Она навредила многим компаниям, в том числе Microsoft, IBM и Cisco. Но кроме этих уязвимостей в ИТ много других. Сегодня говорим о том, как это устроено изнутри и о самых опасных — уязвимостях нулевого дня.
Что такое уязвимость
Уязвимостью называют какое-то слабое место в программном обеспечении, оборудовании или протоколах безопасности. Причины появления уязвимости могут быть самыми разными: ошибки программирования, конструктивные недостатки, неправильная конфигурация и человеческий фактор.
Если приводить метафору, уязвимость можно сравнить с брешью в стене, через которую можно незаметно проникнуть внутрь крепости, вынести что угодно и выйти до того, как пропажу заметят.
Целью при использовании уязвимости может быть кто и что угодно:
- государственные организации;
- крупные компании;
- пользователи, которые используют компьютеры со слабой защитой — из них можно создавать ботнетов, с помощью которых устраивать DDoS-атаки или массово рассылать спам;
- оборудование, прошивки и устройства интернета вещей.
Уязвимость, эксплойт и атака
Уязвимость — лишь потенциальная угроза, которая существует только до того момента, пока её не устранили. Уязвимости бывают в любой системе, вопрос лишь в том, насколько посторонние люди заинтересованы в том, чтобы использовать брешь.
Эксплойт — это компьютерный код или программа, который использует уязвимость, пока она существует. Обычно у хакеров есть преимущество во времени. Написать вредоносный код часто легче и быстрее, чем разработать обновление, которое устранит уязвимость.
Атака — непосредственное применение эксплойта к уязвимой системе. При этом атака может продолжаться как угодно долго, пока последствия не станут заметны. Бывает, что разработчики узнают об атаках и уязвимостях в коде, только когда последствия становятся ощутимыми.
Мы называем злоумышленников хакерами, но они бывают разными:
- киберпреступники — хакеры, которые преследуют финансовую цель и совершают с уязвимостями криминальные действия;
- хактивисты — хакеры с политическими или социальными целями, которые привлекают внимание к себе и своим движениям;
- корпоративные шпионы — хакеры, которые добывают информацию о компаниях, например для конкурентов;
- кибервоины — хакеры, которые представляют интересы каких-то политических деятелей или даже отдельных стран;
- «белые» хакеры — энтузиасты, которые ищут уязвимости из интереса, для них это что-то вроде хобби или спорта;
- багхантеры — хакеры, которые ищут уязвимости за вознаграждение. В отличие от киберпреступников, багхантеры действуют в правовом поле. Крупные компании часто объявляют открытые конкурсы багбаунти, чтобы привлечь багхантеров.
Какие бывают уязвимости
Уязвимость удалённого выполнения кода — это уязвимость, которая позволяет хакерам выполнить вредоносный код в системе. Хакер выполняет эксплойт на сайте, который лежит на каком-то сервере, и таким образом получает доступ к компьютеру.
На сервере злоумышленники могут украсть конфиденциальные данные, установить вредоносное ПО и совершить другие действия, которые причинят вред системе. Например, изменить цены в интернет-магазине, по которым дорогие товары успеют купить за копейки. Или украсть секретные документы о планируемом слиянии компании с другой и обрушить биржу акций.
Уязвимость SQL-инъекции — это уязвимость, которая позволяет управлять извне базой данных, чтобы получить к ним доступ. Происходит это так: хакер подбирает запрос к интерфейсу, чаще всего к веб-сайту, в ответ на который база данных отдаёт какую-то информацию или совершает с ней какие-то действия, например копирует или удаляет. Чаще всего именно таким образом мошенники получают персональные данные пользователей какого-то сайта, сервиса или системы.
Уязвимость неавторизованного доступа — это угроза безопасности, которая вызвана тем, что доступ к интерфейсу управления оборудованием или данными могут получить посторонние. Так можно проникнуть на сервер или в базу данных практически напрямую. Например, таким образом можно взломать какой-нибудь сайт и разместить на нём своё содержимое.
Такие уязвимости появляются из-за слабых паролей, а также в ситуациях, когда сотрудникам или подрядчикам выдают уровень доступа больше, чем нужно. При злоупотреблении доступом это может привести к плохим последствиям. Часто бывает, что после увольнения сотрудника его доступы забывают удалить, — это тоже создаёт уязвимость.
Ещё бывают другие уязвимости, например переполнения буфера, «испорченного ввода» и следствия ошибок синхронизации, но эта тема тянет на отдельную статью. Напишите в комментариях, если вам интересно будет об этом почитать.
Классификацией уязвимостей занимается международная некоммерческая организация OWASP (Open Web Application Security Project, или «Открытый проект по обеспечению безопасности веб-приложений»). Большинство разработчиков и специалистов по безопасности знает OWASP Top-10 — рейтинг десяти наиболее распространённых уязвимостей веб-приложений.
Известные уязвимости и дефекты безопасности регулярно пополняют список CVE (Common Vulnerabilities and Exposures, или «База данных общеизвестных уязвимостей информационной безопасности»).
Малвари
Малварь (от английского malware) — это эксплойт, то есть вредоносный код, который приходит на почту или может быть на флешке. Когда пользователь переходит по ссылке в тексте или открывает файл, прикреплённый к письму или хранящийся на флешке, хакер получает доступ к компьютеру пользователя или даже ко всей локальной сети.
Есть статистика, что 80% кибератак происходит с помощью малварей. Причины бывают разные, но в основном так происходит из-за низкой компьютерной грамотности сотрудников, доверчивости людей и слабой безопасности системы.
Уязвимости нулевого дня, он же zero-day и 0day
Нулевым днём называют день, когда стало известно о какой-то уязвимости, которую хакеры уже использовали. Получается, что уязвимость критическая и у разработчиков есть 0 дней, чтобы устранить её, например написать патч, который закроет брешь в системе. При этом надо предупредить всех, кто подвержен риску, чтобы исправление безопасности внедрили как можно скорее.
Поскольку уязвимости нулевого дня заранее не известны, на случай их использования нет готовых средств защиты. Это делает такие уязвимости очень опасными и способными нанести вред системам, организациям или отдельным людям. Пока уязвимость не известна разработчикам, злоумышленники могут очень долго и незаметно проводить скрытые целевые атаки.
❗️ Уязвимости нулевого дня — самые критичные с точки зрения безопасности. От них нет защиты, потому что про них ещё никто не знает, но их можно использовать только один раз — после этого про уязвимость узнают специалисты по кибербезопасности и начинают разрабатывать защиту, выпускать патчи и обновления.
Как разработчики обнаруживают уязвимости
Если речь не идёт о том, что об уязвимости стало известно из-за последствий атаки, то обычно для обнаружения уязвимостей выполняют такие действия:
- анализируют код с помощью динамических и статических отладчиков;
- используют сканеры уязвимости — эти программы проверяют сайты или другие программы на наличие брешей, которыми могут воспользоваться злоумышленники;
- моделируют атаки на код программы, проводят его проверки и очищают код от уязвимостей;
- привлекают багхантеров — белых хакеров, которые ищут уязвимости и сообщают о них разработчикам;
- ищут новые уязвимости, которые могли появиться после обновлений.
Как защититься от уязвимостей
Защищаться от любых уязвимостей нужно комплексно — одной меры недостаточно. Полностью предотвратить уязвимости невозможно, но некоторые действия могут помочь снизить риск.
Поскольку целью могут быть даже обычные домашние компьютеры и сети, начнём с них. Вот что рекомендуется делать:
- Соблюдать цифровую гигиену — не посещать подозрительные сайты, не скачивать и не открывать подозрительные файлы.
- Регулярно обновлять программное обеспечение: операционные системы, программы и плагины — до последних версий. Разработчики часто выпускают патчи и обновления, чтобы закрыть уже обнаруженные бреши.
- Пользоваться только программами доверенных производителей и устанавливать их только из официальных источников.
- Использовать брандмауэр (файрвол) — эта программа проверяет и фильтрует входящий трафик, блокируя атаки на входе.
- Использовать антивирус — эта программа изучает поведение других программ в системе и может идентифицировать потенциально вредоносные действия и заблокировать то, что их совершает. Если в вирусной базе данных есть информация о конкретной угрозе, антивирус распознает её безошибочно.
- Регулярно выполнять резервное копирование данных — если с ними что-то случится, их удастся восстановить.
- Обучить других пользователей безопасному использованию интернета и рассказать им о различных кибератаках и принципах социальной инженерии — злоумышленники часто втираются в доверие к людям, чтобы получить доступ к цели.
В компаниях обычно принимают такие дополнительные меры:
- Ограничивают права пользователей на действия с рабочим компьютером, чтобы у них не было возможности устанавливать сторонние программы.
- Ограничивают доступ пользователей файлами и системами, которые необходимы им для работы — например, чтобы сотрудники бухгалтерии не имели доступа к базам данных отдела продаж.
- Сегментируют сеть, чтобы в случае атаки вред мог распространиться только на её отдельные участки.
- Используют системы обнаружения и предотвращения проникновений (IDS/IPS). Такие системы отслеживают весь сетевой трафик, включая исходящий и внутри сети, и могут распознать подозрительные или вредоносные действия. Если что-то обнаружено, система блокирует доступ или предупреждает о потенциальной атаке. IDS/IPS не позволят обмениваться в локальной сети вредоносными файлами. Такие системы также не дадут просматривать и скачивать подозрительные страницы и файлы с устройств, подключённых к корпоративной сети Wi-Fi.
- Регулярно отправляют сотрудников отдела информационной безопасности на обучение работе с развёрнутыми в сети инструментами и курсы повышения квалификации.
- Используют сканеры уязвимости.
- Регулярно проводят проверку безопасности и тестирования на проникновение. Этим занимаются специалисты-пентестеры.