SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Programación Defensiva Barrios, José – Blondell, Reinaldo – Colmenares, Franyelvis – Rivero, Joselin
Ley de Murphy "Si hay varias maneras de hacer una tarea, y uno  de estos caminos conduce al desastre, entonces  alguien utilizará ese camino.” «Si algo puede salir mal, saldrá mal» Se tiende a recordar más vívidamente las veces en que cayó con el lado de la mantequilla hacia el suelo puesto que tiene mas consecuencias Por lo tanto, se tiene la impresión de que el pan siempre cae con la mantequilla hacia abajo, sin importar la verdadera probabilidad de cada ocurrencia. Joselin Rivero
Origen La auténtica ley de Murphy, originó una técnica de diseño llamada Diseño Defensivo Busca prever soluciones para evitar fallos en la utilización de un dispositivo que puedan llevar a un resultado inesperado. En la actualidad, vemos ejemplos de diseños realizados teniéndola en cuenta: Un cable USB, HDMI, SCART...  Están diseñados para que sólo pueda conectarse de forma correcta Joselin Rivero
Programación Defensiva Proyecto que solicitaba la ubicación del usuario para su localización en un mapa.  Se decidió utilizar los campos "país" y "población", pero al poco tiempo se detecto  que algunos usuarios confundían población con número de habitantes si se situaba junto a país. Para ese momento, ya habían varios usuarios registrados de los cuáles no se sabía su población. El problema se soluciono cambiando la palabra "población" por "localidad" en el formulario.  Pero era evitable si se hubiese  tenido más en cuenta la programación defensiva validando mejor los campos del formulario. Joselin Rivero
¿Qué es? Prevé y Busca soluciones que puedan evitar fallos en el diseño de un software  Garantiza el funcionamiento esperado de algún elemento de la aplicación ante cualquier situación que pueda aparecer, por muy extraño que sea. Joselin Rivero
Utilidad Objetivos – Problemas que Resuelve Joselin Rivero
Utilidad Apunta a resolver problemas asociados con la calidad del software en todas sus fases Reinaldo Blondell
SANS ,[object Object]
Agrupa a más de 165.000 profesionales de la seguridad informática (consultores,  administradores de sistemas, entes gubernamentales, etc.)
Reunir información sobre todo lo referente a seguridad informática (sistemas operativos, redes, aplicaciones, etc.)
Ofrecer capacitación y certificación en el ámbito de la seguridad informática
Referencia habitual en la prensa sobre temas de auditoría informáticaReinaldo Blondell
¿Por qué? ,[object Object]
ISO 27001NO VERIFICACION de los parámetros de ENTRADA y SALIDA de las funciones de nuestros programas 12.2.1: El insumo de data en las aplicaciones debe ser validado para asegurar que esta data sea correcta y apropiada. 12.2.2, 12.2.3 y 12.2.4: Que no hayan errores, integridad y validar output. Reinaldo Blondell
¿Qué es una Vulnerabilidad? Es cualquier defecto en el mismo que permita explotarlo con el fin de que un atacante pueda hacerse con el control del sistema ,[object Object]
Una mala configuración del software por parte del administrador/usuario.
Una incorrecta programación durante el proceso de desarrollo o actualización del software.
La gran mayoría hoy en día se deben al segundo caso ya que:
Existe bastante documentación de usuario para configurar el software.
Desconocimiento de seguridad informática en la mayoría de programadores.
Empresarios que interrumpen los ciclos de desarrollo del software para terminar antes los productos.

Weitere ähnliche Inhalte

Was ist angesagt?

Paso a paso como crear un usuario en el directorio activo de windows server 2012
Paso a paso como crear un usuario en el directorio activo de windows server 2012Paso a paso como crear un usuario en el directorio activo de windows server 2012
Paso a paso como crear un usuario en el directorio activo de windows server 2012
cacs Correa
 
Cuadro comparativo metodos
Cuadro comparativo metodosCuadro comparativo metodos
Cuadro comparativo metodos
ivansierra20
 
FMK Capa de Presentacion
FMK Capa de PresentacionFMK Capa de Presentacion
FMK Capa de Presentacion
kaolong
 

Was ist angesagt? (20)

Paso a paso como crear un usuario en el directorio activo de windows server 2012
Paso a paso como crear un usuario en el directorio activo de windows server 2012Paso a paso como crear un usuario en el directorio activo de windows server 2012
Paso a paso como crear un usuario en el directorio activo de windows server 2012
 
Malware Analysis Made Simple
Malware Analysis Made SimpleMalware Analysis Made Simple
Malware Analysis Made Simple
 
Web application-security
Web application-securityWeb application-security
Web application-security
 
PLAN SQA
PLAN SQAPLAN SQA
PLAN SQA
 
Especificación y resultados de las pruebas de software
Especificación y resultados de las pruebas de softwareEspecificación y resultados de las pruebas de software
Especificación y resultados de las pruebas de software
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Cuadro comparativo metodos
Cuadro comparativo metodosCuadro comparativo metodos
Cuadro comparativo metodos
 
Componentes de eclipse
Componentes de eclipseComponentes de eclipse
Componentes de eclipse
 
Etapa de estudio de viabilidad de un proyecto informático c4
Etapa de estudio de viabilidad de un proyecto informático c4Etapa de estudio de viabilidad de un proyecto informático c4
Etapa de estudio de viabilidad de un proyecto informático c4
 
El sistema SisMarc 2008
El sistema SisMarc 2008El sistema SisMarc 2008
El sistema SisMarc 2008
 
FMK Capa de Presentacion
FMK Capa de PresentacionFMK Capa de Presentacion
FMK Capa de Presentacion
 
OpenVAS
OpenVASOpenVAS
OpenVAS
 
Diagrama de clases - Ejemplo monográfico 02
Diagrama de clases - Ejemplo monográfico 02Diagrama de clases - Ejemplo monográfico 02
Diagrama de clases - Ejemplo monográfico 02
 
F5 Web Application Security
F5 Web Application SecurityF5 Web Application Security
F5 Web Application Security
 
Tutorial de 260mb.org
Tutorial de 260mb.orgTutorial de 260mb.org
Tutorial de 260mb.org
 
Pruebas exploratorias
Pruebas exploratoriasPruebas exploratorias
Pruebas exploratorias
 
Local File Inclusion to Remote Code Execution
Local File Inclusion to Remote Code ExecutionLocal File Inclusion to Remote Code Execution
Local File Inclusion to Remote Code Execution
 
Semana 3 Herencia en Java
Semana 3   Herencia en JavaSemana 3   Herencia en Java
Semana 3 Herencia en Java
 
SaaSy maps - using django-tenants and geodjango to provide web-gis software-a...
SaaSy maps - using django-tenants and geodjango to provide web-gis software-a...SaaSy maps - using django-tenants and geodjango to provide web-gis software-a...
SaaSy maps - using django-tenants and geodjango to provide web-gis software-a...
 
Pruebas del Software
Pruebas del SoftwarePruebas del Software
Pruebas del Software
 

Ähnlich wie Programación Defensiva

Diapositivas guia 1 de software.melissa burgos
Diapositivas guia 1 de software.melissa burgosDiapositivas guia 1 de software.melissa burgos
Diapositivas guia 1 de software.melissa burgos
Melissa Burgos
 
CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdf
CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdfCarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdf
CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdf
ssuser7ccf16
 

Ähnlich wie Programación Defensiva (20)

Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
Dragonjarcon2015 - ¿Cómo programar aplicaciones seguras? por Paulino Calderon...
 
Diapositivas guia 1 de software.melissa burgos
Diapositivas guia 1 de software.melissa burgosDiapositivas guia 1 de software.melissa burgos
Diapositivas guia 1 de software.melissa burgos
 
Zeety lineamientos de trabajo
Zeety   lineamientos de trabajoZeety   lineamientos de trabajo
Zeety lineamientos de trabajo
 
Campus party 2013
Campus party 2013Campus party 2013
Campus party 2013
 
Seguridad_Informatica_1.pptx
Seguridad_Informatica_1.pptxSeguridad_Informatica_1.pptx
Seguridad_Informatica_1.pptx
 
01 ingsoft jdchc
01 ingsoft jdchc01 ingsoft jdchc
01 ingsoft jdchc
 
Informe Campus Party 2013
Informe Campus Party 2013Informe Campus Party 2013
Informe Campus Party 2013
 
CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdf
CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdfCarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdf
CarenBelmont_IngenieriaDeSoftware_TrabajoPractico_N°1.pdf
 
Proyecto2
Proyecto2Proyecto2
Proyecto2
 
Bolanos marco tarea1
Bolanos marco tarea1Bolanos marco tarea1
Bolanos marco tarea1
 
Control de riesgos
Control de riesgosControl de riesgos
Control de riesgos
 
La ingeniería del software en España: retos y oportunidades
La ingeniería del software en España: retos y oportunidadesLa ingeniería del software en España: retos y oportunidades
La ingeniería del software en España: retos y oportunidades
 
Trabajo no 6
Trabajo no 6Trabajo no 6
Trabajo no 6
 
Plantilla modelo-del-proceso-software
Plantilla modelo-del-proceso-softwarePlantilla modelo-del-proceso-software
Plantilla modelo-del-proceso-software
 
Taller Virtual de Pentesting contra Aplicaciones Web
Taller Virtual de Pentesting contra Aplicaciones WebTaller Virtual de Pentesting contra Aplicaciones Web
Taller Virtual de Pentesting contra Aplicaciones Web
 
SeccióN De TéCnicas De IngenieríA De Software(2007)
SeccióN De TéCnicas  De IngenieríA De Software(2007)SeccióN De TéCnicas  De IngenieríA De Software(2007)
SeccióN De TéCnicas De IngenieríA De Software(2007)
 
Developers: Ignorance is... bliss?
Developers: Ignorance is... bliss?Developers: Ignorance is... bliss?
Developers: Ignorance is... bliss?
 
Ing. de software
Ing. de softwareIng. de software
Ing. de software
 
Ingenieria de Software
Ingenieria de Software Ingenieria de Software
Ingenieria de Software
 
Entornos de desarrollo: Desarrollo de Software
Entornos de desarrollo: Desarrollo de SoftwareEntornos de desarrollo: Desarrollo de Software
Entornos de desarrollo: Desarrollo de Software
 

Mehr von jgbd127 (19)

Sistemas Económicos
Sistemas EconómicosSistemas Económicos
Sistemas Económicos
 
Diseño del Proceso en Administración de Operaciones
Diseño del Proceso en Administración de OperacionesDiseño del Proceso en Administración de Operaciones
Diseño del Proceso en Administración de Operaciones
 
Cambios e Innovaciones en la Administración
Cambios e Innovaciones en la AdministraciónCambios e Innovaciones en la Administración
Cambios e Innovaciones en la Administración
 
PHP
PHPPHP
PHP
 
Ubuntu
UbuntuUbuntu
Ubuntu
 
ISO 9000
ISO 9000ISO 9000
ISO 9000
 
Casos de Uso
Casos de UsoCasos de Uso
Casos de Uso
 
Software Propietario vs Libre
Software Propietario vs LibreSoftware Propietario vs Libre
Software Propietario vs Libre
 
Flash
FlashFlash
Flash
 
Herramientas para llevar a cabo un Sistema de Información
Herramientas para llevar a cabo un Sistema de InformaciónHerramientas para llevar a cabo un Sistema de Información
Herramientas para llevar a cabo un Sistema de Información
 
La Quinta Anauco
La Quinta AnaucoLa Quinta Anauco
La Quinta Anauco
 
Sistemas de Comunicación
Sistemas de ComunicaciónSistemas de Comunicación
Sistemas de Comunicación
 
PMI PMBook
PMI PMBookPMI PMBook
PMI PMBook
 
Evaluación de la Información
Evaluación de la InformaciónEvaluación de la Información
Evaluación de la Información
 
Medidas de Dispersión o Variabilidad
Medidas de Dispersión o VariabilidadMedidas de Dispersión o Variabilidad
Medidas de Dispersión o Variabilidad
 
Parque Nacional Venezuela
Parque Nacional VenezuelaParque Nacional Venezuela
Parque Nacional Venezuela
 
Prevención Integral
Prevención IntegralPrevención Integral
Prevención Integral
 
Venezuela
VenezuelaVenezuela
Venezuela
 
El Disco Duro
El Disco DuroEl Disco Duro
El Disco Duro
 

Programación Defensiva

  • 1. Programación Defensiva Barrios, José – Blondell, Reinaldo – Colmenares, Franyelvis – Rivero, Joselin
  • 2. Ley de Murphy "Si hay varias maneras de hacer una tarea, y uno de estos caminos conduce al desastre, entonces alguien utilizará ese camino.” «Si algo puede salir mal, saldrá mal» Se tiende a recordar más vívidamente las veces en que cayó con el lado de la mantequilla hacia el suelo puesto que tiene mas consecuencias Por lo tanto, se tiene la impresión de que el pan siempre cae con la mantequilla hacia abajo, sin importar la verdadera probabilidad de cada ocurrencia. Joselin Rivero
  • 3. Origen La auténtica ley de Murphy, originó una técnica de diseño llamada Diseño Defensivo Busca prever soluciones para evitar fallos en la utilización de un dispositivo que puedan llevar a un resultado inesperado. En la actualidad, vemos ejemplos de diseños realizados teniéndola en cuenta: Un cable USB, HDMI, SCART... Están diseñados para que sólo pueda conectarse de forma correcta Joselin Rivero
  • 4. Programación Defensiva Proyecto que solicitaba la ubicación del usuario para su localización en un mapa. Se decidió utilizar los campos "país" y "población", pero al poco tiempo se detecto que algunos usuarios confundían población con número de habitantes si se situaba junto a país. Para ese momento, ya habían varios usuarios registrados de los cuáles no se sabía su población. El problema se soluciono cambiando la palabra "población" por "localidad" en el formulario. Pero era evitable si se hubiese tenido más en cuenta la programación defensiva validando mejor los campos del formulario. Joselin Rivero
  • 5. ¿Qué es? Prevé y Busca soluciones que puedan evitar fallos en el diseño de un software Garantiza el funcionamiento esperado de algún elemento de la aplicación ante cualquier situación que pueda aparecer, por muy extraño que sea. Joselin Rivero
  • 6. Utilidad Objetivos – Problemas que Resuelve Joselin Rivero
  • 7. Utilidad Apunta a resolver problemas asociados con la calidad del software en todas sus fases Reinaldo Blondell
  • 8.
  • 9. Agrupa a más de 165.000 profesionales de la seguridad informática (consultores,  administradores de sistemas, entes gubernamentales, etc.)
  • 10. Reunir información sobre todo lo referente a seguridad informática (sistemas operativos, redes, aplicaciones, etc.)
  • 11. Ofrecer capacitación y certificación en el ámbito de la seguridad informática
  • 12. Referencia habitual en la prensa sobre temas de auditoría informáticaReinaldo Blondell
  • 13.
  • 14. ISO 27001NO VERIFICACION de los parámetros de ENTRADA y SALIDA de las funciones de nuestros programas 12.2.1: El insumo de data en las aplicaciones debe ser validado para asegurar que esta data sea correcta y apropiada. 12.2.2, 12.2.3 y 12.2.4: Que no hayan errores, integridad y validar output. Reinaldo Blondell
  • 15.
  • 16. Una mala configuración del software por parte del administrador/usuario.
  • 17. Una incorrecta programación durante el proceso de desarrollo o actualización del software.
  • 18. La gran mayoría hoy en día se deben al segundo caso ya que:
  • 19. Existe bastante documentación de usuario para configurar el software.
  • 20. Desconocimiento de seguridad informática en la mayoría de programadores.
  • 21. Empresarios que interrumpen los ciclos de desarrollo del software para terminar antes los productos.
  • 22. Las auditorías de seguridad de código fuente apenas se practican.Reinaldo Blondell
  • 23. Vulnerabilidades y Puntos Críticos más comunes al crear aplicaciones Grupo de Vulnerabilidades mas importantes en la actualidad según SANS: Reinaldo Blondell
  • 24. Vulnerabilidades y Puntos Críticos Entre las 25 mas importantes existentes en la actualidad tenemos como referencia las siguientes: Defectos o fallas en la preservación de la estructura de las consultas SQL (SQL-injection). Fallas en la preservación de la estructura de las páginas web ( Cross-site Scripting) Control externo del estado de la aplicación (por ejemplo al utilizar cookies para mantener el estado). Inicialización defectuosa. Uso de un algoritmo criptográfico quebrado (obsoleto). Contraseñas establecidas en el código (hard-coded). Franyelvis Colmenares
  • 26. Ejemplo Asumir que el siguiente código está en una aplicación web y que existe un parámetro "nombreUsuario" Si el usuario escribe su "Alicia”, la aplicación generara una sentencia SQL correcta similar a la siguiente, donde se seleccionaría al usuario "Alicia“: Pero si un usuario malintencionado escribe como nombre de usuario Se generaría la siguiente consulta SQL La base de datos ejecutaría la consulta en orden, seleccionaría el usuario 'Alicia', borraría la tabla 'usuarios' y seleccionaría datos que quizá no están disponibles para los usuarios web comunes Franyelvis Colmenares
  • 27. Cómo evitar el SqlInjection Franyelvis Colmenares
  • 28. Políticas de Programación La primera cosa que se debe hacer es redactar una política de programación, que contenga: Las cosas que NO se deben hacer La existencia de patrones El know-how de la empresa o grupo de desarrolladores Explícitamente indicar la suma importancia del seguimiento de las reglas Complejidad ciclomática Técnicamente, se puede cumplir con estas reglas Logging (log4net, log4j) Peer review (revisión de pares) Try / catch Franyelvis Colmenares
  • 29. Logging Aproximadamente un 4% del código debe estar destinado a operaciones de logging (McConnell) Muy difícil enseñar a hacer buen logging, tiempo de aprendizaje aprox. 1 año. Mejor herramienta de logging: log4j / log4net: http://logging.apache.org Cada vez que ocurre una falla en el programa, podemos estar enterados por correo!! José Barrios
  • 30. Ejemplo Logging (log4net) protected void Logon_Click(object sender, EventArgs e) { log.Info("Trata de autenticarse: " + UserEmail.Text + "/********"); if (verificar(UserEmail.Text, UserPass.Text)) { log.Info("Usuario autenticado"); … // redirección o a Inicio } else { log.Error("Usuario " + UserEmail.Text + "/" + UserPass.Text + " incorrectos"); Msg.Text = "Nombre o Clave de Usuario son inválidos, o el usuario ha sido dado de baja"; } } José Barrios
  • 32. Recomendaciones Evitar los Errores clásicos de la Programación José Barrios
  • 33. Preguntas Gracias por su atención… El Equipo