Skip to main content

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:

from flask import Flask, request
from flask_jwt_extended import JWTManager, jwt_required, get_jwt_claims
app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'secret_key'
jwt = JWTManager(app)
@app.route('/protected_resource')
@jwt_required
def protected_resource():
claims = get_jwt_claims()
user_role = claims['role']
if user_role not in ['admin', 'superadmin']:
return "Access Denied", 403
return "Access Granted", 200
if __name__ == '__main__':
app.run()

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

Additional:#

https://owasp.org/www-community/Access_Control

https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html