Безопасность приложений - Application security

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

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

Условия

  • Актив. Ценный ресурс, такой как данные в базе данных, деньги на счете, файл в файловой системе или любой системный ресурс.
  • Уязвимость. Слабость или пробел в программе безопасности, которые могут быть использованы угрозами для получения несанкционированного доступа к активу.
  • Атака (или использовать). Действие, предпринятое для нанесения вреда активу.
  • Угроза. Все, что может использовать уязвимость и получить, повредить или уничтожить актив.

Методы

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

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

Правильное использование этих методов на протяжении всего жизненный цикл разработки программного обеспечения (SDLC) обеспечение максимальной безопасности - это роль группы безопасности приложений.

Угрозы и атаки приложений

Согласно шаблонам и практике Повышение безопасности веб-приложений В книге представлены классы распространенных угроз и атак безопасности приложений:

КатегорияУгрозы и атаки
Проверка вводаПереполнение буфера; межсайтовый скриптинг; SQL-инъекция; канонизация
Взлом программного обеспеченияЗлоумышленник изменяет поведение существующего приложения во время выполнения для выполнения неавторизованных действий; эксплуатируется с помощью двоичного исправления, подстановки кода или расширения кода
АутентификацияПодслушивание сети; Атака грубой силы; словарные атаки; воспроизведение файлов cookie; кража учетных данных
АвторизацияПовышение привилегий; разглашение конфиденциальных данных; подделка данных; заманивающие атаки
Управление конфигурациейНесанкционированный доступ к интерфейсам администрирования; несанкционированный доступ к хранилищам конфигурации; получение данных конфигурации в открытом виде; отсутствие индивидуальной ответственности; сверхпривилегированные учетные записи процессов и служб
Конфиденциальная информацияДоступ к конфиденциальному коду или данным в хранилище; прослушивание сети; подделка кода / данных
Управление сессиейЗахват сеанса; повтор сеанса; человек посередине
КриптографияПлохая генерация ключей или управление ключами; слабое или нестандартное шифрование
Изменение параметровМанипулирование строкой запроса; манипулирование полями формы; манипуляции с файлами cookie; Манипуляции с HTTP-заголовками
Управление исключениямиРаскрытие информации; отказ в обслуживании
Аудит и логированиеПользователь отрицает выполнение операции; злоумышленник бесследно использует приложение; злоумышленник заметает следы

В OWASP сообщество публикует список из 10 основных уязвимостей для веб-приложений и описывает передовые методы обеспечения безопасности для организаций, стремясь создать открытые стандарты для отрасли.[1][рекламный источник? ] По состоянию на 2017 год организация перечисляет основные угрозы безопасности приложений следующим образом:[2]

КатегорияУгрозы / атаки
ИнъекцияSQL-инъекция; NoSQL; Команда ОС; Объектно-реляционное отображение; LDAP-инъекция
Сломанная аутентификацияУчетная начинка; атаки методом грубой силы; слабые пароли
Раскрытие конфиденциальных данныхСлабая криптография; не принудительное шифрование
Внешние сущности XMLАтака на внешний объект XML
Сломанный контроль доступаНеправильная конфигурация CORS; принудительный просмотр; повышение привилегий
Неправильная конфигурация безопасностиНеисправленные недостатки; невозможность установить значения безопасности в настройках; устаревшее или уязвимое программное обеспечение
Межсайтовый скриптинг (XSS)Отраженный XSS; Сохраненный XSS; DOM XSS
Небезопасная десериализацияИзменена структура объекта и данных; подделка данных
Использование компонентов с известными уязвимостямиУстаревшее программное обеспечение; отказ от поиска уязвимостей; неспособность исправить базовые платформы платформы; отказ обновленной или обновленной совместимости библиотеки
Недостаточное ведение журнала и мониторингНеспособность регистрировать события, подлежащие аудиту; невозможность создания сообщений ясного журнала: несоответствующие предупреждения; неспособность обнаружить или предупредить об активных атаках в реальном времени или почти в реальном времени

Безопасность мобильных приложений

Ожидается, что доля мобильных устройств, обеспечивающих функциональность открытой платформы, в будущем будет увеличиваться. Открытость этих платформ предлагает значительные возможности для всех частей мобильной экосистемы, предоставляя возможность гибкого предоставления программ и услуг = опции, которые могут быть установлены, удалены или обновлены несколько раз в соответствии с потребностями и требованиями пользователя. Однако открытость влечет за собой ответственность, и неограниченный доступ к мобильным ресурсам и API со стороны приложений неизвестного или ненадежного происхождения может привести к повреждению пользователя, устройства, сети или всего перечисленного, если не будет управляться подходящими архитектурами безопасности и сетевыми мерами предосторожности. Безопасность приложений в той или иной форме обеспечивается на большинстве мобильных устройств с открытой ОС (ОС Symbian,[3] Microsoft,[нужна цитата ] Заваривать, так далее.). В 2017 году Google расширил Программа вознаграждения за уязвимости для защиты уязвимостей, обнаруженных в приложениях, разработанных третьими сторонами и доступных через Google Play Store.[4] Отраслевые группы также создали рекомендации, включая Ассоциация GSM и Открытая платформа мобильных терминалов (OMTP).[5]

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

  • Белый список приложений
  • Обеспечение безопасности транспортного уровня
  • Надежная аутентификация и авторизация
  • Шифрование данных при записи в память
  • Песочница приложений
  • Предоставление доступа к приложению на уровне API
  • Процессы, привязанные к идентификатору пользователя
  • Предопределенные взаимодействия между мобильным приложением и ОС
  • Требование ввода данных пользователем для привилегированного / повышенного доступа
  • Правильная обработка сеанса

Тестирование безопасности приложений

Методы тестирования безопасности ищут уязвимости или дыры в безопасности в приложениях. Эти уязвимости оставляют приложения открытыми для эксплуатация. В идеале тестирование безопасности проводится на протяжении всего жизненный цикл разработки программного обеспечения (SDLC), чтобы можно было своевременно и тщательно устранять уязвимости. К сожалению, тестирование часто проводится в конце цикла разработки. С ростом Непрерывная доставка и DevOps как популярные модели разработки и развертывания программного обеспечения,[6][рекламный источник? ] модели непрерывной безопасности становятся все более популярными.[7][рекламный источник? ][8][рекламный источник? ]

Сканеры уязвимостей, а точнее сканеры веб-приложений, также известные как тестирование на проникновение инструменты (т.е. этический взлом tools) исторически использовались организациями безопасности в корпорациях и консультантами по безопасности для автоматизации тестирования безопасности HTTP-запросов / ответов; однако это не заменяет необходимость фактического обзора исходного кода. Проверка физического кода исходного кода приложения может выполняться вручную или автоматически. Учитывая общий размер отдельных программ (часто 500 000 строк кода и более), человеческий мозг не может выполнить всесторонний анализ потока данных, необходимый для того, чтобы полностью проверить все обходные пути прикладной программы и найти точки уязвимости. Человеческий мозг больше подходит для фильтрации, прерывания и составления отчетов о выходных данных автоматических инструментов анализа исходного кода, доступных на рынке, в отличие от попыток проследить все возможные пути через скомпилированную базу кода, чтобы найти уязвимости на уровне первопричины.

Есть много видов автоматизированных инструментов для выявления уязвимостей в приложениях. Некоторые из них требуют большого опыта в области безопасности, а другие предназначены для полностью автоматизированного использования. Результаты зависят от типов информации (источник, двоичный код, HTTP-трафик, конфигурация, библиотеки, соединения), предоставляемой инструменту, качества анализа и объема обнаруженных уязвимостей. К распространенным технологиям, используемым для выявления уязвимостей приложений, относятся:

Статическое тестирование безопасности приложений (SAST) - это технология, которая часто используется в качестве инструмента анализа исходного кода. Метод анализирует исходный код на наличие уязвимостей до запуска приложения и используется для усиления кода. Этот метод дает меньше ложных срабатываний, но для большинства реализаций требуется доступ к исходному коду приложения.[9] и требует экспертной конфигурации и большой вычислительной мощности.[10][рекламный источник? ]

Динамическое тестирование безопасности приложений (DAST) - это технология, которая может находить видимые уязвимости, вводя URL-адрес в автоматический сканер. Этот метод хорошо масштабируется, легко интегрируется и работает быстро. Недостатки DAST заключаются в необходимости экспертной настройки и высокой вероятности ложных срабатываний и отрицательных результатов.[9]

Интерактивное тестирование безопасности приложений (IAST) - это решение, которое оценивает приложения изнутри, используя программное обеспечение. Этот метод позволяет IAST сочетать сильные стороны методов SAST и DAST, а также обеспечивает доступ к коду, HTTP-трафику, библиотечной информации, внутренним соединениям и информации о конфигурации.[11] [12] Некоторые продукты IAST требуют атаки на приложение, в то время как другие могут использоваться во время обычного тестирования качества.[13][рекламный источник? ][14][рекламный источник? ]

Защита приложений

Достижения в профессиональном Вредоносное ПО ориентированные на Интернет. Клиенты онлайн-организаций столкнулись с изменениями в требованиях к дизайну веб-приложений с 2007 года. Обычно предполагается, что значительный процент пользователей Интернета будет скомпрометирован через вредоносное ПО и что любые данные, поступающие с зараженного хоста, могут быть испорчены. Таким образом, безопасность приложений стала проявляться в более совершенных системах защиты от мошенничества и эвристического обнаружения в бэк-офисе, а не в коде на стороне клиента или веб-сервера.[15][рекламный источник? ] По состоянию на 2016 год самозащита приложения во время выполнения (РАСП) технологии разработаны.[9][16] RASP - это технология, развернутая в среде выполнения приложения или вместе с ней, которая инструментирует приложение и позволяет обнаруживать и предотвращать атаки.[17][18]

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

Координационный центр CERT описывает скоординированное раскрытие уязвимостей (CVD) как «процесс уменьшения преимущества злоумышленника при устранении уязвимости информационной безопасности». [19] CVD - это итеративный, многоэтапный процесс, в котором участвуют несколько заинтересованных сторон (пользователи, поставщики, исследователи безопасности), у которых могут быть разные приоритеты и которые должны работать вместе для устранения уязвимости. Поскольку в процессах сердечно-сосудистых заболеваний участвует множество заинтересованных сторон, управление информацией об уязвимости и ее устранении имеет решающее значение для успеха.

С операционной точки зрения, многие инструменты и процессы могут помочь при ССЗ. К ним относятся электронная почта и веб-формы, системы отслеживания ошибок и Скоординированные платформы уязвимостей.[20]

Стандарты и нормы безопасности

Смотрите также

Рекомендации

  1. ^ «Что такое OWASP и почему он важен для AppSec». Контрастная безопасность. 23 февраля 2017 г.. Получено 10 апреля 2018.
  2. ^ «Топ-10 OWASP - 2017» (PDF). OWASP. 2017 г.. Получено 10 апреля 2018.
  3. ^ «Концепции безопасности платформы», Саймон Хиггинсон.
  4. ^ «Google запустил новую программу вознаграждения за ошибки, чтобы искоренить уязвимости в сторонних приложениях в Google Play». Грань. 22 октября 2017 г.. Получено 15 июн 2018.
  5. ^ «Платформа безопасности приложений». Архивировано из оригинал 29 марта 2009 г., Открытая платформа мобильных терминалов
  6. ^ «Результаты опроса DevOps: почему предприятия переходят на непрерывную поставку = 1 декабря 2017 г.». облачные пчелы. Получено 26 июн 2018.
  7. ^ «Непрерывная безопасность в мире DevOps = 5 июля 2016 г.». Конференция RMLL 2016. Получено 4 июля 2018.
  8. ^ «Использование хакеров для постоянной безопасности = 31 марта 2017 г.». HackerOne. Получено 4 июля 2018.
  9. ^ а б c «Интерактивное тестирование безопасности приложений: что нужно знать». Сообщество по кибербезопасности TATA. 9 июня 2016 г. Архивировано с оригинал 20 июня 2018 г.. Получено 25 января, 2018.
  10. ^ Уильямс, Джефф (22 сентября 2015 г.). «Почему безумие доверять статическому анализу». ТЕМНОЕЧтение. Получено 10 апреля 2018.
  11. ^ Уильямс, Джефф (2 июля 2015 г.). «Я понимаю SAST и DAST, но что такое IAST и почему это важно?». Контрастная безопасность. Получено 10 апреля 2018.
  12. ^ Веласко, Роберто (7 мая 2020 г.). «Что такое IAST? Все об интерактивном тестировании безопасности приложений». HDIV Безопасность. Получено 7 мая 2020.
  13. ^ Абезгауз, Ирэн (17 февраля 2014 г.). «Введение в интерактивное тестирование безопасности приложений». Quotium.
  14. ^ Рор, Матиас (26 ноября 2015 г.). «IAST: новый подход к гибкому тестированию безопасности». Secodis.
  15. ^ «Продолжение бизнеса с клиентами, зараженными вредоносным ПО». Гюнтер Оллманн. Октябрь 2008 г.
  16. ^ «Что такое IAST? Интерактивное тестирование безопасности приложений». Veracode.
  17. ^ «ИТ-глоссарий: самозащита рабочего приложения». Gartner.
  18. ^ Фейман, Джозеф (июнь 2012 г.). «Аналитический центр безопасности: RASP - обязательная технология безопасности». Computer Weekly.
  19. ^ «Руководство CERT по скоординированному раскрытию уязвимостей». Институт программной инженерии, Университет Карнеги-Меллона. Август 2017 г.. Получено 20 июн 2018.
  20. ^ «Руководство CERT по скоординированному раскрытию уязвимостей». Институт программной инженерии, Университет Карнеги-Меллона. Август 2017 г.. Получено 20 июн 2018.
  21. ^ «ETSI TS 103 645» (PDF).