OWASP API Security Top 10: 0x11 t10

# OWASP Top 10 API Security Risks – 2019

| Risk | Description |
| ---- | ----------- |
| API1:2019 - Broken Object Level Authorization | As APIs tendem a expor mais _endpoints_  que manipulam identificadores de objetos, tornando as falhas no controlo de acessos mais suscetíveis a ataques. A verificação da autorização para acesso aos objetos deve ser tida em consideração em todas as funções que acedem a dados com base em informação fornecida pelo utilizador. |
| API2:2019 - Broken User Authentication | Com frequência os mecanismos de autenticação são implementados de forma incorreta, permitindo aos atacantes comprometer os _tokens_ de autenticação ou abusar das falhas na implementação por forma a assumir a identidade de outros utilizadores de forma temporária ou permanente. |
| API3:2019 - Excessive Data Exposure | Na tentativa de fazer implementações genéricas os programadores tendem a expor todas as propriedades dum objeto sem ter em consideração quão sensível é cada uma delas, delegando nos clientes a filtragem daquelas que devem ser apresentadas ao utilizador. |
| API4:2019 - Lack of Resources & Rate Limiting | Com frequência as APIs não impõem quaisquer restrições no tamanho ou número de recursos que um cliente/utilizador pode solicitar. Não só isto pode ter impacto no desempenho do servidor da API, conduzindo à negação do serviço (DoS), mas também deixa a porta aberta para problemas de autenticação tais como ataques de força bruta. |
| API5:2019 - Broken Function Level Authorization | Política de controlo de acesso complexas com diferentes níveis hierárquicos, grupos e perfis e uma não tão clara separação entre o que são ou não funcionalidades administrativas tendem a conduzir a falhas de autorização. Abusando destas falhas os atacantes podem ganhar acesso a recursos doutros utilizadores e/ou a funcionalidades administrativas. |
| API6:2019 - Mass Assignment | Atribuir a informação fornecida pelo cliente (e.g., JSON) aos modelos de dados sem a devida filtragem das propriedades com base em _whitelists_, conduzem tipicamente a problemas de atribuição em massa (_Mass Assignment_). Quer seja através da adivinhação das propriedades do objeto, explorando outros _endpoints_ da API ou consulta da documentação,  fornecendo propriedades adicionais no conteúdo dos pedidos permite aos atacantes modificar propriedades dos objetos que não eram supostos. |
| API7:2019 - Security Misconfiguration | Tipicamente as más configurações de segurança resultam de configurações por omissão, incompletas ou que se destinam a um fim específico, armazenamento na nuvem aberto, falha na configuração dos cabeçalhos HTTP de segurança, métodos HTTP não utilizados, política permissiva de Partilha de Recursos Entre Origens (CORS) e mensagens de erro contendo informação sensível. |
| API8:2019 - Injection | Falhas de injeção tais como SQL, NoSQL, injeção de comandos, etc., ocorrem quando dados não confiáveis são enviados a um interpretador como parte dum comando ou consulta. Desta forma o interpretador acaba por executar comandos que não era expectável executar ou aceder a dados sem a devida autorização. |
| API9:2019 - Improper Assets Management | As APIs tendem a expor mais _endpoints_ do que as aplicações web tradicionais, fazendo com que a documentação se torne ainda mais importante. Um inventário dos _hosts_ e APIs em execução também têm um papel importante na mitigação de falhas tais como versões de APIs descontinuadas e exposição de _endpoints_ para análise de problemas. |
| API10:2019 - Insufficient Logging & Monitoring | A insuficiência no registo de eventos e monitorização, em conjugação com a falta ou ineficácia da integração com a resposta a incidentes, permite aos atacantes continuar a sua prática, persistir os seus ataques, alcançar outros sistemas, extrair ou destruir dados. A maioria dos estudos demonstra que o tempo de deteção duma quebra de segurança vai além dos 200 dias, sendo tipicamente detetada por entidades externas, ao invés de processo internos ou monitorização. |