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