V5328. OWASP. Using non-restrictive authorization checks could lead to security violations.
Анализатор обнаружил потенциальную ошибку, связанную со слабой проверкой авторизации пользователя. Предоставление неограниченного доступа всем пользователям может привести к уязвимостям безопасности и потенциальному нецелевому использованию критических функций программы.
Уязвимости такого типа относятся к категории рисков 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;
}
Данная диагностика классифицируется как:
|