Top 25 errores de la programacin Interaccin insegura
- Slides: 23
Top 25 errores de la programación Interacción insegura entre componentes: CWE-20, -116, -89, -79 y -78 Sergio Becerril Marco Galicia
CWE-20: Validación inapropiada de entradas • Consiste en no asegurarse que las entradas que recibimos conforman con las especificaciones requeridas. • e. g. Se permite introducir datos de tipo incorrecto, fuera de rango o de longitud exagerada.
CWE-20: Validación inapropiada de entradas • • Alta prevalencia. Barato de resolver. Frecuentemente atacado. Causa ejecuciones arbitrarias de código, denegaciones de servicio y pérdidas de datos. • Puede ser muy fácil de detectar. • Su explotación implica alto nivel técnico.
CWE-20: Validación inapropiada de entradas. . . public static final double price = 20. 00; int quantity = current. User. get. Attribute("quantity"); double total = price * quantity; charge. User(total); . . .
CWE-20: Validación inapropiada de entradas private void build. List ( int untrusted. List. Size ){ if ( 0 > untrusted. List. Size ){ die("Negative value supplied for list size, die evil hacker!"); } Widget[] list = new Widget [ untrusted. List. Size ]; list[0] = new Widget(); }
CWE-20: Validación inapropiada de entradas • Mitigación: – Frameworks: Apache Struts, OWASP ESAPI. – Paranoia. – Blacklist != Seguridad. – Casting. –. . .
CWE-116: Salidas codificadas incorrectamente • Consiste en no asegurarse que la salida de nuestra rutina o programa codifica apropiadamente caracteres especiales. • El problema cambia según el tipo de datos que vamos a entregar, pero siempre involucra el formato de los datos.
CWE-116: Salidas codificadas incorrectamente • • Alta prevalencia. Barato de resolver. Frecuentemente atacado. Causa ejecuciones arbitrarias de código y pérdidas de datos. • Suele ser muy fácil de detectar. • Su explotación implica alto nivel técnico.
CWE-116: Salidas codificadas incorrectamente <% String email = request. get. Parameter("email"); %>. . . Email Address: <%= email %>
CWE-116: Salidas codificadas incorrectamente sub Get. Untrusted. Input { return($str); return($ARGV[0]); } } sub doit { sub encode { my $uname = encode(Get. Untrusted. Input("us ername")); my($str) = @_; $str =~ s/&/& /gs; $str =~ s/"/" /gs; $str =~ s/'/' /gs; print "<b>Welcome, $uname!</b><p>n"; $str =~ s/</< /gs; system("cd /home/$uname; /bin/ls -l"); $str =~ s/>/> /gs; }
CWE-116: Salidas codificadas incorrectamente • Mitigación: – Frameworks, mejores lenguajes. – Paranoia. – Mecanismos estructurados (e. g. Stored procedures). – Validar entradas. – Especificaciones deben incluir codificaciones. –. . .
CWE-79: Cross-site scripting • O bien, la falla en conservar la estructura de una página web. • Consiste en no validar, sanear y codificar de forma apropiada las entradas que se usarán para generar contenido web para los usuarios. • e. g. Permitir entradas que pueden contener, de forma maliciosa, código Javascript o Active. X.
CWE-79: Cross-site scripting • • Alta prevalencia. Barato de resolver. Frecuentemente atacado. Causa ejecuciones arbitrarias de código y evasiones de medidas de seguridad. • Puede ser muy fácil de detectar. • Su explotación implica alto nivel técnico.
CWE-79: Cross-site scripting • Tres tipos principales: – No persistente. Cuando el ataque depende de que el usuario “caiga en la trampa”. – Persistente. Cuando el ataque se realiza sin que el usuario tenga que alterar su actividad. – Basado en DOM. Cuando el ataque depende de scripts del lado del cliente, en vez del comportamiento del servidor.
CWE-79: Cross-site scripting. . . protected System. Web. UI. Web. Controls. Text. Box Login; protected System. Web. UI. Web. Controls. Label Employee. ID; . . . Employee. ID. Text = Login. Text; . . . (HTML follows). . . <p><asp: label id="Employee. ID" runat="server" /></p>. . .
CWE-79: Cross-site scripting protected System. Web. UI. Web. Controls. Label Employee. Name; . . . string query = "select * from emp where id=" + eid; sda = new Sql. Data. Adapter(query, conn); sda. Fill(dt); string name = dt. Rows[0]["Name"]; . . . Employee. Name. Text = name;
CWE-79: Cross-site scripting • Mitigación: – Frameworks, librerías (e. g. MS Anti-XSS, Apache Wicket). – Paranoia. – Profundo entendimiento de las interacciones entre módulos. – Codificaciones fuertes (ISO-8859 -1, UTF-8). –. . .
CWE-89: Falla al preservar la estructura de la consulta SQL (SQL inyection) • Prevalencia de la vulnerabilidad: alta • Costo de compostura: bajo • Frecuencia del ataque: frecuente •
CWE-89: SQL inyection Prevención y mitigación • Arquitectura y diseño – Usar librerías, o frameworks – Separación entre código y datos – Mínimo privilegio – Verificación redundante • Implementación – Adecuada codificación – Usar lista blanca – Validar entrada – Deshabilitar meta caracteres
CWE-89: SQL inyection Prevención y mitigación (continua) • Pruebas – Herramientas automáticas • Operación – Usar Firewall
CWE-78: Falla al preservar la estructura de comandos del S. O. • • • Prevalencia de la vulnerabilidad: media Costo de compostura: medio Frecuencia del ataque: frecuente Consecuencias: ejecución de código Facilidad de detección: fácil Popularidad entre atacantes: alta
CWE-78: Falla al preservar la estructura de comandos del S. O. • Arquitectura y diseño – Usar librerías, no procesos externos – Correr el código en “jaula” – Mantener lo mas posible de datos fuera del control externo • Implementación – Entrecomillar secuencias de escape y argumentos – Especificar argumentos en archivo, o entrada estándar – Separación entre datos y código – Usar lista blanca – Validar entrada – Adecuada codificación
CWE-78: Falla al preservar la estructura de comandos del S. O. • Pruebas – Herramientas automáticas • Operación – Usar ambiente “automatic taint propagation” – Implementar politica de ejecucion
- Interaccin
- Secuencia de instrucciones finitas
- Programacin
- Actitud insegura
- Condiciones inseguras ejemplos
- Media muestral
- Errores conceptuales
- Errores aleatorios
- Errores mas comunes en el voleibol
- Pila semántica en un analizador sintáctico.
- Eskerrik asko jauna
- Errores sistematicos en topografia
- Los errores
- Que es el lenguaje verbal
- Control de errores
- Aproximacion por truncamiento
- Falacias procedentes de errores linguisticos ejemplos
- Eskerrik asko jauna
- Errores conceptuales ejemplos
- Tobias 4 1-5
- Deteccion de errores
- Error de propagacion
- Detección y corrección de errores
- Propagacion de errores