Анализатор обнаружил потенциальную ошибку, связанную со слабой проверкой авторизации пользователя. Предоставление неограниченного доступа всем пользователям может привести к уязвимостям безопасности и потенциальному нецелевому использованию критических функций программы.
Уязвимости такого типа относятся к категории рисков 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 как критические и относятся к типу: Ошибки некорректного использования системных процедур и интерфейсов, связанных с обеспечением информационной безопасности (шифрования, разграничения доступа и пр.). |
Данная диагностика классифицируется как:
|