Программирование • 01 июня 2026 • 5 мин чтения

Что такое уязвимости и откуда они берутся

Рассказываем, о том, какие есть виды уязвимостей, как они угрожают бизнесу и как с ними бороться.

Что такое уязвимость

Уязвимость — это слабое место в системе, которое злоумышленники могут использовать в своих целях. Она может быть в программном обеспечении, оборудовании, конфигурации системы или даже в организационных процессах компании. При наличии уязвимости злоумышленники получают возможность нарушить конфиденциальность, целостность или доступность информации. Например, они могут похитить данные пользователей, деньги с кошельков, информацию о бизнесе и т. д.

Находить и устранять уязвимости учат на курсе «Специалист по информационной безопасности». За 11 месяцев студенты учатся защищать компании от киберугроз. После обучения студенты получают диплом о профессиональной переподготовке.

Как появляются уязвимости

Уязвимости возникают на разных этапах жизненного цикла программного обеспечения. К ним относятся, например, ошибки проектирования, ошибки реализации и ошибки конфигурации. Расскажем про основные причины появления уязвимостей.

  • Ошибки проектирования: неточности в алгоритмах, несогласованность в интерфейсах между модулями, внедрение неоптимальных технологий. Такие ошибки сложнее всего обнаружить и устранить, они могут проявляться только при определённых условиях.
  • Ошибки реализации: некорректная организация вычислительного процесса, синтаксические и логические дефекты в коде. Эти ошибки могут приводить к переполнению буфера или другим сбоям в работе системы.
  • Ошибки конфигурации: слишком простые пароли, учётные записи по умолчанию, неправильные настройки безопасности. Такие ошибки встречаются особенно часто и во многом зависят от действий администраторов.
  • Использование сторонних компонентов: добавление в состав ПО библиотек и фрагментов открытого кода без тщательного анализа безопасности. Чужой код часто не проверяют на скрытые проблемы.
  • Недостаточное тестирование: пропуск этапов проверки безопасности перед выпуском продукта. Устаревшее программное обеспечение и слабые криптографические алгоритмы также создают дополнительные бреши.

Современные операционные системы и программы содержат миллионы строк исходного кода. Например, ядро Linux насчитывает почти 30 миллионов строк кода, а ядро Windows 11 — около 50 миллионов. При таком объёме ошибки неизбежны, поэтому компании не могут полагаться на идеальное качество кода и обязаны выстраивать системную работу с уязвимостями.

Самые распространённые типы уязвимостей

OWASP регулярно публикует список десяти самых критичных уязвимостей веб-приложений. В версии 2025 года в список включены новые категории, отражающие актуальные угрозы. Расскажем про некоторые из них.

Список распространённых уязвимостей в 2025 году. Источник
  • Нарушение контроля доступа: ошибка, при которой пользователь получает доступ к объектам или функциям, на которые у него нет прав.
  • Небезопасная конфигурация: неправильные настройки безопасности, оставшиеся учётные записи по умолчанию, открытые панели управления.
  • Уязвимости в цепочке поставок: проблемы, связанные с использованием сторонних библиотек и компонентов.
  • Криптографические уязвимости: использование устаревших или слабых алгоритмов шифрования, неправильное хранение ключей, недостаточная защита данных при передаче.
  • Инъекции: внедрение вредоносного кода через параметры запросов, поля ввода или заголовки.
  • Небезопасное проектирование: фундаментальные недостатки архитектуры системы, заложенные на этапе проектирования.
  • Сбои аутентификации: ошибки в механизмах входа в систему, слабые политики паролей, отсутствие многофакторной аутентификации.
  • Сбои целостности ПО и данных: недостаточная защита от несанкционированного изменения кода или данных.

Помимо этого, в список входят сбои логирования и оповещения — это отсутствие или неполнота журналов событий, что затрудняет обнаружение атак. А также неправильная обработка исключительных условий — ошибки при работе с нестандартными ситуациями, которые могут раскрыть конфиденциальную информацию или нарушить работу системы.

Как находят уязвимости

Поиск уязвимостей ведётся разными методами, которые можно разделить на ручные и автоматизированные. Наилучшие результаты даёт комплексное применение нескольких подходов. Ниже перечислены основные методы поиска уязвимостей.

  • Статический анализ безопасности приложений (SAST) — проверка исходного кода без его запуска. Инструменты SAST сканируют код на наличие известных паттернов уязвимостей ещё до компиляции программы.
  • Динамический анализ безопасности приложений (DAST) — тестирование работающего приложения с помощью моделирования реальных сценариев атак. Метод выявляет уязвимости, которые проявляются только во время выполнения кода.
  • Пентест — имитация действий злоумышленника. Пентестеры пытаются взломать систему, используя те же методы, что и хакеры, и фиксируют все найденные бреши.
  • Сканирование уязвимостей автоматическими сканерами — использование программ для массовой проверки систем. Например, OWASP ZAP применяется для поиска SQL-инъекций и XSS-уязвимостей в веб-приложениях.
  • Баг-баунти — привлечение независимых исследователей безопасности для поиска уязвимостей. Этот метод эффективен для выявления сложных логических ошибок, которые не фиксируют автоматические сканеры.

Специалисты занимаются поиском уязвимостей в зависимости от своей роли. Разработчики фокусируются на ошибках в коде, инженеры ИБ — на устаревших компонентах, а пентестеры имитируют атаки на системы. Главная задача команды безопасности — найти уязвимости раньше злоумышленников, поэтому поиск должен вестись непрерывно, а не раз в полгода.

Как разработчики могут предотвратить уязвимости

Для этого нужно выстраивать безопасность на всех этапах жизненного цикла разработки. Вместо разовых проверок перед релизом компания интегрирует контроль безопасности в ежедневные процессы команды разработки. Такой подход называют DevSecOps — разработкой, в которой безопасность не отдельный этап, а неотъемлемая часть всего процесса. Ниже перечислены основные практики предотвращения уязвимостей.

  • Анализ угроз на этапе проектирования: поиск потенциальных рисков до написания первой строки кода. Команда должна продумать, как злоумышленники могут атаковать систему, и заложить защиту в архитектуре.
  • Регулярные проверки кода: ручной или автоматизированный анализ кода коллегами.
  • Использование SAST- и DAST-инструментов: автоматические сканеры безопасности, встроенные в CI/CD-пайплайн. Они проверяют код и работающее приложение при каждом изменении, не дожидаясь ручного тестирования.
  • Управление зависимостями: регулярный аудит сторонних библиотек и компонентов на наличие известных уязвимостей. При обнаружении проблем необходимо срочно обновлять зависимости до безопасных версий.
  • Обучение разработчиков безопасному кодированию: тренинги по типам уязвимостей и способам их предотвращения.
  • Регулярное обновление ПО: своевременная установка патчей безопасности для всех используемых систем. Многие атаки эксплуатируют уязвимости, для которых уже выпущены исправления, но компании их не установили.

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

Находить и устранять уязвимости учат на курсе «Специалист по информационной безопасности». За 11 месяцев студенты учатся защищать компании от киберугроз. После обучения студенты получают диплом о профессиональной переподготовке.

Почему специалист по безопасности нужен каждой компании

Даже небольшие компании, которые не хранят секретных данных, сталкиваются с киберугрозами. Злоумышленники атакуют не только корпорации, но и малый бизнес, используя автоматизированные инструменты массового поиска уязвимостей. По данным УЦСБ SOC, в 2025 году не менее 30% всех кибератак в России совершены через взлом подрядчиков, что делает цепочку поставок уязвимой для компаний любого размера.

Специалист по информационной безопасности выполняет несколько ключевых функций. Он обеспечивает соблюдение требований регуляторов, организует регулярные проверки защищённости инфраструктуры и управляет процессом установки патчей. Без такого сотрудника компания рискует пропустить критическую уязвимость, что может привести к утечке данных или остановке бизнеса.

Статью подготовили:
Валентина Бокова
Яндекс Практикум
Редактор
Полина Овчинникова
Яндекс Практикум
Иллюстратор

Подпишитесь на наш ежемесячный дайджест статей —
а мы подарим вам полезную книгу про обучение!

Поделиться
Помогите Алисе попасть в страну IT и получите в подарок гайд, полезные книги и скидку 10%