Está en la página 1de 5

Seguridad en ingeniera de software

Contenido
Caractersticas de seguridad != seguridad en el software ............................................................................ 2 Los siete reinos peligrosos ............................................................................................................................ 3 Validacin y representacin de entradas ................................................................................................. 4 Abuso de la API ......................................................................................................................................... 4 Caractersticas de seguridad ..................................................................................................................... 4 Tiempo y estado........................................................................................................................................ 4 Manejo de errores .................................................................................................................................... 4 Calidad del cdigo ..................................................................................................................................... 5 Encapsulamiento....................................................................................................................................... 5 Entorno ..................................................................................................................................................... 5 Bibliografa .................................................................................................................................................... 5

Caractersticas de seguridad != seguridad en el software


En ocasiones los programadores piensan en la seguridad, pero muy frecuentemente piensan en trminos de las caractersticas de seguridad como: criptografa, contraseas y mecanismos de control de acceso. Como lo dice Michael Howard, un gerente de producto en el equipo de ingeniera de seguridad de Microsoft: "Caractersticas de seguridad != seguridad en el software" (Howard & LeBlanc, 2003). Para que un programa sea seguro todas las partes del programa deben ser seguras, no solo los bits que explcitamente se enfocan a la seguridad. En la mayora de los casos, las fallas de seguridad no estn relacionadas con las caractersticas de seguridad. Una caracterstica de seguridad puede fallar y comprometer el sistema en muchas formas, pero usualmente existen ms formas en las que las caractersticas que no estn relacionadas con la seguridad pueden fallar y provocar un problema de seguridad. Las caractersticas de seguridad se implementan con la idea de que deben funcionar de manera correcta para mantener la seguridad del sistema, pero las caractersticas que no estn enfocadas a la seguridad frecuentemente no reciben esta consideracin, a pesar de que, en ocasiones, son tan crticas como la seguridad del sistema. Los programadores siempre perciben esto de manera incorrecta, y como consecuencia, dejan de pensar en la seguridad cuando se deben enfocar en ella. Considera la siguiente cita errnea de la documentacin de WebLogic de BEA: "Debido a que la mayor parte de la seguridad de una aplicacin web puede ser implementada por un administrador de sistema, los desarrolladores no deben poner atencin a los detalles de seguridad de la aplicacin, a menos que se deban tomar consideraciones especiales en el cdigo. Para programar la seguridad a medida dentro de una aplicacin, los desarrolladores usando el servidor WebLogic pueden tomar ventaja de la API de BEA para obtener informacin que ser usada por el servidor. La API se encuentra en el paquete weblogic.security." (BEA, 2004). Imagina un ladrn que intenta ingresar a tu casa. Puede comenzar por intentar usar la puerta principal verificando si se encuentra abierta. Si la puerta est cerrada, entonces se ha encontrado con una caracterstica de seguridad. Ahora imagina que las bisagras de la puesta se encuentran en el exterior. El constructor probablemente no pens en la relacin que tienen las bisagras con la seguridad, esto porque las bisagras no son una caracterstica de seguridad, solo se encuentran presentes para que la puerta pueda realizar su requisito de abrir y cerrar. Pero ahora el ladrn no perder tiempo tratando de forzar la cerradura. Simplemente sacara los tornillos de las bisagras y quitara la puerta. Los constructores pararon de cometer este error hace mucho tiempo, pero en el mundo de la seguridad del software este tipo de errores aun son frecuentes. Considera la lista de las vulnerabilidades de alto perfil descubiertas entre 2002 y 2007 en el software para mostrar imgenes, estas se muestran en la siguiente tabla. En todos los casos, el cdigo que contena la vulnerabilidad estaba relacionado con el procesamiento de imgenes, no con la seguridad, pero los efectos de estas vulnerabilidades van desde la negacin de servicios hasta comprometer el sistema completo.

Tabla 1. Vulnerabilidades de alto perfil descubiertas entre 2002 y 2007 en el software para mostrar imgenes

Fecha Marzo de 2002

Programa zLib

Noviembre de 2002

Internet Explorer

Agosto de 2004

libPNG

Septiembre MS GDI+ de 2004

Julio de 2005

zLib

Efecto Negacin de servicio de que afecta a varios programas, incluyendo aquellos que manejan imgenes PNG. Un archivo PNG puede ser usado para ejecutar cdigo arbitrario cundo se despliega en Internet Explorer. Negacin de servicio que afecta a los usuarios de Firefox, Opera, Safari y varios programas ms. El cdigo de renderizado JPG permite la ejecucin remota de cdigo arbitrario. Afecta a Internet Explorer, Microsoft Office y otros productos de Microsoft. Crea el potencial para la ejecucin remota de cdigo. Afecta a mucjos programas incluyendo aquellos que manejan imgenes PNG.

Referencia http://www.securityfocus.com/ bid/6431

http://www.microsott.com/ technet/security/bulletin/ MS02-066.mspx http://www.securityfocus.com/ bid/6431 http://www.microsoft.com/ technet/security/bulletin/ MSO4-028.mspx

http://www.securityfocus.com/ bid/14162

Diciembre de 2005

Renderizar archivos WMF permite http://www.microsoft.com/ la ejecucin remota de cdigo technet/security/bulletin/ arbitrario. Explotable a travs de ms06-001.mspx Internet Explorer. Enero de Renderizar imgenes GIF permite la http://www.sunsolve.sun.com/ 2007 ejecucin remota de cdigo search/document.do?assetkey= arbitrario mediante un applet 1-26-102760-1 hostil. En lugar de concentrarnos en las formas de implementar las caractersticas de seguridad usando un modulo precargado o mediante un marco de trabajo, debemos identificar y evitar los errores comunes en el cdigo que no estn relacionados con la seguridad.

Motor de renderizado de grficos de Microsoft Plataforma de Java 2

Los siete reinos peligrosos


Los siete reinos peligrosos (pernicious kingdoms) es una taxonoma creada por Tsipenyuk, Chess y McGraw (Tsipenyuk, Chess, & McGraw, 2005). El termino reino es usado para agrupar miembros similares. Estos reinos son: 1. 2. 3. 4. 5. Validacin y representacin de entradas Abuso de la API Caractersticas de seguridad Tiempo y estado Manejo de errores

6. Calidad del cdigo 7. Encapsulamiento 8. * Entorno En realidad son ocho reinos, pero el octavo describe los asuntos de seguridad fuera del cdigo. Esta clasificacin sirve para describir los defectos genricos y los defectos especficos a un contexto.

Validacin y representacin de entradas


Los problemas de validacin y representacin de entradas son causados por le metacaracteres, codificaciones alternativas y representaciones numricas. Los problemas de seguridad son resultado de confiar en las entradas. Los problemas relacionados con este reino son los ms prevalentes y los ms peligrosos de todos los defectos de seguridad en la actualidad.

Abuso de la API
Una API es un contracto entre un emisor y un destinatario. La mayora de las formas de abusar de la API son causadas porque el emisor no cumple con su parte del contrato. Otra forma de abuso es confiar en que una funcin de bsqueda DNS retornara informacin confiable. En este caso, el emisor abusa del destinatario asumiendo su comportamiento.

Caractersticas de seguridad
La seguridad en el software es ms que caractersticas de seguridad, a pesar de esto, es importante implementar las caractersticas de seguridad de forma correcta. Las caractersticas de seguridad se refieren a: autenticacin, control de acceso, confidencialidad, criptografa y manejo de privilegios. Escribir una contrasea de base de datos dentro del cdigo es un ejemplo de una caracterstica de seguridad mal implementada.

Tiempo y estado
Para mantener la cordura, a los programadores les gusta creer que el cdigo se ejecutara en forma ordenada, ininterrumpida y lineal. Los sistemas operativos que corren en sistemas multincleo, multiprocesador o en maquinas distribuidas, no siguen esta regla. Los defectos surgen cuando existe una brecha entre lo que el programador piensa y lo que pasa en la realidad. Estos defectos son causados por interacciones inesperadas entre los hilos, procesos, el tiempo y la informacin. Estas interacciones funcionan mediante el uso de estados compartidos: semforos, variables, el sistema de archivos y cualquier elemento que puede almacenar informacin. Los juegos en lnea como World of Warcraft frecuentemente contienen vulnerabilidades de tiempo y estado porque permiten que varios usuarios interacten de forma simultnea (Hoglund & McGraw, 2007).

Manejo de errores
Los errores y el manejo de estos representan un tipo de API, pero los errores relacionados con estos son tan comunes que requieren de un reino aparte. Al igual que con el abuso de la API, existen dos formas de introducir errores de seguridad. La primera y la ms comn es manejar los errores de forma dbil o

no manejarlos. La segunda es producir errores que revelan demasiado o que son difciles de manejar de forma segura.

Calidad del cdigo


La poca calidad en el cdigo lleva a comportamientos impredecibles. Desde el punto de vista del usuario, esto se manifiesta como poca usabilidad. Para un atacante esto representa la oportunidad de sobrecargar el sistema de formas no previstas. Entrar a un ciclo infinito o hacer referencia a un puntero nulo puede llevar un ataque de negacin de servicio, pero tambin crea las condiciones necesarias para que el atacante tome ventaja usando el cdigo mal escrito. El buen cdigo y la buena seguridad estn ntimamente relacionados.

Encapsulamiento
El encapsulamiento es tener fuertes fronteras. En un navegador web esto puede significar que el cdigo mvil no pueda ser usado por otro cdigo mvil. En el servidor esto pude significar la diferenciacin entre la informacin validada y la que no lo est, o entre la informacin que puede ver el usuario y la que no.

Entorno
Este reino incluye todo lo que esta fuera del cdigo pero que es crucial para la seguridad del producto. Los archivos de configuracin que gobiernan el comportamiento del programa y las banderas usadas para construir el programa son dos ejemplos de la influencia del entorno en la seguridad del software.

Bibliografa
BEA. (2004). WebLogic Server documentation. USA: BEA. Chess, B., & West, J. (2007). Secure Programming with Static Analysis. USA: Addison-Wesley Professional. Dowd, M., McDonald, J., & Schuh, J. (2006). The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities. USA: Addison-Wesley Professional. Hoglund, G., & McGraw, G. (2007). Exploiting Online Games: Cheating Massively Distributed Systems. USA: Addison-Wesley Professional. Howard, M., & LeBlanc, D. (2003). Writing Secure Code. USA: Microsoft Press. Tsipenyuk, Chess, & McGraw. (2005). Seven Pernicious Kingdoms: A Taxonomy of Software Security Errors. USA: Fortify Software.

También podría gustarte