Reino: Input Validation and Representation

Problemas de validação e representação da entrada são causados por metacaracteres, codificações alternativas e representações numéricas. Confiar na entrada resulta em problemas de segurança. Os problemas incluem: “Buffer Overflows”, ataques de “Cross-Site Scripting”, “SQL Injection”, entre outros.

Same-Origin Method Execution

Abstract
O aplicativo reflete um parâmetro controlável pelo usuários como a função de retorno de chamada JavaScript a ser executada pelo navegador, o que pode permitir que um invasor execute funções JavaScript arbitrárias em quaisquer páginas do mesmo domínio do ponto de extremidade.
Explanation
O aplicativo usa um parâmetro sob o controle do invasor como o nome de uma função JavaScript que o navegador executará. Um invasor pode criar um site mal-intencionado que inicializa uma página de destino no mesmo domínio do aplicativo e, em seguida, faz referência à página vulnerável para executar uma função JavaScript arbitrária na página de destino. O impacto desse ataque é semelhante ao impacto do Cross-Site Scripting, embora existam algumas restrições de exploração importantes. Se os caracteres alfanuméricos e de pontos puderem ser usados como o nome de retorno de chamada, o invasor poderá fazer referência dos elementos da página e interagir com eles.

Exemplo 1: O código a seguir cria uma resposta JSONP na qual o nome da função de retorno de chamada pode ser controlado pelo usuário.


@ControllerAdvice
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {
public JsonpAdvice() {
super("callback");
}
}


Para uma solicitação, como GET /api/latest.json?callback=myCallbackFunction, o método do controlador gerará uma resposta do tipo:


HTTP/1.1 200 Ok
Content-Type: application/json; charset=utf-8
Date: Tue, 12 Dec 2017 16:16:04 GMT
Server: nginx/1.12.1
Content-Length: 225
Connection: Close

myCallbackFunction({<json>})


O invasor pode usar uma tag JavaScript Script para carregar a resposta do ponto de extremidade JSONP, que se transformará na execução da função myCallbackFunction. Um invasor poderia usar um nome de retorno de chamada diferente para navegar e interagir com o DOM. Por exemplo, opener.document.body.someElemnt.firstChild.nextElementSibling.submit poderia ser usado para localizar um formulário na página de destino e enviá-lo.
References
[1] Ben Hayak Same Origin Method Execution (SOME)
[2] Standards Mapping - DISA Control Correlation Identifier Version 2 CCI-001310
[3] Standards Mapping - NIST Special Publication 800-53 Revision 4 SI-10 Information Input Validation (P1)
[4] Standards Mapping - NIST Special Publication 800-53 Revision 5 SI-10 Information Input Validation
[5] Standards Mapping - OWASP Mobile 2024 M4 Insufficient Input/Output Validation
[6] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 4.2 - Critical Asset Protection, Control Objective 5.4 - Authentication and Access Control
[7] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 4.2 - Critical Asset Protection, Control Objective 5.4 - Authentication and Access Control, Control Objective B.3.1 - Terminal Software Attack Mitigation, Control Objective B.3.1.1 - Terminal Software Attack Mitigation
[8] Standards Mapping - Payment Card Industry Software Security Framework 1.2 Control Objective 4.2 - Critical Asset Protection, Control Objective 5.4 - Authentication and Access Control, Control Objective B.3.1 - Terminal Software Attack Mitigation, Control Objective B.3.1.1 - Terminal Software Attack Mitigation, Control Objective C.3.2 - Web Software Attack Mitigation
[9] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-002530 CAT II
[10] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-002530 CAT II
desc.semantic.java.same_origin_method_execution
Abstract
O aplicativo reflete um parâmetro controlável pelo usuários como a função de retorno de chamada JavaScript a ser executada pelo navegador, o que pode permitir que um invasor execute funções JavaScript arbitrárias em quaisquer páginas do mesmo domínio do ponto de extremidade.
Explanation
O aplicativo usa um parâmetro sob o controle do invasor como o nome de uma função JavaScript que o navegador executará. Um invasor pode criar um site mal-intencionado que inicializa uma página de destino no mesmo domínio do aplicativo e, em seguida, faz referência à página vulnerável para executar uma função JavaScript arbitrária na página de destino. O impacto desse ataque é semelhante ao impacto do Cross-Site Scripting, embora existam algumas restrições de exploração importantes. Se os caracteres alfanuméricos e de pontos puderem ser usados como o nome de retorno de chamada, o invasor poderá fazer referência dos elementos da página e interagir com eles.

Exemplo 1: O código a seguir cria uma resposta JSONP na qual o nome da função de retorno de chamada pode ser controlado pelo usuário.


def myJSONPService(callback: String) = Action {
val json = getJSONToBeReturned()
Ok(Jsonp(callback, json))
}


Para uma solicitação, como GET /api/latest.json?callback=myCallbackFunction, o método do controlador descrito em Example 1 gerará uma resposta do tipo:


HTTP/1.1 200 Ok
Content-Type: application/json; charset=utf-8
Date: Tue, 12 Dec 2017 16:16:04 GMT
Server: nginx/1.12.1
Content-Length: 225
Connection: Close

myCallbackFunction({<json>})


O invasor pode usar uma tag JavaScript Script para carregar a resposta do ponto de extremidade JSONP, que se transformará na execução da função myCallbackFunction. Um invasor poderia usar um nome de retorno de chamada diferente para navegar e interagir com o DOM. Por exemplo, opener.document.body.someElemnt.firstChild.nextElementSibling.submit poderia ser usado para localizar um formulário na página de destino e enviá-lo.
References
[1] Ben Hayak Same Origin Method Execution (SOME)
[2] Standards Mapping - DISA Control Correlation Identifier Version 2 CCI-001310
[3] Standards Mapping - NIST Special Publication 800-53 Revision 4 SI-10 Information Input Validation (P1)
[4] Standards Mapping - NIST Special Publication 800-53 Revision 5 SI-10 Information Input Validation
[5] Standards Mapping - OWASP Mobile 2024 M4 Insufficient Input/Output Validation
[6] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 4.2 - Critical Asset Protection, Control Objective 5.4 - Authentication and Access Control
[7] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 4.2 - Critical Asset Protection, Control Objective 5.4 - Authentication and Access Control, Control Objective B.3.1 - Terminal Software Attack Mitigation, Control Objective B.3.1.1 - Terminal Software Attack Mitigation
[8] Standards Mapping - Payment Card Industry Software Security Framework 1.2 Control Objective 4.2 - Critical Asset Protection, Control Objective 5.4 - Authentication and Access Control, Control Objective B.3.1 - Terminal Software Attack Mitigation, Control Objective B.3.1.1 - Terminal Software Attack Mitigation, Control Objective C.3.2 - Web Software Attack Mitigation
[9] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-002530 CAT II
[10] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-002530 CAT II
desc.dataflow.scala.same_origin_method_execution