La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Top 25 errores de la programación

Presentaciones similares


Presentación del tema: "Top 25 errores de la programación"— Transcripción de la presentación:

1 Top 25 errores de la programación
Interacción insegura entre componentes: CWE-20, -116, -89, -79 y -78 Sergio Becerril Marco Galicia

2 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.

3 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.

4 CWE-20: Validación inapropiada de entradas
... public static final double price = 20.00; int quantity = currentUser.getAttribute("quantity"); double total = price * quantity; chargeUser(total);

5 CWE-20: Validación inapropiada de entradas
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();

6 CWE-20: Validación inapropiada de entradas
Mitigación: Frameworks: Apache Struts, OWASP ESAPI. Paranoia. Blacklist != Seguridad. Casting. ...

7 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.

8 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.

9 CWE-116: Salidas codificadas incorrectamente
<% String = request.getParameter(" "); %> ... Address: <%= %>

10 CWE-116: Salidas codificadas incorrectamente
sub GetUntrustedInput { return($ARGV[0]); } sub encode { my($str) $str =~ s/\&/\&/gs; $str =~ s/\"/\"/gs; $str =~ s/\'/\&apos;/gs; $str =~ s/\</\</gs; $str =~ s/\>/\>/gs; return($str); } sub doit { my $uname = encode(GetUntrustedInput("us ername")); print "<b>Welcome, $uname!</b><p>\n"; system("cd /home/$uname; /bin/ls -l");

11 CWE-116: Salidas codificadas incorrectamente
Mitigación: Frameworks, mejores lenguajes. Paranoia. Mecanismos estructurados (e.g. Stored procedures). Validar entradas. Especificaciones deben incluir codificaciones. ...

12 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 ActiveX.

13 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.

14 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.

15 CWE-79: Cross-site scripting
... protected System.Web.UI.WebControls.TextBox Login; protected System.Web.UI.WebControls.Label EmployeeID; EmployeeID.Text = Login.Text; ... (HTML follows) ... <p><asp:label id="EmployeeID" runat="server" /></p>

16 CWE-79: Cross-site scripting
protected System.Web.UI.WebControls.Label EmployeeName; ... string query = "select * from emp where id=" + eid; sda = new SqlDataAdapter(query, conn); sda.Fill(dt); string name = dt.Rows[0]["Name"]; EmployeeName.Text = name;

17 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 , UTF-8). ...

18 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 Consecuencias: perdida de datos, puenteo de seguridad Facilidad de detección: fácil Popularidad entre atacantes: alta

19 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

20 CWE-89: SQL inyection Prevención y mitigación (continua)‏
Pruebas Herramientas automáticas Operación Usar Firewall

21 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

22 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

23 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


Descargar ppt "Top 25 errores de la programación"

Presentaciones similares


Anuncios Google