Reino: API Abuse

Uma API é um contrato entre quem chama e o que se chama. As formas mais comuns de abuso de API ocorrem quando o responsável pela chamada não respeita sua parte do contrato. Por exemplo, se um programa não chama chdir() após chamar chroot(), ele viola o contrato que especifica como alterar o diretório raiz ativo de forma segura. Outro bom exemplo de abuso de biblioteca é esperar que o elemento chamado retorne informações confiáveis de DNS ao responsável pela chamada. Nesse caso, o responsável pela chamada abusa a API do elemento chamado ao fazer certas suposições sobre seu comportamento (isto é, que o valor de retorno pode ser usado para fins de autenticação). A outra parte também pode violar o contrato entre quem chama e o que se chama. Por exemplo, se um programador definir SecureRandom como subclasse e retornar um valor não aleatório, o contrato será violado.

Often Misused: Mixing Template Languages

Abstract
As linguagens de modelo não devem ser misturadas para evitar a necessidade de trabalhar com proteções de cross-site scripting.
Explanation
Quando você combina mecanismos de modelo, significa que as proteções que foram implementadas anteriormente para um deles podem ter deixado de funcionar ou ser válidas. Na versão mais benigna, isso pode fazer com que a funcionalidade não opere conforme esperado, mas também pode permitir que usuários mal-intencionados contornem as proteções no mecanismo, resultando em vulnerabilidades de execução de scripts entre sites.

Exemplo 1: No código a seguir, um módulo AngularJS está configurado para usar "[[" e "]]" para delimitadores de expressão no lugar do padrão.


myModule.config(function($interpolateProvider){
$interpolateProvider.startSymbol("[[");
$interpolateProvider.endSymbol("]]");
});


Isso pode fazer com que o outro mecanismo de modelo realize a validação para escapar as expressões, o que pode não ser compatível com expressões AngularJS, possivelmente permitindo que os usuários contornem a validação regular e executem seu próprio código no navegador.
References
[1] AngularJS $interpolateProvider documentation Google
[2] Standards Mapping - General Data Protection Regulation (GDPR) Indirect Access to Sensitive Data
[3] Standards Mapping - OWASP Top 10 2021 A05 Security Misconfiguration
desc.structural.javascript.often_misused_mixing_template_languages