Анализатор обнаружил потенциальную ошибку, связанную со слабой проверкой авторизации пользователя. Предоставление неограниченного доступа всем пользователям может привести к уязвимостям безопасности и потенциальному нецелевому использованию критических функций программы.
Уязвимости такого типа относятся к категории рисков OWASP Top 10 Application Security Risks 2021:
Предполагается, что при проверке авторизации метод, принимающий решение, может отказать в авторизации в случае, если пользователь не имеет необходимых привилегий. Если же реализация не предусматривает отказа в авторизации, такой метод считается небезопасным, а проверка — ненадежной.
Например, реализация метода vote
из класса AccessDecisionVoter
возвращает всегда положительный ответ, даже в случае, если пользователь не имеет нужных привилегий:
@Override public int vote(Authentication authentication, FilterInvocation filterInvocation, Collection<ConfigAttribute> attributes ) { boolean isAdmin = hasAdminRole(authentication); String requestMethod = filterInvocation.getRequest().getMethod(); if ("DELETE".equals(requestMethod) && !isAdmin) { return ACCESS_GRANTED; } return ACCESS_GRANTED; }
Реализация считается безопасной, если она возвращает хотя бы одно отрицательное решение:
@Override public int vote(Authentication authentication, FilterInvocation filterInvocation, Collection<ConfigAttribute> attributes ) { boolean isAdmin = hasAdminRole(authentication); String requestMethod = filterInvocation.getRequest().getMethod(); if ("DELETE".equals(requestMethod) && !isAdmin) { return ACCESS_DENIED; } return ACCESS_GRANTED; }
Выявляемые диагностикой ошибки классифицируются согласно ГОСТ Р 71207–2024 как критические и относятся к типу: Ошибки некорректного использования системных процедур и интерфейсов, связанных с обеспечением информационной безопасности (шифрования, разграничения доступа и пр.). |
Данная диагностика классифицируется как:
|