What's new

Article [17] Burp Suite. Уязвимости Бизнес-логики

Vander 0

Vander

Staff member
Nov 10, 2019
468
1,158
1654014005312.png

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

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

Что такое уязвимости бизнес-логики?

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

Примечание:
  • В этом контексте термин «бизнес-логика» просто относится к набору правил, определяющих, как работает приложение. Поскольку эти правила не всегда напрямую связаны с бизнесом, связанные с ними уязвимости также известны как «уязвимости логики приложения» или просто «ошибки логики».
Логические недостатки часто невидимы для людей, которые не ищут их явно, поскольку обычно они не обнаруживаются при обычном использовании приложения. Однако злоумышленник может использовать поведенческие особенности, взаимодействуя с приложением способами, которые разработчики никогда не планировали.

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

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

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

Как возникают уязвимости бизнес-логики?


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

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

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

Каково влияние уязвимостей бизнес-логики?

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

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

Несовершенная логика в финансовых транзакциях, очевидно, может привести к огромным потерям для бизнеса из-за кражи средств, мошенничества и так далее.

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

Некоторые примеры уязвимостей бизнес-логики.

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

Как предотвратить уязвимости бизнес-логики?

Короче говоря, ключи к предотвращению уязвимостей бизнес-логики заключаются в следующем:
  • Убедитесь, что разработчики и тестировщики понимают домен, который обслуживает приложение.
  • Избегайте неявных предположений о поведении пользователя или о поведении других частей приложения.
Вы должны определить, какие предположения вы сделали о состоянии на стороне сервера, и реализовать необходимую логику, чтобы убедиться, что эти предположения выполняются. Это включает в себя проверку того, что значение любого ввода разумно, прежде чем продолжить.

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

Спасибо за внимание, материал подготовлен специаль но для protey.net
 
Top Bottom