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.
Value Shadowing
Abstract
El programa accede a una variable de forma ambigua, lo que puede dejarlo abierto a ataques.
Explanation
La clase
Ejemplo 1: imaginemos que una aplicación bancaria almacena de forma temporal la dirección de correo electrónico de un usuario en una cookie y que lee este valor cuando quiere ponerse en contacto con el usuario en cuestión. El siguiente código lee el valor de la cookie y envía un balance de cuentas a la dirección de correo electrónico especificada.
Supongamos que el código en el
HttpRequest
proporciona acceso programático a las variables procedentes de las colecciones QueryString
, Form
, Cookies
o ServerVariables
en la forma de un acceso de matriz (p. ej. Request["myParam"]
). Cuando existe más de una variable con el mismo nombre, .NET Framework devuelve el valor de la variable que aparece primero cuando se buscan las colecciones en el siguiente orden: QueryString
, Form
, Cookies
y ServerVariables
. Como QueryString
está primero en el orden de búsqueda, los parámetros QueryString
pueden sustituir los valores de variables de servidor, cookies y formularios. Del mismo modo, los valores de formularios pueden reemplazar las variables de las colecciones Cookies
y ServerVariables
, y las variables de la colección Cookies
pueden reemplazar las de ServerVariables
.Ejemplo 1: imaginemos que una aplicación bancaria almacena de forma temporal la dirección de correo electrónico de un usuario en una cookie y que lee este valor cuando quiere ponerse en contacto con el usuario en cuestión. El siguiente código lee el valor de la cookie y envía un balance de cuentas a la dirección de correo electrónico especificada.
...
String toAddress = Request["email"]; //Expects cookie value
Double balance = GetBalance(userID);
SendAccountBalance(toAddress, balance);
...
Supongamos que el código en el
Example 1
se ejecuta al visitar http://www.example.com/GetBalance.aspx
. Si un atacante puede hacer que un usuario autenticado haga clic en un enlace que solicite http://www.example.com/GetBalance.aspx?email=evil%40evil.com
, se enviará un mensaje de correo electrónico con el balance de cuentas del usuario a evil@evil.com
.References
[1] Standards Mapping - DISA Control Correlation Identifier Version 2 CCI-001310
[2] Standards Mapping - NIST Special Publication 800-53 Revision 4 SI-10 Information Input Validation (P1)
[3] Standards Mapping - NIST Special Publication 800-53 Revision 5 SI-10 Information Input Validation
[4] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 6.5.6
[5] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 6.5.6
[6] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 6.5.6
[7] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 6.5.6
[8] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 6.2.4
[9] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 6.2.4
[10] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 4.2 - Critical Asset Protection
[11] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 4.2 - Critical Asset Protection, Control Objective B.3.1 - Terminal Software Attack Mitigation, Control Objective B.3.1.1 - Terminal Software Attack Mitigation
[12] Standards Mapping - Payment Card Industry Software Security Framework 1.2 Control Objective 4.2 - Critical Asset Protection, 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
[13] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-002530 CAT II
[14] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-002530 CAT II
desc.semantic.dotnet.value_shadowing