Objetivo de Aprendizagem 5.1.A: Explicar como adversários podem explorar vulnerabilidades de aplicativos e arquivos para causar perda, danos, interrupção ou destruição.
- 5.1.A.1 Um adversário pode ler quaisquer arquivos não criptografizados se tiver acesso ao dispositivo ou drive que armazena os arquivos.
- 5.1.A.2 Computadores têm usuários padrão e usuários administrativos. Usuários administrativos têm acesso para controlar configurações do sistema e podem normalmente acessar qualquer arquivo ou aplicativo em um sistema. Se usuários regulares forem concedidos privilégios administrativos em um computador, e um adversário puder comprometer a conta de um usuário, então o adversário terá privilégios elevados no sistema.
- 5.1.A.3 Quando as configurações de controle de acesso são fracas, muitos usuários frequentemente têm permissão para visualizar e às vezes até editar arquivos em um sistema. Adversários podem aproveitar configurações fracas de controle de acesso para roubar ou destruir arquivos ou interromper um aplicativo.
Objetivo de Aprendizagem 5.1.B: Explicar como ataques de aplicativo exploram vulnerabilidades.
- 5.1.B.1 Aplicativos são programas que executam instruções em computadores; são dados executáveis. Alguns aplicativos rocam localmente no computador do usuário, enquanto outros aplicativos, como aplicativos web, rocam em um servidor e são acessados por usuários através de uma rede.
- 5.1.B.2 Muitos aplicativos aceitam entrada de usuário através de campos de entrada abertos onde usuários podem digitar caracteres (ex.: letras, números, pontuação). Desenvolvedores devem incluir verificações de entrada de usuário em seu aplicativo, como entrada numérica quando solicitado um número de itens, para garantir que a entrada do usuário corresponda ao que é esperado; o aplicativo deve rejeitar entradas fora dos parâmetros esperados. Esse processo de verificar se a entrada do usuário atende aos critérios esperados antes de processá-la é chamado de validação de dados. Aplicativos que falham em validar a entrada do usuário são vulneráveis a ataques do tipo injeção, onde adversários inserem strings de caracteres inesperadas em campos de entrada para alterar o comportamento de um programa.
- 5.1.B.3 Linguagem SQL (Structured Query Language) é uma linguagem de computador usada para solicitar informações de bancos de dados e fazer alterações em bancos de dados ou entradas em bancos de dados. Aplicativos que consultam um banco de dados usando entrada não validada ou não limpa dos usuários são vulneráveis.
- 5.1.B.4 Um ataque de injeção SQL coloca comandos SQL e caracteres de controle em um campo de entrada de usuário em um aplicativo, o que pode levar a uma violação de confidencialidade causando o retorno de mais informações do que deveria, ou uma violação de integridade modificando ou excluindo dados no banco de dados.
- 5.1.B.5 Sites são escritos usando HTML (Hypertext Markup Language), e muitos sites usam Javascript para criar conteúdo dinâmico em sites ou aplicativos web. Como os comandos Javascript rocam no navegador do usuário que visita o site, esses comandos podem acessar dados sensíveis armazenados no navegador como nomes de usuário, senhas e chaves criptográficas.
- 5.1.B.6 Um ataque XSS (Cross Site Scripting) injeta código malicioso em um site que o navegador do usuário então executa. O código malicioso pode ser embutido em um link que o usuário clica (um ataque XSS Tipo I ou Refletido) ou pode ser inserido em um site através de um campo de comentário, post de fórum ou log de visitante, o que afetaria qualquer usuário visitando aquele site (um ataque XSS Tipo II ou Armazenado).
- 5.1.B.7 Quando aplicativos aceitam entrada de usuário, essa entrada é escrita em um buffer. Um buffer é uma seção designada de memória do computador com tamanho fixo. Se a quantidade de dados que o usuário entra excede o tamanho do buffer, ela pode transbordar para locais de memória adjacentes e sobrescrever outras partes da memória do computador.
- 5.1.B.8 Um ataque de overflow de buffer envia mais dados para a memória do que foi alocado, o que pode causar um travamento do sistema ou a execução de código fora do escopo da política de segurança de um programa, permitindo efetivamente que o adversário realize ações não autorizadas em um computador, como acessar, modificar ou excluir arquivos.
- 5.1.B.9 Os arquivos que executam aplicações web são armazenados em diretórios em servidores. Quando usuários acessam aplicações web, seus navegadores enviam solicitações GET usando o protocolo de transferência de hipertexto (HTTP). Uma solicitação GET acessa um arquivo em qualquer lugar no sistema de arquivos do servidor.
- 5.1.B.10 Em um ataque de travessia de diretório, adversários modificam URLs e solicitações GET para tentar acessar dados sensíveis (p. ex., nomes de usuário e senhas) no sistema de arquivos de um servidor.
- Exemplos ilustrativos para 5.1.B.10:
- Um servidor web armazena imagens para um site que ele hospeda no diretório /var/www/images/. Um adversário modifica uma URL solicitando uma imagem para ../../../etc/passwd. O .. move um diretório acima no sistema de arquivos; assim, os três .. consecutivos retornam o caminho para a raiz, e a partir daí o adversário está tentando acessar o arquivo passwd que retornaria uma lista de todos os usernames autorizados no dispositivo.
- Exemplos ilustrativos para 5.1.B.10:
Objetivo de Aprendizagem 5.1.C: Avaliar e documentar riscos decorrentes de vulnerabilidades de aplicativos e dados.
- 5.1.C.1 Riscos de segurança de dados podem envolver a violação da confidencialidade quando pessoas não autorizadas podem acessar dados sensíveis, integridade quando os dados podem ser manipulados ou alterados em relação ao seu estado pretendido, e disponibilidade quando os dados podem ser destruídos ou criptografados para impedir que outros os acessem.
- 5.1.C.2 Riscos elevados decorrentes de vulnerabilidades de dados frequentemente envolvem dados altamente sensíveis (p. ex., dados regidos por leis ou regulamentos) que poderiam ser comprometidos através de uma exploração altamente provável.
- Exemplos ilustrativos para 5.1.C.2:
- A empresa desenvolvendo o próximo motor a jato que será usado pela Força Aérea em seus aviões está armazenando as especificações técnicas do motor em uma unidade sem criptografia.
- Exemplos ilustrativos para 5.1.C.2:
- 5.1.C.3 Riscos moderados decorrentes de vulnerabilidades de dados frequentemente envolvem dados sensíveis que não possuem criptografia forte ou controles de acesso estritos o suficiente.
- Exemplos ilustrativos para 5.1.C.3:
- Uma empresa armazena os PII (Informações Pessoais Identificáveis) de seus clientes em uma planilha, e a planilha é criptografada usando uma chave pequena.
- Exemplos ilustrativos para 5.1.C.3:
- 5.1.C.4 Riscos baixos decorrentes de vulnerabilidades de dados frequentemente envolvem informações menos sensíveis sendo criptografadas com chaves menores ou tendo controles de acesso que não são estritos o suficiente.
- Exemplos ilustrativos para 5.1.C.4:
- O CEO de uma organização armazena seus memos privados para sua equipe executiva em uma pasta compartilhada da empresa que é descriptografada e não possui controles de acesso.
- Exemplos ilustrativos para 5.1.C.4:


