V4.1.5 General Access Control Design
Requirement:#
Verify that access controls fail securely including when an exception occurs. (C10)
Explanation:#
Неудачные проверки контроля доступа — нормальное явление для защищенного приложения; следовательно, разработчики должны планировать такие сбои и безопасно справляться с ними. Неправильная обработка таких сбоев может привести к тому, что приложение останется в непредсказуемом состоянии
Remediation:#
Чтобы убедиться, что элементы управления доступом не работают безопасно:
- Обеспечьте надлежащую обработку исключений для всех проверок управления доступом.
- В случае исключения убедитесь, что система рассчитана на безопасный сбой, отказав в доступе и зарегистрировав ошибку.
- Протестируйте систему в различных условиях ошибки, чтобы убедиться, что безопасное поведение при сбое реализовано правильно.
Вот пример кода на Python, который реализует безопасное поведение при сбое для управления доступом:
В этом примере функция access_check используется для проверки разрешения пользователя на доступ к файлу. В случае исключения ошибка регистрируется, и функция возвращает False, указывая на то, что доступ должен быть запрещен. Затем функция read_file проверяет, что проверка контроля доступа прошла успешно, прежде чем пытаться прочитать файл, вызывая PermissionError, если доступ не разрешен.
Additional:#
https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html