Está en la página 1de 5

Organizacin de la charla

Desarrollo de Cdigo Seguro


22 y 27 de Septiembre de 2004

Facultad Regional Concepcin del Uruguay


Universidad Tecnolgica Nacional

Charla 1: Hacia el cdigo seguro


- Introduccin al Cdigo Seguro.
- Ataques al Cdigo.
- Seguridad en el Ciclo de Vida del
Software.
Charla 2: Seguridad en Aplicaciones Web

Gabriel Arellano
arellanog@frcu.utn.edu.ar

Alejandro de Brito Fontes

- Seguridad en Aplicaciones Web.


- Seguridad en PHP.
- Seguridad en JSP.

debritoa@frcu.utn.edu.ar

Introduccin

Introduccin al Cdigo Seguro


Principios de Seguridad.
Porqu es importante la
seguridad del cdigo?
Determinacin de los
requerimientos de seguridad.

Hace unos aos las aplicaciones:


- Estaban diseadas para consumir la menor cantidad
posible de recursos.
- No se ajustaban demasiado a la operatoria de los
negocios de la organizacin.
- No favorecan el intercambio de informacin.
En la actualidad para la mayora de los desarrolladores es
importante:
- Desarrollar rpido y barato.
- Que la aplicacin permita el intercambio de datos y la
toma de decisiones.
- Que la interfaz sea atractiva y funcional.

Cdigo Seguro
Cualquier aplicacin que opere en un ambiente de red o en
Internet est expuesta a ataques.
Es ms, podemos tener la certeza de que eventualmente
ser atacada. Por esto, las aplicaciones deben ser
especficamente diseadas para funcionar en ambientes
hostiles.
Debemos disear nuestras aplicaciones
utilizando cdigo seguro.
Cdigo seguro: por cdigo seguro no nos referimos a
cdigo de aplicaciones utilizadas en seguridad informtica.
Nos referimos a cdigo diseado para soportar
ataques de usuarios maliciosos.

Seguridad: Costo o Inversin?


El problema con muchos desarrolladores y empresas de
desarrollo de software es que la seguridad no es vista
como una funcin generadora de ganancias del proceso de
desarrollo. Debido a esto, los directivos no desean gastar
dinero entrenando a desarrolladores para que escriban
cdigo seguro.

Consecuencias de un Ataque
Las consecuencias de un ataque exitoso a una aplicacin
de la organizacin son muchas y variadas, entre ellas
podemos enumerar:

Prdida de operatividad.
Deterioro de la imagen de la empresa.
Prdidas monetarias.
Prdida de Clientes.
Consecuencias legales. (Ley 24.766)

Seguridad: Costo o Inversin?


Segn IBM corregir un error de seguridad en una aplicacin
luego de haberla implementado es 100 veces ms caro que
corregirlo en la etapa de diseo.

La administracin suele gastar dinero en tecnologas de


seguridad, pero esto ocurre generalmente cuando se ha
producido un ataque exitoso!
Reparar aplicaciones luego de un ataque suele ser muy
costoso, tanto en trminos econmicos como de imagen.

El cdigo desarrollado teniendo en cuenta la seguridad del


mismo desde su diseo es ms robusto que el cdigo que
implementa seguridad luego de su implementacin.

Seguridad: Costo o Inversin?

Porqu Escribimos Cdigo Inseguro?


Las razones para que los desarrolladores diseen y
confeccionen cdigo inseguro son muchas, enunciemos
algunas de ellas:

Otros aspectos a tener en cuenta:


- El software seguro es de mejor calidad.
- Puede ser empleado como herramienta de marketing.
- Desde el punto de vista del cliente es ms atractivo ya
que tiene mejor imagen y reducen las posibilidades de
perder clientes o tener problemas legales.
- Representa menos costos de mantenimiento y mejor
retorno de inversin.
- Se reduce el tiempo de entrega, ya que las etapas de
prueba y correccin de errores son ms breves.

- Los programadores, analistas e ingenieros no cuentan en


los contenidos curriculares de sus respectivas carreras con
ctedras dedicadas a la seguridad informtica.
- Los libros dedicados al anlisis, diseo e implementacin
de sistemas de informacin no abordan esta temtica.
- Los desarrolladores no estn habituados a emplear
tcnicas de verificacin formales.
- Muchos programadores simplemente no son buenos
programadores.
- Programar de manera segura implica ms trabajo.

Porqu Escribimos Cdigo Inseguro?

Seguridad Informtica

Razones para que los desarrolladores


confeccionen cdigo inseguro:

diseen

- Los programadores no piensan en sus aplicaciones como


aplicaciones que soportarn a muchos usuarios.
- La mayora de los programadores no trabajan en
seguridad y la mayora de los que trabajan en seguridad
no son programadores.
- Algunas empresas tiene mucho software heredado que
es imposible de migrar, pero que es necesario integrar.
- Los clientes no consideran la seguridad como un factor
decisivo a la hora de adquirir software.
- La seguridad implica ms tiempo de desarrollo.

Frecuentemente los objetivos de la seguridad de la


informacin se pueden describir en funcin de algunos de
sus atributos que se desean preservar:
-

Autenticidad.
Confidencialidad.
Integridad.
Disponibilidad.

Y adems podramos incluir:


- Proteccin a la rplica.
- No repudio.

Seguridad Informtica
En la actualidad, virtualmente todas las computadoras
servidores, desktops, PDA's, telfonos celulares y otros
dispositivos embebidos estn interconectados. Esto
genera gran cantidad de oportunidades para los
desarrolladores de software, tanto en el desarrollo de
aplicaciones para estos dispositivos, como en la utilizacin
de los mismos para emplearlos en soluciones a medida.
Esto incrementa sensiblemente la probabilidad de un
ataque exitoso. Por ejemplo, aplicaciones no diseadas
para estar en ambientes interconectados hacen a los
dispositivos susceptibles de sufrir un ataque, simplemente
porque su desarrollador no se imagino que esa aplicacin
se empleara en un ambiente de red.

Requerimientos de Seguridad
El caso anterior nos da un claro ejemplo de lo cuidadosa
que tiene que ser la determinacin de requerimientos de
seguridad de nuestra aplicacin.
Aqu enumeramos algunas consideraciones:
-

Requerimientos de Seguridad (Cont.)


-

No confe en los usuarios.


Fronteras de confianza.
Software de terceros.
Manipulacin de informacin sensible:
- Protegerlo o evitar manipularlo directamente.
- Generacin (por ej. passwords).
- Almacenamiento.
- Transito.
Poner a prueba nuestra solucin.
Pensar como el atacante.
Seguridad declarativa o programada.
Realizar revisiones peridicas:
- Revisiones del Diseo.
- Revisiones del Cdigo.

Relevancia.
Claridad de la Solucin.
Calidad sobre Cantidad.
Involucre a todos los interesados.
La seguridad como un proceso no como una tecnologa.
Fallar de manera segura (Fail-Safe)
Defensa en profundidad.
Determinacin de privilegios:
- Mnimo privilegio.
- Privilegio necesario.

Recomendaciones

Comenzar haciendo preguntas.

Determinar cunta seguridad es la suficiente.

Usar tcnicas estndar de ingeniera.

Asumir cosas con cuidado.

Implementar seguridad desde el da 1.

Disear con el enemigo en mente.

Antes de avanzar... De qu me estoy olvidando?

Entender y respetar la cadena de confianza.

Ser tacao con los privilegios.

Probar cualquier accin propuesta contra la poltica.

Aplicar niveles aceptables de tolerancia a fallas.

Manejar los errores de manera apropiada.

Recomendaciones (Cont.)
Degradarse ordenadamente y Fallar en seguro.
Determine acciones y valores por defecto.
Mantener la simpleza.
Modularize al mximo.
No confiar en la seguridad por oscuridad.
Adoptar medidas tolerables por los usuarios.
Asegrese que alguien sea responsable por cada dato.
Asegrese de poder reconstruir eventos.
Elimine los eslabones dbiles.
Construya varios niveles de seguridad.
Reutilice el cdigo que sabe es seguro.
No se confe en la seguridad de los enlatados.

Recursos
Libros:
Writing Secure Code
Michael Howard, David LeBlanc - Ed. MS Press.
Secure Coding: Principles & Practices
Mark G. Graff, Kenneth R. van Wyk - Ed. O'Reilly
Recursos on-line:
Secure Programming for Linux and Unix HOWTO
David A. Wheeler
http://www.dwheeler.com/secure-programs
Best Practices for Secure Development
Razvan Peteanu
http://members.rogers.com/razvan.peteanu

También podría gustarte