Top 25 errores de la programación

Slides:



Advertisements
Presentaciones similares
INTRODUCCIÓN A LA VERIFICACION Y VALIDACION
Advertisements

Diccionario de Datos (DD)
PLANIFICACIÓN DE TESTING
Internet y tecnologías web
CI-2413 Desarrollo de Aplicaciones para Internet
Web Attacks Mauren Alies Maria Isabel Serrano Sergio Garcia
ADMINISTRACION DE REDES SECUENCIA DE COMANDOS EN SITIOS CRUZADOS(XSS)
Estructura de un Sistema Operativo
Pruebas Orientadas a Objeto
Desarrollo de Aplicaciones para Internet
Framework Hexápodo PHP fácil, rápido y sin dolor
Curso de PHP Tema 6: Seguridad.
Presentación del estado del arte
Enrique Cardenas Parga
PROGRAMACION ORIENTADA A OBJETOS II
Taller 5: Trabajo con Plantillas y uso de tecnología Ajax.
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
Módulo 13 Procesos de Verificación de la Implementación del SAA.
ADMINISTRACION DE REDES SECUNECIA DE COMANDOS EN SITIOS CRUZADOS(XSS) DIEGO ALEXANDER MADRID DUQUE GABRIEL ANDRES AGUIRRE JARAMILLO INSTITUTO TECNOLOGICO.
Propuesta de una metodología para el desarrollo de proyectos informáticos empleando la herramienta para el diseño automatizado GeneXus Autor: Dipl.-Ing.
JOSE FERNANDO MORA CARDONA Administración de redes - CTMA SENA 2012 FALLAS DE RESTRICCIÓN DE ACCESO A URL.
Los Diez Riesgos Más Importantes en Aplicaciones WEB Top A1-Inyección Oscar William Monsalve Luis Alberto Suarez Jorge Eliecer Betancur Diana Marcela.
The OWASP Foundation OWASP AppSec Aguascalientes 2010 Guía de Desarrollo Seguro Francisco Aldrete Miembro de OWASP capítulo Aguascalientes.
Conceptos básicos Importancia del Diseño Elementos a diseñar Las GUI’s
InfoPath Ventajas y Uso.
Prof. José T. Cadenas. Aplicación Web La Internet y la Web hacen que sea fácil y atractivo poner toda la información en el cyberespacio, y la hace accesible.
EXPLOITEXPLOIT Equipo 3Equipo 3. Exploit: Es un programa o código que "explota" una vulnerabilidad del sistema o de parte de él para aprovechar esta deficiencia.
LENGUAJE DE PROGRAMACIÓN
Metodología para la Auditoría de Seguridad en Aplicaciones Web
DIRECTRICES PARA LA MEJORA DEL DESEMPEÑO
DESARROLLO DE PÁGINAS EN EL WEB Preparado por Prof. Edgar Lopategui Corsino.
ATAQUES POR INYECCION DE CODIGO SQL
UNIVERSIDAD TECNOLÓGICA ECOTEC. ISO 9001: Lucía Castro- Víctor Cabezas- Diana Checa UNIVERSIDAD ECOTEC Ataques Aplicaciones WEB Lucía Castro Víctor.
Ingeniería en Sistemas de Información Diseño de Sistemas (3K1)
Ingeniería del Software
UD 1: “Adopción de pautas de seguridad informática” Análisis de las principales vulnerabilidades de un sistema informático. Luis Alfonso Sánchez Brazales.
WAF Web Application Firewalls
REFERENCIA DIRECTA INSEGURA A OBJETOS
XSS CROSS SITE SCRIPTING Es un tipo de inseguridad informática o agujero de seguridad típico de las aplicaciones Web, que permite a una tercera parte.
GUTIÉRREZ GRANADOS HÉCTOR DANIEL
Introducción a ataques de tipo inyección: Inyección SQL
VISIÓN GENERAL DE LA IS Con independencia del modelo de proceso hay tres fases genéricas: Fase de definición Fase de desarrollo Fase de mantenimiento Cada.
“condición que necesita el usuario para resolver un problema o conseguir un objetivo determinado”. Los requisitos de un sistema son los aspectos que el.
REQUISITOS.
S EGURIDAD Y A LTA D ISPONIBILIDAD Nombre: Adrián de la Torre López 24/09/ Adrián de la Torre López.
FACULTAD: CIENCIAS ECONÓMICAS Y EMPRESARIALES ASIGNATURA: GESTIÓN DE CONTENIDO ELECTRÓNICO TÍTULO: TINFOPATH - VENTAJAS Y USO. AUTORA: MARIA DANIELA TOMALÁ.
Roles de Open UP.
Se producen cuando una aplicación recibe datos no confiables y estos no han sido validados adecuadamente antes de procesarlos, lo cual puede llevar a que.
TIPOS DE PRUEBAS DEL SOFTWARE
DISEÑO CURRICULAR Presentado por: Cesar Augusto Sáenz María Alejandra Hernández 1.contenidos curriculares de competencia.
Análisis de las principales vulnerabilidades de un sistema informático. Gabriel Montañés León.
El conocimiento de las políticas, o la resolución de problemas específicos es un proceso de dos fases, la declaración precisa de lo que debería ser realizado:
Secuencia de Comandos en Sitios Cruzados XSS
Es una actividad que consiste en la planificación, diseño e implementación de sitios web y paginas web.
Colegio de Bachilleres Plantel 13 Xochimilco - Tepepan
HTTP Session Management Desarrollo de Aplicaciones para Internet.
Hackear un Sitio Web. Claudio
UNIVERSIDAD LATINA SEGURIDAD INFORMATICA II E.I. L.E. Prof. Ramón Castro Liceaga VI. ANÁLISIS DE VULNERABILIDAD CON NESSUS.
ANGIE PAOLA SOLANO CASTIBLANCO DAR SOPORTE A LOS PROCESOS NORMAS ISO DOC. JOHANA LÓPEZ CHAVEZ SENA 2010.
A NÁLISIS DE LAS PRINCIPALES VULNERABILIDADES DE UN SISTEMA INFORMÁTICO Luis Villalta Márquez.
OWASP APPSEC RIO DE LA PLATA dcotelo13
República Bolivariana de Venezuela Universidad Nacional Experimental Politécnica de la Fuerza Armada (UNEFA) Carrera: Ingeniería de Sistemas Cátedra: Análisis.
Análisis de las principales vulnerabilidades de un sistema informático. Javier Rodríguez Granados.
Productos de Pruebas Hace hambre!! . Las bases. La verificación consiste en corroborar que el programa respeta su especificación, mientras que validación.
Objetivos de la prueba Los objetivos principales de realizar una prueba son: Detectar un error. Tener un buen caso de prueba, es decir que tenga más probabilidad.
UNIVERSIDAD LATINA SEGURIDAD INFORMATICA II E.I. L.E. Prof. Ramón Castro Liceaga XI. SEGURIDAD EN SERVIDORES DE NOMBRE (DNS).
Verificación y Validación del Software
VERIFICACIÓN Y VALIDACIÓN DE SISTEMAS 3.10 Fase de manejo de requerimientos 4.1 Modelado de pruebas en UML Ponente: ing. Alejandro tapia vazquez.
Introducción a programación web Martin Esses. En las presentaciones anteriores, vimos como enviar datos a un controlador usando POST y como generar formularios.
CWE Common Weakness Enumeration. CWE-20: Improper Input Validation Un programa no valida correctamente la entrada de datos Un atacante puede “crear” entradas.
Transcripción de la presentación:

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 = currentUser.getAttribute("quantity"); double total = price * quantity; chargeUser(total);

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();

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.getParameter("email"); %> ... Email Address: <%= email %>

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");

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

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.WebControls.TextBox Login; protected System.Web.UI.WebControls.Label EmployeeID; EmployeeID.Text = Login.Text; ... (HTML follows) ... <p><asp:label id="EmployeeID" runat="server" /></p>

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;

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

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