Atualização de 29/03/2023
Para se alinhar às tendências e práticas recomendadas do setor, o grupo de trabalho da App Defense Alliance (ADA) realizou sessões de revisão no primeiro trimestre de 2023 para atualizar, simplificar e padronizar os procedimentos de teste do CASA. Com base nessas sessões de trabalho, os requisitos e o processo da CASA foram atualizados da seguinte forma:
-
Os requisitos da CASA foram atualizados de 134 para 73. Confira os detalhes abaixo.
-
Para passar na avaliação da CASA, um aplicativo precisa atender ou cumprir todos os 73 requisitos da CASA, independente da classificação CWE.
-
Atualizamos as descrições dos níveis para incluir o nível 2 realizado em laboratório.
-
Adicionamos informações de garantia para cada nível.
-
Pequena atualização para simplificar o processo de autoavaliação do nível 2.
Atualização dos requisitos da CASA
-
A lista atualizada de requisitos pode ser encontrada aqui.
-
Os seguintes requisitos foram removidos
req_id |
Feedback do grupo de trabalho |
8.1.6 |
Reconsidere esse requisito para algo mais prático (por exemplo, os backups só devem ser mantidos por X tempo, os backups devem ser monitorados para evitar roubo/corrupção, os backups devem ser auditados regularmente para confirmar a capacidade de serem movidos de volta para a produção). A proposição atual é muito ampla e precisa de mais definição. |
5.1.4 |
Duplicata de outros casos de teste. Este é um caso de teste de alto esforço e baixo valor. Recomendamos a remoção. |
7.3.3 |
Duplicata de outros casos de teste. Este é um caso de teste de alto esforço e baixo valor. Recomendamos a remoção. |
1.2.2 |
removido devido à cobertura em outro requisito, como 4.1.1 |
2.2.4 |
Remova "Req", já que ele é abordado em 4.3.1. (4.3.1 Verifique se as interfaces administrativas usam a autenticação multifator adequada para evitar o uso não autorizado), que abrange a resistência à falsificação de identidade contra phishing em interfaces de administrador e outros caminhos de acesso interno. |
2.2.5 |
Remova porque o mTLS não é compatível com a maioria dos CSPs. Além disso, a maioria dos desenvolvedores testados para CASA usará a autenticação baseada em senha. |
2.4.3 |
O padrão, conforme escrito, não é específico o suficiente para ser aplicado. |
2.4.5 |
O requisito foi removido na V5 do ASVS, e os algoritmos de hash recomendados em 2.4.1 não atendem a esse requisito. |
2.7.5 |
O teste é inviável, já que pode exigir uma análise de provedores OOB terceirizados. O risco aqui é baixo, já que o código de autenticação tem curta duração. |
2.8.2 |
O requisito é relevante apenas para soluções personalizadas de MFA, também cobertas por 6.4.2 e 6.4.1. |
2.8.5 |
Remove requirement as it is covered by 2.7.6 additionally logging failed attempts is covered by the logging requirement of the ASVS |
2.8.6 |
O OTP físico no nível do aplicativo não é um caso de uso comum. Essa solicitação é necessária para interfaces de administrador. No entanto, o requisito 4.3.1 (Verificar se as interfaces administrativas usam a autenticação multifator adequada para evitar o uso não autorizado) abrange a MFA para interfaces administrativas e vai cobrir esse risco. |
2.9.1 |
Esse requisito abrange dispositivos físicos de acordo com o ASVS (chaves de segurança criptográficas são cartões inteligentes ou chaves FIDO, em que o usuário precisa conectar ou parear o criptográfico ao computador para concluir a autenticação. Os verificadores enviam um nonce de desafio para o dispositivos ou softwares criptográficos, e o dispositivo ou software calcula uma resposta com base em um armazenada), o que torna esse requisito fora do escopo da CASA, já que o risco de autenticação de dispositivos físicos é coberto por 4.3.1 para fins de MFA (físico ou de software). |
2.9.3 |
Esse requisito abrange dispositivos físicos de acordo com o ASVS (chaves de segurança criptográficas são cartões inteligentes ou chaves FIDO, em que o usuário precisa conectar ou parear o criptográfico ao computador para concluir a autenticação. Os verificadores enviam um nonce de desafio para o dispositivos ou softwares criptográficos, e o dispositivo ou software calcula uma resposta com base em um armazenada), o que torna esse requisito fora do escopo da CASA, já que o risco de autenticação de dispositivos físicos é coberto por 4.3.1 para fins de MFA (físico ou de software). |
2.10.1 |
O requisito contradiz 2.10.2 |
2.10.3 |
Coberto por 2.4.1 (verifique se uma das seguintes funções de hash de senha é usada ao armazenar a senha do usuário para o aplicativo: argon2id, scrypt, bcrypt ou PBKDF2), que cobre o risco de ataques off-line e armazenamento de senhas. |
2.10.4 |
Coberto por 6.4.2. Verifique se o material da chave não está exposto ao aplicativo, mas usa um módulo de segurança isolado, como um cofre, para operações criptográficas. |
3.2.3 |
Coberto por 3.4.1, 3.4.2 e 3.4.3 |
3.5.1 |
O usuário pode revogar tokens pelo provedor OAuth |
4.3.3 |
O requisito é coberto pela MFA para interfaces de administrador e acesso privilegiado |
5.1.3 |
Esse requisito é coberto por outros requisitos de validação de entrada. Se a falta de validação não introduzir uma vulnerabilidade real na lógica de negócios, a gravidade pode ser menor. Por exemplo, não validar o número de telefone corretamente resulta apenas na exibição inadequada do número na página de informações, o que não tem implicações diretas de segurança. |
5.1.4 |
Esse requisito é coberto por outros requisitos de validação de entrada. Se a falta de validação não introduzir uma vulnerabilidade real na lógica de negócios, a gravidade pode ser menor. Por exemplo, não validar o número de telefone corretamente resulta apenas na exibição inadequada do número na página de informações, o que não tem implicações diretas de segurança. |
5.3.2 |
A parte desse requisito que especifica que todo caractere Unicode é válido pode dificultar o teste. Nem todos os aplicativos incluem um formulário de texto grande o suficiente para caber todos os caracteres Unicode. Também não há suporte para determinados sistemas operacionais e ferramentas de invasão para todo o espaço Unicode, o que impede que você teste isso mesmo que o servidor seja compatível. Valor de segurança questionável no geral. Originalmente incluído na versão Beta, mas removido devido a problemas nos testes. |
6.2.5 |
cobertas por 6.2.4 e 6.2.3 |
6.2.6 |
cobertas por 6.2.4 e 6.2.3 |
6.3.1 |
cobertas por 6.2.4 e 6.2.3 |
6.3.3 |
cobertos por outros requisitos de geração de números aleatórios. |
7.1.2 |
coberto por 7.1.1 |
7.1.3 |
coberto por 7.1.1 |
7.3.1 |
coberto por 7.1.1 |
7.3.3 |
coberto por 7.1.1 |
8.1.3 |
É difícil descrever o que é um parâmetro aceitável ou necessário. Não é um caso testável. O que constitui "necessário"? Como vamos determinar se uma exceção é válida? Considerado fora do escopo da CASA |
8.3.3 |
Não é um requisito testável, relevante para a Política de Privacidade e os Termos de Serviço, e não para a segurança do aplicativo. Essa é uma revisão jurídica e de compliance que está fora do escopo da CASA. |
8.3.6 |
O controle é específico do sistema (variante do Windows/Linux) e do dispositivo, e na maioria dos casos não é um controle de aplicativo. |
8.3.8 |
cobertas por 1.8.1, 1.8.2 e 1.1.4 |
9.2.5 |
cobertos por 8.3.5 e revisões de políticas de geração de registros do aplicativo. |
10.1.1 |
Coberto pela revisão de arquitetura e é uma prática recomendada. O requisito não pode ser testado |
10.2.3 |
Não é possível fazer isso em um período razoável de tempo. Qualquer código estranho precisa ser documentado e revisado. No entanto, definir a tarefa específica para garantir que não haja backdoors exigiria uma análise detalhada do código linha por linha e não garante que não haja backdoors. É difícil testar funções maliciosas bem projetadas. |
10.2.4 |
Não há como testar. Não é possível fazer isso em um período razoável de tempo. Qualquer código estranho precisa ser documentado e revisado. No entanto, definir a tarefa específica para garantir que não haja backdoors exigiria uma análise detalhada linha por linha do código e não garante que não haja backdoors. É difícil testar funções maliciosas bem projetadas. |
10.2.5 |
Não há como testar. Não é possível fazer isso em um período razoável de tempo. Qualquer código estranho precisa ser documentado e revisado. No entanto, definir a tarefa específica para garantir que não haja backdoors exigiria uma análise detalhada linha por linha do código e não garante que não haja backdoors. É difícil testar funções maliciosas bem projetadas. |
13.1.1 |
Coberto por 5.2.6 e 5.3.9 |
12.3.1 |
Risco de travessia de caminho coberto por outros requisitos existentes do capítulo 5 (validação, limpeza e codificação) do ASVS e da CASA |
12.3.3 |
Coberto por 5.2.6 e 5.3.9 |
12.3.6 |
cobertas por 10.3.2, 12.4.1 e 12.4.2 |
12.5.1 |
cobertas por 10.3.2 e 12.4.2 |
12.5.2 |
cobertas por 10.3.2, 12.4.1 e 12.4.2 |
13.1.5 |
Esse requisito é coberto por outros requisitos de validação de entrada. Se a falta de validação não introduzir uma vulnerabilidade real na lógica de negócios, a gravidade pode ser menor. Por exemplo, não validar o número de telefone corretamente resulta apenas na exibição inadequada do número na página de informações, o que não tem implicações diretas de segurança. |
13.2.2 |
Esse requisito é coberto por outros requisitos de validação de entrada. Se a falta de validação não introduzir uma vulnerabilidade real na lógica de negócios, a gravidade pode ser menor. Por exemplo, não validar o número de telefone corretamente resulta apenas na exibição inadequada do número na página de informações, o que não tem implicações diretas de segurança. |
13.2.3 |
Coberto por 4.2.2 |
13.2.5 |
Esse requisito é coberto por outros requisitos de validação de entrada. Se a falta de validação não introduzir uma vulnerabilidade real na lógica de negócios, a gravidade pode ser menor. Por exemplo, não validar o número de telefone corretamente resulta apenas na exibição inadequada do número na página de informações, o que não tem implicações diretas de segurança. |
13.3.1 |
Esse requisito é coberto por outros requisitos de validação de entrada. Se a falta de validação não introduzir uma vulnerabilidade real na lógica de negócios, a gravidade pode ser menor. Por exemplo, não validar o número de telefone corretamente resulta apenas na exibição inadequada do número na página de informações, o que não tem implicações diretas de segurança. |
14.4.1 |
Coberto por 5.3.1 |
14.4.2 |
Esse requisito é coberto por outros requisitos de validação de entrada. Se a falta de validação não introduzir uma vulnerabilidade real na lógica de negócios, a gravidade pode ser menor. Por exemplo, não validar o número de telefone corretamente resulta apenas na exibição inadequada do número na página de informações, o que não tem implicações diretas de segurança. |
14.4.3 |
abordado por 5.2.7 e 5.3.3 |
14.4.5 |
cobertos por 6.2.1 e 9.2.1 |
14.4.7 |
coberto por 12.4.1 |
14.5.3 |
coberto por 14.5.2 |
2.1.5 |
coberto por 2.1.1 |
2.1.6 |
coberto por 2.1.1 |
2.2.3 |
Não é relevante para a casa, já que o risco é coberto por outros controles antiautomáticos. |
2.5.6 |
cobertos por outra proteção por senha |
3.1.1 |
Baixo risco de exposição e coberto por outros controles do ASVS |
3.2.1 |
Baixo risco de exposição e coberto por outros controles do ASVS |
3.4.4 |
Baixo risco de exposição e coberto por outros controles do ASVS |
3.4.5 |
Baixo risco de exposição e coberto por outros controles do ASVS |
4.2.1 |
coberto por 13.1.4 |
5.2.8 |
cobertos por outras verificações de validação e limpeza de entrada |
5.3.5 |
cobertos por outras verificações de validação e limpeza de entrada |
7.4.1 |
cobertas por verificações de registro |
8.2.3 |
coberto por 8.1.1 |
9.1.1 |
cobertos por 6.2.1 e 9.2.1 |
1.2.3 |
Coberto por 1.1.4, 1.8.4 e 1.8.2 |
1.4.4 |
Coberto por 1.1.4, 1.8.4 e 1.8.2 |
1.5.2 |
Coberto por 1.1.4, 1.8.4 e 1.8.2 |
1.5.3 |
Coberto por 1.1.4, 1.8.4 e 1.8.2 |
1.5.4 |
Coberto por 1.1.4, 1.8.4 e 1.8.2 |
1.9.1 |
Coberto por 1.1.4, 1.8.4 e 1.8.2 |
1.11.3 |
Coberto por 1.1.4, 1.8.4 e 1.8.2 |
1.14.1 |
Coberto por 1.1.4, 1.8.4 e 1.8.2 |
1.14.2 |
Coberto por 1.1.4, 1.8.4 e 1.8.2 |
1.14.3 |
Coberto por 1.1.4, 1.8.4 e 1.8.2 |
1.14.4 |
Coberto por 1.1.4, 1.8.4 e 1.8.2 |
1.14.5 |
Coberto por 1.1.4, 1.8.4 e 1.8.2 |
1.14.6 |
Coberto por 1.1.4, 1.8.4 e 1.8.2 |
6.1.2 |
Coberto por 6.1.1 |
6.1.3 |
Coberto por 6.1.1 |
2.10.2 |
Coberto por 2.5.4 |
2.2.1 |
Coberto por 11.1.4 |
2.7.3 |
Coberto por 2.7.2 |
2.7.4 |
Coberto por 2.7.2 |
5.1.2 |
Coberto pelo controle antiautomático |
6.2.2 |
algoritmos criptográficos aprovados não definidos |
8.2.1 |
Coberto por 8.1.1 |
9.1.2 |
Coberto por 9.2.1 |
9.1.3 |
Coberto por 9.2.1 |
5.5.1 |
Coberto pela versão 1.8.2 |
14.2.1 |
Coberto por 1.14.6 |
3.3.4 |
Isso não é verdade para aplicativos que usam AuthN/Z sem estado. Concordar com a recomendação do NCC Group de remoção. Isso deve ser abordado por 3.3.3 |
-
Os seguintes requisitos foram adicionados:
req_id |
Descrição |
1.1.4 |
Verifique a documentação e a justificativa de todos os limites de confiança, componentes e fluxos de dados significativos do aplicativo. |
1.8.1 |
Verifique se todos os dados sensíveis foram identificados e classificados em níveis de proteção. |
1.8.2 |
Verifique se todos os níveis de proteção têm um conjunto associado de requisitos de proteção, como criptografia, integridade, retenção, privacidade e outros requisitos de confidencialidade, e se eles são aplicado na arquitetura. |
2.1.1 |
Verificar se as senhas definidas pelo usuário têm pelo menos 12 caracteres |
2.5.4 |
Verifique se não há contas compartilhadas ou padrão (por exemplo, "root", "admin" ou "sa". |
4.2.1 |
Verifique se os dados sensíveis e as APIs estão protegidos contra ataques de referência direta insegura a objetos (IDOR) que visam criação, leitura, atualização e exclusão de registros, como criar ou atualizar o registro de outra pessoa, visualizar os registros de todos ou excluir todos os registros. |
1.14.6 |
Verifique se o aplicativo não usa funções sem suporte, não seguras ou descontinuadas tecnologias do lado do cliente, como plug-ins NSAPI, Flash, Shockwave, ActiveX, Silverlight, NACL ou applets Java do lado do cliente. |