Cobertura
O que o yof cobre e o que não cobre
Classe a classe: o que o yof procura no seu código, o que o «Teste automatizado» testa numa app em funcionamento e o que nenhum dos dois faz.
Como ler a tabela
- No código: padrões que as regras procuram nos ficheiros de um repositório ligado. Uma regra encontra um padrão e não executa o código, por isso a maior parte destes achados precisa de validação.
- Ao vivo: testes sobre uma app em funcionamento. O «Teste automatizado» está em desenvolvimento e não está à venda, por isso nada com esta marca está ainda disponível para os clientes.
- Não coberto: o que nenhum dos dois faz. Um relatório nunca se lê como se isto tivesse sido verificado.
| Classe | No código | Ao vivo | Não coberto |
|---|---|---|---|
| Injeção de SQL |
|
| Dados que passam por outra função ou outro ficheiro, a injeção armazenada (de segunda ordem) e as falhas internas de um ORM. |
| Injeção de NoSQL |
|
| As linguagens de consulta de outras bases de dados de documentos, e as linguagens que não são JavaScript nem TypeScript. |
| Injeção de comandos |
|
| Argumentos injetados num programa chamado sem shell, e outras linguagens. |
| Injeção em modelos |
|
| Modelos lidos de uma base de dados, e motores de modelos que correm no browser. |
| Avaliação de código |
| Sem teste ao vivo | A avaliação através de um objeto isolado, e outras linguagens. |
| Cross-site scripting |
|
| Os contornos de confiança do Angular e do Vue, as definições de autoescape dos modelos do servidor, os scripts armazenados e uma prova num browser real. |
| Redirecionamento aberto |
|
| Listas de endereços permitidos que existem e podem ser contornadas. |
| Server-side request forgery |
|
| DNS rebinding, redirecionamentos que levam para dentro, e se é possível chegar aos metadados da cloud. |
| Cross-site request forgery |
|
| Frameworks que não são apps ao estilo Express, uma verificação feita por um proxy, e se as predefinições do browser protegem a rota. |
| Carregamento de objetos com risco |
|
| Java ObjectInputStream, .NET BinaryFormatter e as entidades externas de XML. |
| Criptografia fraca |
|
| Comprimentos de chave, versões de protocolo e certificados do serviço em funcionamento, criptografia própria e canais laterais. |
| Palavras-passe no código e na configuração |
| Sem teste ao vivo | O histórico do git de ficheiros que já não existem, se uma palavra-passe encontrada ainda funciona, e uma só palavra comum sem dígito nem símbolo. |
| Carregamento de ficheiros |
|
| O que o serviço de armazenamento ou a CDN faz com o ficheiro, malware no carregamento e limites de tamanho. |
| Dockerfile |
| Sem teste ao vivo | As imagens construídas e os pacotes do sistema operativo dentro delas não são analisados. O fim de suporte só é conhecido para seis imagens base oficiais. |
| docker-compose |
| Sem teste ao vivo | Os contentores em funcionamento, e os ficheiros env que não estão no repositório. |
| Manifestos de Kubernetes |
| Sem teste ao vivo | O cluster em funcionamento, os modelos de Helm não renderizados, RBAC, as políticas de rede e de admissão, e os ficheiros com âncoras YAML. |
| Terraform |
| Sem teste ao vivo | A própria conta na cloud: o que está implementado pode diferir dos ficheiros. Valores vindos de variáveis, módulos ou funções, outros fornecedores e outros tipos de recurso. |
Fora de todas as linhas
- As imagens de contentor construídas e os pacotes do sistema operativo dentro delas não são analisados.
- Estas regras leem ficheiros. Não olham para o sistema em funcionamento: o cluster, a conta na cloud ou o comportamento da app em produção.
- Os dados do pedido são seguidos apenas dentro de uma função ou de um handler. Um valor que passa primeiro por outra função ou outro ficheiro não é seguido.
- Linguagens: as regras de sintaxe leem JavaScript e TypeScript. O Python tem as formas simples e exatas. PHP, Ruby, Go, Java, Kotlin e C# têm algumas formas de uma só linha. Estas regras não leem outras linguagens.
Nunca coberto por verificações automáticas
- Falhas na lógica de negócio, como um preço ou uma etapa que alguém consegue pular.
- Fraquezas que ninguém conhece ainda (zero-days).
- Pessoas e processos: phishing, senhas compartilhadas à mão, quem tem acesso.
- Tudo fora do escopo citado neste relatório, e qualquer mudança depois da sua data.
Isto não é um teste de intrusão.