Reino: Input Validation and Representation
Los problemas de validación y representación de entradas están causados por metacaracteres, codificaciones alternativas y representaciones numéricas. Los problemas de seguridad surgen de entradas en las que se confía. Estos problemas incluyen: «desbordamientos de búfer», ataques de «scripts de sitios», "SQL injection" y muchas otras acciones.
Same-Origin Method Execution
Abstract
La aplicación refleja un parámetro que puede controlar el usuario como la función de devolución de llamada JavaScript que debe ejecutar el explorador, lo cual puede permitir que un atacante ejecute funciones JavaScript arbitrarias en cualquier página del dominio de ese punto final.
Explanation
La aplicación usa un parámetro bajo el control del atacante como nombre de una función JavaScript que ejecutará el explorador. Un atacante podría crear un sitio malintencionado que muestre primero una página de destino en el dominio de la aplicación y que luego haga referencia a una página vulnerable a fin de ejecutar una función JavaScript arbitraria en la página de destino. El impacto de este ataque es similar al de Cross-Site Scripting, aunque existen algunas restricciones importantes en cuanto a la vulnerabilidad. Si se permiten los caracteres alfanuméricos y de punto en los nombres de devolución de llamada, el atacante podría hacer referencia a los elementos de la página e interactuar con ellos.
Ejemplo 1: el código siguiente crea una respuesta JSONP en la que el usuario puede controlar el nombre de la función de devolución de llamada.
Para una solicitud como
El atacante podría usar una etiqueta JavaScript
Ejemplo 1: el código siguiente crea una respuesta JSONP en la que el usuario puede controlar el nombre de la función de devolución de llamada.
@ControllerAdvice
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {
public JsonpAdvice() {
super("callback");
}
}
Para una solicitud como
GET /api/latest.json?callback=myCallbackFunction
, el método de controlador generará una respuesta como:
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>})
El atacante podría usar una etiqueta JavaScript
Script
para cargar la respuesta desde el punto final JSONP, lo que provocará la ejecución de la función myCallbackFunction
. Un atacante podría usar un nombre de devolución de llamada diferente e interactuar con el DOM. Por ejemplo, podría usarse opener.document.body.someElemnt.firstChild.nextElementSibling.submit
para colocar un formulario en la página de destino y enviarlo.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
La aplicación refleja un parámetro que puede controlar el usuario como la función de devolución de llamada JavaScript que debe ejecutar el explorador, lo cual puede permitir que un atacante ejecute funciones JavaScript arbitrarias en cualquier página del dominio de ese punto final.
Explanation
La aplicación usa un parámetro bajo el control del atacante como nombre de una función JavaScript que ejecutará el explorador. Un atacante podría crear un sitio malintencionado que muestre primero una página de destino en el dominio de la aplicación y que luego haga referencia a una página vulnerable a fin de ejecutar una función JavaScript arbitraria en la página de destino. El impacto de este ataque es similar al de Cross-Site Scripting, aunque existen algunas restricciones importantes en cuanto a la vulnerabilidad. Si se permiten los caracteres alfanuméricos y de punto en los nombres de devolución de llamada, el atacante podría hacer referencia a los elementos de la página e interactuar con ellos.
Ejemplo 1: el código siguiente crea una respuesta JSONP en la que el usuario puede controlar el nombre de la función de devolución de llamada.
Para una solicitud como
El atacante podría usar una etiqueta JavaScript
Ejemplo 1: el código siguiente crea una respuesta JSONP en la que el usuario puede controlar el nombre de la función de devolución de llamada.
def myJSONPService(callback: String) = Action {
val json = getJSONToBeReturned()
Ok(Jsonp(callback, json))
}
Para una solicitud como
GET /api/latest.json?callback=myCallbackFunction
, el método de controlador descrito en Example 1
generará una respuesta como:
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>})
El atacante podría usar una etiqueta JavaScript
Script
para cargar la respuesta desde el punto final JSONP, lo que provocará la ejecución de la función myCallbackFunction
. Un atacante podría usar un nombre de devolución de llamada diferente e interactuar con el DOM. Por ejemplo, podría usarse opener.document.body.someElemnt.firstChild.nextElementSibling.submit
para colocar un formulario en la página de destino y enviarlo.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