Application Security Redux: все дело в приложениях (часть 1)

Опубликовано: 6 Апреля, 2023
Application Security Redux: все дело в приложениях (часть 1)

  • Снижение безопасности приложений: все дело в приложениях (часть 8)

Введение

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

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

Безопасность приложений: больше, чем кажется на первый взгляд

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

Комплексная стратегия безопасности приложений будет направлена на следующее:

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

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

Дефекты кодирования (уязвимости приложений)

Если вы разработчик, вы, вероятно, ориентированы на код, поэтому, когда вы думаете о безопасности приложений, первое, что приходит на ум, это недостатки в дизайне прикладного программного обеспечения, которые делают его уязвимым для использования. Даже если вы не разработчик, вы не ошибетесь, сосредоточившись на этой конкретной угрозе. Согласно документу Министерства внутренней безопасности, Институты разработки программного обеспечения подсчитали, что примерно 90% инцидентов в области безопасности происходят из-за эксплойтов против дефектов в программном коде.

В связанном документе изложены некоторые рекомендации по решению этой проблемы с помощью программы Software Assurance Program DHS. Заявленная цель состоит в том, чтобы уменьшить количество уязвимостей в программном обеспечении, уменьшить количество случаев эксплуатации существующих уязвимостей и помочь разработчикам создавать более надежные и безопасные приложения.

Типы уязвимостей прикладного ПО

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

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

Веб-браузеры являются одним из наиболее часто используемых приложений, потому что, в отличие от многих приложений, они используются практически всеми, кто пользуется Интернетом. У всех нас есть веб-браузер (или два, или четыре), установленный на наших компьютерах, и большинство из нас использует его каждый день. Неудивительно, что браузер является излюбленной мишенью злоумышленников, выискивающих уязвимости, которые они могут использовать для выполнения своей грязной работы, и главным объектом внимания исследователей безопасности, которые стремятся найти и сообщить об уязвимостях, чтобы их можно было исправить до того, как эксплойты произойдут «в самом низу». дикий." В 2014 году количество уязвимостей веб-браузеров резко возросло.

Недостатки межсайтового скриптинга (XSS) — это распространенный тип уязвимости, который часто встречается в веб-приложениях. Злоумышленник может использовать уязвимости XSS для внедрения вредоносного контента на сайт и для обхода политик безопасности, таких как политики одинакового происхождения, которые предназначены для предотвращения доступа сценариев с одной веб-страницы к данным на другой веб-странице, если они не имеют того же источника.

Эксплойты веб-браузера часто нацелены на надстройки и веб-технологии, такие как ActiveX, Java и JavaScript, но также могут быть нацелены на HTML или парсер браузера PDF. Говоря об этом, еще одним типом приложений, которые часто становятся целью злоумышленников, является программное обеспечение PDF. Опять же, это потому, что это почти повсеместно; нам всем нужно читать PDF-файлы, поэтому у всех у нас установлен Adobe Reader или какое-либо другое приложение для чтения PDF-файлов.

Еще одним типом уязвимости, нацеленным на веб-приложения, является уязвимость внедрения SQL, которую злоумышленники могут использовать для чтения, изменения или удаления данных во внутренней базе данных, доступ к которой осуществляется через Интернет, путем отправки специально созданных вредоносных данных в приложение. Уязвимость обычно возникает из-за того, что приложение не может проверить или закодировать данные, которые вводят пользователи, которые используются в запросе или команде. Внедрение LDAP — это еще один тип уязвимости веб-приложений, который можно использовать для доступа и изменения объектов в дереве каталогов протокола облегченного доступа к каталогам (LDAP).

Предотвращение уязвимостей приложений

Есть два аспекта устранения угрозы уязвимости приложений:

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

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

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

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

Примечание:
Хотя теоретически наибольшее количество уязвимостей будет присутствовать при первом выпуске программного обеспечения, а затем оно будет становиться все более и более безопасным по мере обнаружения и исправления этих недостатков, в реальном мире это не так. отчасти потому, что новый код, предназначенный для исправления одной уязвимости, может и слишком часто приводит к совершенно новой уязвимости.

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

Устранение существующих уязвимостей

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

Некоторые приложения также могут обновляться автоматически. Другие программные приложения необходимо обновлять вручную. Поставщики приложений, особенно мелкие, часто не так быстро реагируют на сообщения об уязвимостях, обнаруженных исследователями безопасности, и не проводят столько внутренних испытаний и исследований, чтобы найти уязвимости, и/или могут выпускать исправления не так часто, как это делают крупные поставщики ОС. Даже такая крупная компания, как Oracle, использует ежеквартальный цикл исправлений, так что у вас может быть три месяца между временем обнаружения уязвимости (и потенциальной эксплуатацией) и временем, когда поставщик выпускает обновления для исправления уязвимости.

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

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

Резюме

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

  • Снижение безопасности приложений: все дело в приложениях (часть 8)