/
Broken Access Control
Broken Access Control
Debido a una incorrecta validación de la autorización, el atacante puede acceder a información a la cual no debería. Por ejemplo, una validación de autorización en cliente o mediante datos provenientes de este.
Riesgo del ataque
Robo de información no autorizada.
Posibilidad de modificación o borrado de datos no autorizados.
Ejecución de acciones no autorizadas.
Posibilidad de suplantación del rol administrador.
Código vulnerable 1:
[...]
public String adminShowUsers() {
Map results = new HashMap();
boolean isAdmin = false;
for(Cookie c: getServletRequest().getCookies()) {
if(c.getName().equals("admin") && c.getValue().equals("1")) {
isAdmin = true;
break;
}
}
if(isAdmin) {
List<Map<String, String>> userList = new ArrayList<Map<String,String>>();
for(User u: userService.findAllUsers()) {
Map<String, String> m = new HashMap<String, String>();
m.put("id", Integer.toString(u.getId()));
m.put("login", u.getLogin());
m.put("email", u.getEmail());
m.put("role", u.getRole());
userList.add(m);
}
results.put("count", userList.size());
results.put("users", userList);
}
return renderJSON(results);
}
[...] |
Solución:
Se debe garantizar que la validación de la autenticación se realiza del lado del servidor.
[...]
public String adminShowUsers() {
Map results = new HashMap();
if(sessionGetUser().isAdmin()) {
List<Map<String, String>> userList = new ArrayList<Map<String,String>>();
for(User u: userService.findAllUsers()) {
Map<String, String> m = new HashMap<String, String>();
m.put("id", Integer.toString(u.getId()));
m.put("login", u.getLogin());
m.put("email", u.getEmail());
m.put("role", u.getRole());
userList.add(m);
}
results.put("count", userList.size());
results.put("users", userList);
}
return renderJSON(results);
}
[...] |
Referencias:
https://owasp.org/www-community/Broken_Access_Control
https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html
https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Testing_Automation.html
Related content
Broken Authentication
Broken Authentication
More like this
Sensitive Data Exposure
Sensitive Data Exposure
More like this
Security Misconfiguration
Security Misconfiguration
More like this
Seguridad integrada en aplicaciones Web Spring Boot
Seguridad integrada en aplicaciones Web Spring Boot
More like this
Roles y Acceso a las capacidades de la Plataforma por Rol
Roles y Acceso a las capacidades de la Plataforma por Rol
More like this
¿Cómo delegar la autenticación de la plataforma en un directorio LDAP?
¿Cómo delegar la autenticación de la plataforma en un directorio LDAP?
More like this