Распространенные уязвимости программного обеспечения

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

К сожалению, даже тщательная разработка не гарантирует отсутствие ошибок в программном продукте. Уязвимости могут появиться вследствие задействования сторонних компонентов или свободно распространяемого кода (open source). Такие компоненты чаще всего используются «как есть», без углубленного тестирования на безопасность.

Уязвимости ПО

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

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

Уязвимости в зависимости от стадии появления возникают при проектировании, в процессе реализации, в конфигурации аппаратной части и программной среды.

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

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

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

Уязвимости программного обеспечения

Знакомо ли вам понятие уязвимости нулевого дня? Этот термин используется в отношении ошибок в программном коде, не найденных разработчиками на этапе тестирования. Сюда же можно отнести вредоносные программы, вирусы, сетевые черви, боты и трояны, против которых еще не разработана какая-либо защита.

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

Свежий список наиболее распространенных уязвимостей традиционно публикуется на сайте Common Weakness Enumeration (CWE). Данный перечень представляет собой официальный реестр или словарь общих дефектов безопасности, способных проявиться в архитектуре, проектировании, коде продукта, и теоретически могут быть использованы злоумышленниками. Рейтинг CWE Top 25, позволяет разработчикам сократить количество слабых мест в своем программном обеспечении.

  • Пользователи могут минимизировать влияние уязвимостей и предупредить возможный ущерб, придерживаясь, как минимум, следующих правил:
  •   •   своевременно устанавливать выпускаемые разработчиками исправления (патчи) для приложений или настроить автоматическое обновление (при наличии возможности);
  •   •   не устанавливать программы, качество которых вызывает сомнения;
    •   •   использовать антивирусное программное обеспечение с актуальными базами данных.
Поделиться: