Ir para o conteúdo

API3:2019 Excessive Data Exposure

Agentes Ameaça/Vetores Ataque Falha Segurança Impactos
Específico da API : Abuso 3 Prevalência 2 : Deteção 2 Técnico 2 : Específico Negócio
Abusar desta falha de segurança é simples e tipicamente passa pela inspeção do tráfego de rede para analisar as respostas da API em busca de dados que não devessem ser devolvidos ao utilizador. As APIs delegam nos clientes a responsabilidade de filtrar os dados. Uma vez que as APIs são usadas como fonte de dados, com frequência os programadores procuram fazer implementações genéricas sem ter em consideração a relevância dos dados expostos. Regra geral as ferramentas automáticas não conseguem detetar este tipo de vulnerabilidade por ser difícil distinguir dados legítimos retornados pela API doutros sensíveis que não deveriam ser expostos. Esta tarefa exige um profundo conhecimento da aplicação. Excessive Data Exposure tipicamente conduz à exposição de dados sensíveis.

A API é vulnerável?

Quando a API devolve dados sensíveis aos clientes. Estes dados são normalmente filtrados pelo cliente antes de serem apresentados ao utilizador. Um atacante pode facilmente inspecionar o tráfego de rede e aceder aos dados sensíveis.

Exemplos de Cenários de Ataque

Cenário #1

A equipa de desenvolvimento móvel usa o endpoint /api/articles/{articleId}/comments/{commentId} na interface de visualização dos artigos para apresentar os detalhes dos comentários. Inspecionando o tráfego de rede da aplicação móvel, um atacante descobre que outros dados sensíveis relacionados com o autor do comentário fazem ainda parte da resposta da API. O método toJSON(), pertencente ao modelo User, é usado na implementação do endpoint para preparar os dados a retornar, o qual inclui informação pessoal.

Cenário #2

Um sistema de vigilância baseado em IoT permite aos utilizadores com perfil de administrador criar outros utilizadores com diferentes permissões. Um administrador cria uma conta de utilizador para um segurança recém-chegado, o qual apenas tem acesso a câmaras específicas instaladas no edifício. A aplicação móvel usada pelo segurança realiza um pedido ao endpoint /api/sites/111/cameras para obter os dados relativos às câmaras a mostrar na interface. A resposta contém a lista com os detalhes das câmaras no formato {"id":"xxx","live_access_token":"xxxx-bbbbb","building_id":"yyy"}. Embora na interface apenas seja possível ver as câmaras às quais o guarda tem acesso, a resposta da API inclui informação sobre todas as câmaras instaladas.

Como Prevenir

  • Nunca delegar no cliente a responsabilidade de filtrar os dados.
  • Rever as respostas da API, certificando-se que apenas incluem dados legítimos.
  • Os engenheiros responsáveis devem questionar-se sempre sobre “quem são os consumidores dos dados” antes de exporem um endpoint.
  • Evitar a utilização de métodos genéricos tais como to_json() e to_string(). Pelo contrário, escolher uma-a-uma as propriedades que realmente devem ser devolvidas na resposta.
  • Classificar a informação sensível e pessoal (PII) que a API armazena e manipula, revendo todos as chamadas à API onde esta informação é devolvida por forma a avaliar se existe algum risco para a segurança.
  • Utilizar schemas para validar as respostas da API enquanto camada adicional de segurança. Como parte desta abordagem, definir e assegurar a validação das respostas do diferentes métodos HTTP, incluindo erros.

Referências

Externas