Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porSebastián Quintana Castellanos Modificado hace 8 años
1
CWE Common Weakness Enumeration
2
CWE-20: Improper Input Validation Un programa no valida correctamente la entrada de datos Un atacante puede “crear” entradas específicas que: Afecten el flujo de control y/o datos Ejecución arbitraria de código Control arbitrario de algún recurso Es el error más común que ocasiona software con debilidades
3
CWE-20: Improper Input Validation
4
Soluciones Si esperas números.....asegúrate de que la entrada de los usuarios sean números! Usar Struts Usar ESAPI de OWASP Suponer que toda entrada es maliciosa, usar “whitelist”, no solamente “blacklist” Validar por: longitud, tipo, sintaxis, y “reglas del negocio” (“lógica del negocio”) Verificar en cliente..... y en servidor!
5
Ejemplo... public static final double price = 20.00; int quantity = currentUser.getAttribute("quantity"); double total = price * quantity; chargeUser(total);... total puede adquirior un valor negativo ya que no se verifica quantity que es dato dado por el usuario total puede adquirior un valor negativo ya que no se verifica quantity que es dato dado por el usuario
6
Ejemplo... #define MAX_DIM 100... /* board dimensions */ int m,n, error; board_square_t *board; printf("Please specify the board height: \n"); error = scanf("%d", &m); if ( EOF == error ) die("No integer passed: Die evil hacker!\n"); printf("Please specify the board width: \n"); error = scanf("%d", &n); if ( EOF == error ) die("No integer passed: Die evil hacker!\n"); if ( m > MAX_DIM || n > MAX_DIM ) die("Value too large: Die evil hacker!\n"); board = (board_square_t*) malloc( m * n * sizeof(board_square_t));... A pesar de que se verifica que m y n sean enteros y no excedan un límite.... Se puede asignar demasiada memoria a board si m y n son negativos que al multiplicarse dan un positivo muy grande CWE-400: Uncontrolled Resource Consumption ('Resource Exhaustion') CWE-789: Uncontrolled Memory Allocation A pesar de que se verifica que m y n sean enteros y no excedan un límite.... Se puede asignar demasiada memoria a board si m y n son negativos que al multiplicarse dan un positivo muy grande CWE-400: Uncontrolled Resource Consumption ('Resource Exhaustion') CWE-789: Uncontrolled Memory Allocation
7
Ejemplo private void buildList ( int untrustedListSize ){ if ( 0 > untrustedListSize ) die("Negative value supplied for list size, die evil hacker!"); Widget[] list = new Widget [ untrustedListSize ]; list[0] = new Widget(); } A pesar de que se verifica que la longitud ( untrustedListSize ) de la lista a crear ( Widget ) no sea negativa, se puede dar una longitud igual a 0, arrojando una excepción.... A pesar de que se verifica que la longitud ( untrustedListSize ) de la lista a crear ( Widget ) no sea negativa, se puede dar una longitud igual a 0, arrojando una excepción....
8
Ejemplo void parse_data(char *untrusted_input){ int m, n, error; error = sscanf(untrusted_input, "%d:%d", &m, &n); if ( EOF == error ){ die("Did not specify integer value. Die evil hacker!\n"); } /* proceed assuming n and m are initialized correctly */ } A pesar de que se trata de verificar que los datos leidos sean enteros, se puede dar una Entrada como: 123: Y la variable n quedaría indefinida o no inicializada... CWE-457: Use of Uninitialized Variable A pesar de que se trata de verificar que los datos leidos sean enteros, se puede dar una Entrada como: 123: Y la variable n quedaría indefinida o no inicializada... CWE-457: Use of Uninitialized Variable
9
Ejemplo $birthday = $_GET['birthday']; $homepage = $_GET['homepage']; echo "Birthday: $birthday Homepage: click here " El programador supone que birthday será dado en un formato válido de fecha y homepage En un formato válido de URL pero no hace ninguna verificación, esto permitiría que la persona Que ingresa los datos pueda dar El programador supone que birthday será dado en un formato válido de fecha y homepage En un formato válido de URL pero no hace ninguna verificación, esto permitiría que la persona Que ingresa los datos pueda dar
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.