Что такое сломанный контроль доступа и почему вас это должно волновать?

Что такое сломанный контроль доступа и почему вас это должно волновать?

12 мая 2022 г.

В 2021 году Broken Access Control переместился с [5-го места на 1-е место] (https://owasp.org/Top10/) в десятке лучших OWASP как «наиболее серьезная угроза безопасности веб-приложений». Поскольку нарушенный контроль доступа является одним из наиболее распространенных недостатков веб-приложений, важно не только понимать этот тип уязвимости, но и знать, как его предотвратить.


Что такое сломанный контроль доступа?


Чтобы понять, что такое нарушенный контроль доступа, давайте сначала разберемся с контролем доступа.


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


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


Распространенные уязвимости контроля доступа


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


OWASP перечисляет следующее как [общие уязвимости контроля доступа] (https://owasp.org/Top10/A01_2021-Broken_Access_Control/#how-to-prevent):


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

  • Обход проверок управления доступом путем изменения URL-адреса (изменение параметров или принудительный просмотр), внутреннего состояния приложения или HTML-страницы или с помощью инструмента атаки для изменения запросов API.

  • Разрешение просмотра или редактирования чужой учетной записи путем предоставления ее уникального идентификатора (небезопасные прямые ссылки на объекты)

  • Доступ к API с отсутствующими элементами управления доступом для POST, PUT и DELETE.

  • Повышение привилегий. Работа в качестве пользователя без входа в систему или в качестве администратора при входе в систему в качестве пользователя.

  • Манипуляции с метаданными, такие как воспроизведение или подделка маркера управления доступом к веб-токену JSON (JWT), а также использование файла cookie или скрытого поля для повышения привилегий или злоупотребления аннулированием JWT.

  • Неправильная конфигурация CORS разрешает доступ к API из неавторизованных/ненадежных источников.

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

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


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


Вообще говоря, ваша стратегия контроля доступа должна охватывать три аспекта:


  • Аутентификация: вам необходимо правильно идентифицировать пользователя, когда он возвращается в приложение.

  • Авторизация: после того, как пользователь прошел аутентификацию, авторизация решает, какие действия пользователь должен и не должен выполнять.

  • Проверка разрешений: когда пользователь пытается выполнить действие, авторизация оценивается в этот момент времени.

Поскольку приложения все чаще создаются на основе API, важно также понимать основные уязвимости, связанные с API, [10 лучших API OWASP] (https://owasp.org/www-project-api-security/). Например, при рассмотрении передовых методов проверки подлинности и авторизации помните, что вы должны учитывать идентификаторы как пользователя, так и компьютера. Salt Security рекомендует следующее для [аутентификации и авторизации API] (https://salt.security/blog/api-security-checklist):


  • Непрерывная аутентификация и авторизация потребителей API

  • Избегайте использования ключей API в качестве средства аутентификации.

  • Используйте современные протоколы авторизации, такие как OAuth2, с расширениями безопасности.

Лучшие практики управления доступом


Вот несколько рекомендаций, которые можно применить для предотвращения нарушения контроля доступа:


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

  • Запретить по умолчанию: в целях безопасности, даже если никакие правила управления доступом не совпадают явно, приложение должно быть настроено на отказ в доступе по умолчанию.

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

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

  • Предпочитайте элементы управления на основе функций и атрибутов, а не на основе ролей.

  • Убедитесь, что идентификаторы поиска недоступны (даже если они угаданы) и не могут быть изменены.

  • Убедитесь, что статические ресурсы авторизованы и включены в политики управления доступом.

  • Проверки авторизации должны выполняться в правильном месте. Никогда не полагайтесь на проверки контроля доступа на стороне клиента.

  • Выйдите безопасно, когда проверки авторизации не пройдены.

  • Логика авторизации модульных и интеграционных тестов.

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


Почему вы должны заботиться


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



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE