V4.1.2 General Access Control Design
Requirement:#
Verify that all user and data attributes and policy information used by access controls cannot be manipulated by end users unless specifically authorized.
Explanation:#
Атрибуты пользователя и данных относятся к характеристикам пользователей и данных, которые используются элементами управления доступом для определения того, следует ли разрешить или запретить доступ. Примеры атрибутов пользователя включают имя пользователя, пароль и членство в группе, а примеры атрибутов данных включают тип файла, размер и местоположение. Если конечные пользователи смогут манипулировать этими атрибутами, они могут получить несанкционированный доступ к ресурсам, к которым у них не должно быть доступа. Информация о политике относится к правилам и рекомендациям, которые используются для определения того, как следует применять элементы управления доступом. Например, политика может указывать, что только пользователи в определенной группе должны иметь доступ к определенному файлу. Если конечные пользователи могут манипулировать информацией о политике, они могут предоставлять себе доступ к ресурсам, к которым у них не должно быть доступа.
Remediation:#
Чтобы устранить проблему, связанную с тем, что правила управления доступом не применяются на уровне доверенных служб, выполните следующие действия.#
- Определите основную причину проблемы: это ошибка в написании кода или проблема с конфигурацией?
- При необходимости обновите код или конфигурацию приложения, чтобы убедиться, что правила контроля доступа правильно реализованы и применяются.
- Протестируйте приложение, чтобы убедиться, что правила управления доступом применяются правильно и что доступ к ограниченным ресурсам должным образом запрещен неавторизованным пользователям.
- Задокументируйте внесенные изменения и шаги, предпринятые для устранения проблемы, чтобы гарантировать, что будущие усилия по обслуживанию будут руководствоваться четким пониманием проблемы и ее решения.
- Рассмотрите возможность ведения журнала и мониторинга событий управления доступом, чтобы обнаруживать любые будущие нарушения или обходы правил управления доступом.
Следуя этим шагам, вы можете убедиться, что проблема с несоблюдением правил управления доступом устранена должным образом, а приложение безопасно и работает должным образом.
Вот пример кода на Python для исправления ситуации, когда правила управления доступом не применяются должным образом в веб-приложении Flask:
В этом примере применение правила управления доступом было исправлено путем обновления кода, чтобы разрешить доступ к конечной точке /protected_resource пользователям с ролью администратора или суперадминистратора. До этого исправления код разрешал доступ только пользователям с ролью администратора. Обновляя код и добавляя надлежащее тестирование, чтобы убедиться, что изменения имеют желаемый эффект, вы можете гарантировать, что проблема с неправильным применением правил управления доступом решена.
Additional:#
https://owasp.org/www-community/Access_Control
https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html