Beruflich Dokumente
Kultur Dokumente
CARRERA
ING. EN SISTEMAS COMPUTACIONALES
MATERIA
INGENIERA DE SOFTWARE
TRABAJO
SEGURIDAD EN INGENIERA DE SOFTWARE
INTEGRANTES DE EQUIPO: ANTELE SIXTEGA IVAN ARRISON PARRA JAVIER DEL ANGEL ATAXCA MAZABA MARTN IXBA GONZALEZ CRUZ OMAR IXTEPAN CANSINO ANA MARIA MACHUCHO GOMEZ VICTOR MALAGA DOMINGUEZ MARIANELA MARTINEZ MARCIAL ABRAHAM ALEXIS MENDOZA RODRIGUEZ ARMANDO SERRANO BLAS EPIFANIO TOM ANTEMATE DAVID VALERIO GOMEZ SHEILA DE JESUS XALA BUSTAMANTE OCTAVIO ARTEMIO XOLO CHIGO ROCIO GRUPO
604 A SAN ANDRS TUXTLA, VER., 24 DE MAYO DEL 2013.
INTRODUCCIN .................................................................................................... 4 SEGURIDAD EN EL CICLO DE DESARROLLO DEL SOFTWARE ....................... 5 Seguridad en el anlisis de requerimientos .................................................. 5 Seguridad en el diseo ................................................................................. 6 Seguridad en la codificacin ......................................................................... 6 Testing / QA de seguridad ............................................................................ 7 Implementacin / puesta en produccin ....................................................... 9 Ventajas ............................................................................................. 9 Desventajas ....................................................................................... 9 Seguridad en el desarrollo de software....................................................... 10 Papel de seguridad en el desarrollo de software. ....................................... 11 CONFIABILIDAD DEL SOFTWARE...................................................................... 12 PRUEBAS DE CONFIABILIDAD ........................................................................... 16 Tipos de Pruebas de Confiabilidad ............................................................. 16 De Componentes ............................................................................. 17 Pruebas de Estrs ............................................................................ 17 De Integracin .................................................................................. 17 Pruebas de estrs de componentes ................................................. 17 Pruebas de estrs de integracin ..................................................... 17 Pruebas de Reales y Destruccin .................................................... 18 Pruebas de Integracin .................................................................... 19 Pruebas Estructurales ...................................................................... 19 INGENIERA DE SEGURIDAD ............................................................................. 20
Pgina 2
Pgina 3
Pgina 4
En esta etapa, se deben identificar aquellos requerimientos funcionales que tendrn impacto en los aspectos de seguridad de la aplicacin. Algunos de ellos son: requerimientos de conformidad con normativas locales o internacionales, tipo de informacin que se transmitir o procesar (por ejemplo: la Informacin pblica o confidencial, datos personales, datos financieros, contraseas, datos de pago electrnico, etc.) y requerimientos de registros de auditora (por ejemplo: qu debe registrar la aplicacin en sus Logs).
Pgina 5
Antes de comenzar a escribir lneas de cdigo, hay numerosos aspectos de seguridad que se deben tener en cuenta durante el diseo de la aplicacin. Algunos de ellos son: diseo de autorizacin (como definir los roles, permisos y privilegios de la aplicacin), diseo de autenticacin (se deber disear el modo en el que los usuarios se van a autenticar, contemplando aspectos tales como los mecanismos o factores de autenticacin con contraseas, tokens, certificados, etc. posibilidades de integrar la autenticacin con servicios externos como LDAP, Radius o Active Directory) y los mecanismos que tendr la aplicacin para evitar ataques de diccionario o de fuerza bruta (algunos de ejemplos son bloqueo de cuentas, implementacin de captchas, etc.), diseo de los mensajes de error y advertencia, para evitar que los mismos brinden demasiada informacin y que sta sea utilizada por atacantes y diseo de los mecanismos de proteccin de datos (se debe contemplar el modo en el que se proteger la informacin sensible en trnsito o almacenada; segn el caso, se puede definir la implementacin de encripcin, hashes o truncamiento de la informacin).
Una vez que se cuenta con el diseo detallado de la aplicacin, una prctica interesante es la de realizar sobre el mismo un anlisis de riesgo orientado a software. Existen tcnicas documentadas al respecto, tales como Threat Modeling. Estas tcnicas permiten definir un marco para identificar debilidades de seguridad en el software, antes de la etapa de codificacin. Como valor agregado, del anlisis de riesgo orientado a software se pueden obtener casos de prueba para ser utilizados en la etapa de Testing/QA. SEGURIDAD EN LA CODIFICACIN
Una vez concluido el diseo, los desarrolladores tendrn que codificar los distintos componentes de la aplicacin. Es en este punto en donde suelen incorporarse, por error u omisin, distintos tipos de vulnerabilidades. Estas
M.T.I. MONTSERRAT MASDEFIOL SUREZ. Pgina 6
Las vulnerabilidades funcionales son aquellas ligadas especficamente a la funcionalidad de negocio que posee la aplicacin, por lo que no estn previamente categorizadas. Algunos ejemplos ilustrativos de este tipo de vulnerabilidad son los siguientes: una aplicacin de banca electrnica que permite realizar transferencias con valores negativos, un sistema de subastas que permite ver los valores de otros oferentes, un sistema de venta de entradas para espectculos que no impone lmites adecuados a la cantidad de reservas que un usuario puede hacer. En la etapa de codificacin, una de las reglas de oro es verificar todos los valores de entrada y de salida. Esto es, asumir siempre que el valor pudo haber sido manipulado o ingresado maliciosamente antes de ser procesado. TESTING / QA DE SEGURIDAD
Tradicionalmente, la labor del equipo de Testing/QA es la de encontrar y reportar errores funcionales de la aplicacin. Para esto, se desarrollan casos de test basados en la funcionalidad esperada.
A esto se le denomina testing funcional y bsicamente consiste en validar que la aplicacin haga lo que se esperaba que hiciera. Sucede que habitualmente hay un desfasaje entre el diseo original de la aplicacin (lo que se espera que
Pgina 7
Es en este ltimo grupo, en donde habitualmente estn las vulnerabilidades, y el testing funcional clsico no es capaz de encontrarlas. Por este motivo se necesitan nuevas tcnicas para explorar lo desconocido. El testing de seguridad se basa principalmente en probar la aplicacin con escenarios no planificados, incluyendo valores mutados, fuera de rango, de tipo incorrecto o malformados, acciones fuera de orden, etc.
Existen herramientas automticas que pueden ayudar al analista de QA en la bsqueda de errores. Las mismas son tiles por su velocidad y capacidad de automatizacin, pero pueden causar falsos positivos, y por lo general no son buenas detectando vulnerabilidades funcionales. Es por esto que los mejores resultados resultan de la combinacin de tcnicas automticas y manuales.
Pgina 8
Una mala configuracin al momento de implementar la aplicacin podra echar por tierra toda la seguridad de las capas anteriores. Tanto la aplicacin como el software de base deben configurarse de manera segura al momento de poner el software en produccin. En este punto se deben contemplar tareas tales como: cambio de usuarios y contraseas iniciales o por defecto, borrado de datos de prueba y cambio de permisos de acceso. Es tambin importante mantener una correcta separacin de los ambientes de desarrollo, testing y produccin y procedimientos de traspaso seguro de uno a otro de estos ambientes. VENTAJAS Consistencia. La herramienta ve lo que ve, sin ideas preconcebidas. Apuntan a la causa raz, no a los sntomas. Una prueba de penetracin puede establecer que hay un problema, pero no su causa final ni cmo corregirlo. Deteccin precoz. La aplicacin no tiene que estar integrada ni necesita ejecutarse. Su ejecucin es barata. Un sistema puede reanalizarse cuando se aplican cambios, o cuando se descubre una nueva vulnerabilidad de aplicacin. DESVENTAJAS Falsos positivos. Impacto (coste) crece al tener que evaluar cada positivo. Falsos negativos. Suelen ser incapaces de detectar vulnerabilidades de seguridad achacables al diseo, o especficas del contexto propio de la aplicacin (se centran en vulnerabilidades genricas, de codificacin). Qu es mejor? En seguridad, sin duda, baja tasa de falsos negativos sin una tasa desproporcionada de falsos positivos.
Pgina 9
SEGURIDAD EN EL DESARROLLO DE SOFTWARE Cuando el desarrollador realiza algn tipo de sistema software sin importar cul sea la finalidad que vaya a tener el mismo, es importante que se tomen algunos recaudos, ya que al tratarse de un sistema tan delicado, es importante que se tenga en cuenta que en cualquier momento puede sufrir alguna falla en su funcionamiento. Generalmente la seguridad en el desarrollo de software es tan importante como cuando se est ejecutando ya que lgicamente, para poder desarrollarlo, se requiere de un sistema operativo especial, el cual tambin est en riesgo. Se dice eso porque durante el desarrollo de programas, siempre se deben realizar diferentes tipos de pruebas, y son precisamente estas ejecuciones a prueba las que ponen el riesgo el sistema que se est utilizando en general. Pero es importante que se destaque el hecho de que existen sistemas de seguridad que se utilizan especialmente para proteger a los sistemas operativos sobre los cuales se realizan pruebas durante el desarrollo de software, y solo es cuestin de averiguar cul es el ms indicado en el caso de que se est trabajando en esta rea. Las tiendas de informtica suelen tener varios sistemas de seguridad para el desarrollo de software, los cuales son muy variados, y generalmente traen diferentes aplicaciones segn las necesidades y
requerimientos de la persona que est trabajando sobre un software. Tambin es importante tener en cuenta el asesoramiento de personas especializadas en los sistemas de seguridad ya que las aplicaciones son totalmente diferentes para cada uno de los casos. Por otro lado es muy importante
Pgina 10
Pgina 11
Pgina 12
Figura 1.1
Pgina 13
confiabilidad solamente pueden alcanzarse a costa del rendimiento del sistema. Un software confiable incluye cdigo extra, a menudo redundante, para realizar las comprobaciones necesarias para estados excepcionales del sistema y para recuperar el sistema ante un fallo. Esto reduce la confiabilidad del sistema e incrementa la cantidad de memoria requerida por el software. Adems, tambin se incrementan de forma significativa los costos del desarrollo del sistema. Debido al diseo adicional, implementacin y costos de validacin, el incremento de la confiabilidad de un sistema puede hacer crecer
Pgina 15
PRUEBAS DE CONFIABILIDAD
La comprobacin de la confiabilidad consiste en probar una aplicacin para descubrir y eliminar errores antes de que se implemente el sistema. Puesto que hay infinidad de combinaciones distintas de recorridos alternativos a lo largo de una aplicacin, no es muy probable que encuentre todos los errores posibles de una aplicacin compleja. No obstante, puede probar las situaciones ms probables bajo condiciones normales de uso y confirmar que la aplicacin proporciona el servicio previsto. Si dispone de tiempo suficiente, puede realizar pruebas ms complicadas para detectar defectos menos evidentes. TIPOS DE PRUEBAS DE CONFIABILIDAD De Componentes. Pruebas de Estrs. De Integracin. Pruebas Reales. Pruebas de Confiabilidad. Pruebas de Destruccin Aleatoria. Pruebas de Integracin. Pruebas Estructurales.
Pgina 16
aplicacin. Es necesario conocer los recorridos codificados y las situaciones a las que se enfrenta el usuario y que se identifiquen todas las maneras en las que el usuario se mueve por la aplicacin. PRUEBAS DE ESTRS DE COMPONENTES Con las pruebas de estrs de los componentes, se aslan los servicios y componentes que conforman el sistema, se infieren los mtodos de navegacin, de funcionamiento y de interfaz de estos servicios y componentes y se crea un cliente de prueba que llame a dichos mtodos. Para aquellos mtodos que tienen acceso a un servidor de base de datos o a cualquier otro componente, puede crear un cliente que proporcione datos simulados en el formato previsto. El equipo de prueba inserta datos simulados una y otra vez mientras observa los resultados. PRUEBAS DE ESTRS DE INTEGRACIN Despus de forzar cada componente individual, deber someter a una situacin de estrs a toda la aplicacin con todos sus componentes y servicios. Las pruebas de estrs de integracin estn ntimamente relacionadas con las interacciones con otras estructuras de datos, procesos y servicios tanto de los componentes internos como de otros servicios externos de la aplicacin. Las
M.T.I. MONTSERRAT MASDEFIOL SUREZ. Pgina 17
funcionamiento. Es necesario que conozca los recorridos codificados y las situaciones a las que se enfrentan los usuarios, que comprenda lo que intentan hacer estos y que identifique todas las maneras en las que el usuario se mueve por la aplicacin. Las secuencias de comandos de prueba debern probar la aplicacin de acuerdo con el uso previsto. PRUEBAS DE REALES Y DESTRUCCIN Pruebas Reales: El software que es confiable de forma aislada en un entorno de prueba protegido puede no serlo en la implementacin real. Un entorno de prueba real garantiza que las aplicaciones simultneas no interfieren entre s. Debe asegurarse de que la nueva aplicacin puede ejecutarse con la configuracin final. Pruebas de destruccin aleatorias Una de las formas ms sencillas de probar la confiabilidad es utilizar datos de entrada aleatorios. Este tipo de pruebas intenta por todos los medios bloquear la aplicacin o que sta produzca errores; para ello, se proporcionan datos ilgicos y falsos. Los datos de entrada pueden ser eventos del mouse (ratn) o del teclado, secuencias de mensajes del programa, pginas Web, cachs de datos o cualquier otra condicin de entrada que pueda introducirse en la aplicacin. Deber utilizar pruebas de destruccin aleatorias para comprobar las rutas de errores importantes y poner de manifiesto errores de
programacin del software. Este tipo de pruebas mejora la calidad del cdigo ya que da lugar a errores que permiten examinar el control de los errores devueltos. Las pruebas aleatorias pasan por alto de forma intencionada cualquier especificacin del comportamiento del programa. Si se interrumpe la aplicacin, no se ha superado la prueba. Si no se interrumpe la aplicacin, la prueba se ha superado. La cuestin es que las pruebas aleatorias pueden tener un alto nivel
Pgina 18
Pgina 19
En un mundo actual globalizado y sin fronteras de movilidad con respecto al uso total de Sistemas de Informacin y de las Comunicaciones es imprescindible dejar de evaluar el papel tan importante al cual se enfrentan los Ingenieros de Software en el campo de la seguridad. Se puede pensar en la definicin de seguridad como el grado de confianza que exige un individuo o empresa para que su informacin no sea mostrada ni divulgada a todo el mundo, entonces es donde se requiere un compromiso consiente por parte de los profesionales involucrados en la creacin del software encargado de dicha funcin. Los sistemas de seguridad crticos son sistemas en los que es esencial que el funcionamiento del sistema sea siempre seguro. Esto es, el sistema nunca debera provocar daos en las personas o en el entorno del sistema incluso si ste falla. Ejemplos de sistemas de seguridad crticos son el control y monitorizacin de sistemas de un avin, sistemas de control de procesos en plantas qumicas y farmacuticas y sistemas de control de automviles. El control mediante hardware de los sistemas de seguridad crticos es ms sencillo de implementar y analizar que el control mediante software. Sin embargo, actualmente se estn construyendo sistemas de tal complejidad que no se pueden controlar nicamente mediante hardware. Es esencial realizar algn control mediante software debido a la necesidad de gestionar un nmero muy grande de sensores y actuadores con leyes de control complejas.
Software de seguridad crtico primario: Es el software que est embebido como un controlador en un sistema. El mal funcionamiento de dicho software puede ocasionar un mal funcionamiento del hardware, lo que
Pgina 20
La fiabilidad y la seguridad del sistema estn relacionadas, pero son distintos atributos de confiabilidad. Desde luego, un sistema de seguridad crtico es fiable si est de acuerdo con su especificacin y funciona sin fallos. Dicho sistema puede incorporar caractersticas de tolerancia a defectos para que pueda proporcionar un servicio continuo incluso si se producen defectos. Sin embargo, los sistemas tolerantes a defectos no son necesariamente seguros. El software an puede funcionar mal y ocasionar un comportamiento del sistema que provoque un accidente.
Adems del hecho de que nunca se pueda tener la certeza absoluta de que un sistema est libre de defectos y es tolerante a fallos, hay muchas otras razones por las que un sistema software que es fiable no necesariamente es seguro:
La especificacin puede estar incompleta en el sentido de que no describe el comportamiento requerido del sistema en algunas situaciones crticas. Un alto porcentaje de sistemas que funcionan mal (Natajo y Kume, 1991; Lutz, 1993) se debe a errores de especificacin ms que a errores de diseo. En
Pgina 21
El mal funcionamiento del hardware hace que el sistema se comporte de forma impredecible y enfrente al software con un entorno inesperado. Cuando los componentes estn prximos a fallar, pueden comportarse de forma errtica y generar seales que estn fuera de los rangos que puede manejar el software.
Los operadores del sistema pueden generar entradas que no son individualmente incorrectas, pero que, en situaciones particulares, pueden dar lugar a un mal funcionamiento del sistema. Como ejemplo anecdtico se puede citar el caso en que un mecnico dio instrucciones al software de utilidades de gestin de un avin para que levantara el tren de aterrizaje. El software ejecut las instrucciones perfectamente. Por desgracia, el avin permaneci en tierra todo el tiempo; claramente, el sistema debera haber inhabilitado el comando a menos que el avin estuviese en el aire.
Se ha creado un vocabulario especializado para tratar los sistemas de seguridad crticos y es importante comprender los trminos especficos utilizados.
La clave para garantizar la seguridad es asegurar que los accidentes no ocurran o que las consecuencias de stos sean mnimas. Esto puede conseguirse de tres formas complementarias:
Evitacin de contingencias: El sistema se disea para que las contingencias se eviten. Por ejemplo, un sistema de corte que requiere que el operador presione dos botones distintos al mismo tiempo para utilizar la
Pgina 22
automticos. Si se produce un fuego, a menudo ste se puede controlar antes de que suponga una amenaza para el avin.
Los accidentes ocurren generalmente cuando varias cosas van mal al mismo tiempo. Un anlisis de accidentes serios (Perrow, 1984) sugiere que casi todos ellos se debieron a una combinacin de malos funcionamientos ms que a fallos aislados. La combinacin no anticipada condujo a interacciones que provocaron fallos de funcionamiento del sistema. Perrow sugiere tambin que es imposible anticiparse a todas las posibles combinaciones de mal funcionamiento de un sistema, y que los accidentes son una parte inevitable del uso de sistemas complejos. El software tiende a incrementar la complejidad del sistema, de tal forma que al realizar el control mediante software puede incrementar la probabilidad de accidentes del sistema. Sin embargo, el software de control y monitorizacin puede mejorar tambin la seguridad de los sistemas. Los sistemas controlados por software pueden monitorizar un rango de condiciones ms amplio que los sistemas
electromecnicos. Los primeros se pueden adaptar con relativa facilidad. Adems implican el uso del hardware de la computadora, el cual tiene una fiabilidad inherente muy alta y es fsicamente pequeo y ligero. Los sistemas controlados por software pueden proporcionar mecanismos de seguridad sofisticados. Pueden soportar estrategias de control que reducen la cantidad de tiempo que las
M.T.I. MONTSERRAT MASDEFIOL SUREZ. Pgina 23
En todos los casos, es importante mantener un sentido de la proporcin sobre la seguridad del sistema. Es imposible conseguir que un sistema sea totalmente seguro, y la sociedad debe decidir si los beneficios del uso de tecnologas avanzadas compensan o no las consecuencias de un accidente ocasional. Tambin es una decisin social y poltica cmo utilizar unos recursos nacionales limitados a fin de reducir el riesgo para la poblacin en su conjunto.
ATAQUE DE SEGURIDAD
Hasta la aparicin de la informtica la valoracin de los activos de una empresa se haca segn los objetos fsicos tiles, las producciones propias, las infraestructuras, la tesorera y el capital humano. Desde los ltimos aos se ha aadido un nuevo capital tan importante como los anteriores, el valor de la informacin. No es que antes no existiera la informacin en las empresas, el espionaje industrial es tan antiguo como la revolucin industrial, pero se mantena con el sistema de papel y archivadores y formaba parte de los activos de oficina. Hoy en da, la informacin se maneja en grandes cantidades y de procedencias muy diversas, el valor aadido de una empresa puede ser la informacin que maneja.
Como capital de la empresa cada vez es ms importante mantener la seguridad de la informacin, pero tambin los riesgos cada vez son mayores. Estos riesgos se pueden clasificar por su procedencia en tres categoras: Errores involuntarios de personas y/o mquinas. Desastres naturales.
Pgina 24
Dentro de los ataques voluntarios, los problemas creados por stos se pueden clasificar en tres familias: Denegacin de servicio: disponibilidad. Prohibir el acceso a la informacin. Observacin no autorizada: confidencialidad. Acceso a informacin por personas que pueden utilizarla para daar la empresa, o sea, personas no autorizadas. Modificacin no autorizada: integridad. Acceso a la informacin y modificacin, ya sea borrando, cambiando, aadiendo o sustituyendo datos. La proteccin de la informacin es ms grave desde la aparicin de las redes telemticas. Estas redes y especialmente Internet, hacen que la informacin sea un problema global y no aislado a las mquinas internas de la empresa. Las tecnologas aplicadas a la seguridad en redes estn en su fase de desarrollo inicial, especialmente por dos motivos: La mayora de sistemas operativos estn pensados para arquitecturas mainframe/terminal y no para arquitecturas cliente/servidor o
Internet/Intranet que se utilizan actualmente. No existen estndares ni organizaciones mundiales aceptadas por todas las empresas proveedoras de seguridad.
Al disear un sistema de seguridad para la empresa la pregunta es existe un sistema completamente seguro? La respuesta es clara, no. En la prctica siempre existe un compromiso entre el nivel de seguridad y los parmetros: Costes. La seguridad es proporcional al coste de las medidas de proteccin. Entorno de usuario. La seguridad es opuesta a los sistemas abiertos que pretenden facilitar el acceso a cualquier usuario con o sin preparacin.
Pgina 25
MECANISMOS DE IMPLEMENTACIN Por el mbito de su aplicacin se pueden dividir en dos grandes familias: Especficos. Se aplican a una capa OSI del sistema para implementar un servicio. Generales. Se aplican al sistema para cumplir la poltica general.
GENERALES Funcionalidad de confianza. El sistema de seguridad est libre de ataques. Etiquetas. Clasifica la informacin por niveles de seguridad: secreta, confidencial, no clasificada, etc. Auditorias. Almacena las acciones realizadas sobre el sistema. Deteccin de eventos. Detecta movimientos peligrosos dentro del sistema. Recuperacin de desastres. Todas las polticas para recuperar la informacin despus de un ataque con xito: Backups, mirrors, etc. Polticas de personal. Normativas sobre las actuaciones del personal. ESPECFICOS Cifrado. Se transforman los datos para que slo sean inteligibles a los usuarios autorizados. Firma digital. A la informacin se le aaden unos datos que nicamente puede generar un usuario concreto, adems no permiten la modificacin de la informacin por otros usuarios.
Pgina 27
Los mecanismos: cifrado, firma digital, control de accesos e integridad utilizan criptologa para su implementacin.
PROTECCIN
La proteccin es un atributo del sistema que refleja su capacidad para protegerse de ataques externos que pueden ser accidentales o provocados. La proteccin ha adquirido cada vez ms importancia en tanto que ms y ms sistemas se han conectado a Internet. Las conexiones a Internet proporcionan funcionalidades del sistema adicionales (por ejemplo, los clientes pueden acceder directamente a sus cuentas bancarias), pero la conexin a Internet tambin significa que el sistema puede ser atacado por personas con intenciones hostiles. La conexin a Internet tambin conlleva que los detalles sobre vulnerabilidades particulares del sistema pueden difundirse fcilmente para que ms personas sean
Pgina 28
Ejemplos de ataques podran ser los virus, el uso no autorizado de servicios del sistema y la modificacin no autorizada del sistema o sus datos. La proteccin es importante para todos los sistemas crticos. Sin un nivel razonable de proteccin, la disponibilidad, fiabilidad y seguridad del sistema pueden verse comprometidas si ataques externos que provocan daos al mismo. La razn de esto es que todos los mtodos para asegurar la disponibilidad, fiabilidad y seguridad se valen del hecho de que el sistema operacional es el mismo que se instal originalmente. Si dicho sistema instalado se ha visto comprometido de alguna forma (por ejemplo, si el software se ha modificado para aceptar un virus), entonces los argumentos para la fiabilidad y la seguridad originalmente establecidos dejan de ser ciertos. El sistema de software puede entonces corromperse y comportarse de forma impredecible.
Por el contrario, los errores en el desarrollo de un sistema pueden provocar agujeros de proteccin. Si un sistema no responde a entradas inesperadas o si los lmites de un vector no se verifican, entonces los atacantes pueden explotar estas debilidades para tener acceso al sistema. Los incidentes de proteccin ms importantes tales como el gusano de Internet original (Spafford, 1989) y el gusano Code Red ms de diez aos despus (Berghel, 2001) se aprovecharon del hecho de que los programas en C no incluyen verificacin de los lmites de los vectores. Los gusanos sobrescribieron parte de la memoria con cdigo que permiti el acceso no autorizado al sistema. Por supuesto, en algunos sistemas crticos, la proteccin es la dimensin ms importante de la confiabilidad del sistema. Los sistemas militares, los sistemas de comercio electrnico y los sistemas que implican el procesamiento e intercambio de informacin confidencial, se deben disear de tal forma que alcancen altos niveles de proteccin. Por ejemplo, si un sistema de reservas de
Pgina 29
Existen tres tipos de daos que pueden ser causados por ataques externos:
Denegacin de servicio. El sistema puede verse forzado a entrar en un estado en que sus servicios normales no estn disponibles. Esto, obviamente, afecta a la disponibilidad del sistema.
Corrupcin de programas o datos. Los componentes software del sistema pueden ser alterados de forma no autorizada. Esto puede afectar al comportamiento del sistema y, por lo tanto, a su fiabilidad y a su seguridad. Si el dao es grave, la disponibilidad del sistema puede verse afectada.
Revelacin de informacin confidencial. La informacin gestionada por el sistema puede ser confidencial y los ataques externos pueden exponerla a personas no autorizadas. Dependiendo del tipo de datos, esto podra afectar a la seguridad del sistema y puede permitir ataques posteriores que afecten a la disponibilidad o fiabilidad del sistema.
Como con otros aspectos de la confiabilidad, existe una terminologa especializada asociada con la proteccin. Algunos trminos importantes, como los tratados por Pfleeger (1977), se definen de la siguiente manera:
Exposicin: posible prdida o dao en un sistema informtico. Un ejemplo puede ser la prdida o dao de los datos o la prdida de tiempo y esfuerzo si es necesaria una recuperacin del sistema despus de una violacin de proteccin. Vulnerabilidad: debilidad en un sistema informtico que se puede aprovechar para provocar prdidas o daos.
Pgina 30
Generalmente, se produce desde fuera del sistema y con una intencin deliberada de causar algn dao. Amenaza: circunstancias que potencialmente pueden provocar prdidas o daos. Se pueden entender como una vulnerabilidad del sistema que est expuesto a un ataque. Control: medida de produccin que reduce la vulnerabilidad del sistema. La encriptacin podra ser un ejemplo de un control que reduce una vulnerabilidad de un sistema de control de acceso deficiente.
Existe una clara analoga con cierta terminologa de la seguridad en el sentido de que una exposicin es anloga a un accidente y una vulnerabilidad es anloga a una contingencia. Por tanto, existen aproximaciones comparables que se utilizan para garantizar la proteccin de un sistema:
Evitar la vulnerabilidad. El sistema se disea para que las vulnerabilidades no ocurran. Por ejemplo, si un sistema no est conectado a una red pblica externa, entonces no existe la posibilidad de un ataque por parte de otras personas conectadas a la red.
Defeccin y neutralizacin de ataques. El sistema se disea para detectar vulnerabilidades y eliminarlas antes de que provoquen una exposicin del sistema. Un ejemplo de deteccin y eliminacin de la vulnerabilidad es la utilizacin de un verificador de virus que analiza los ficheros entrantes y los modifica para eliminar el virus. Limitacin de la exposicin. Las consecuencias de un ataque exitoso se minimizan. Ejemplos de limitacin de la exposicin son los sistemas de copias de seguridad peridicas y una poltica de gestin de configuraciones que permite que el software daado pueda reconstruirse.
La gran mayora de las vulnerabilidades en los sistemas informticos se originan en fallos humanos en lugar de en problemas tcnicos. Las personas
M.T.I. MONTSERRAT MASDEFIOL SUREZ. Pgina 31
Dentro de las herramientas de proteccin para los sistemas de informacin se encuentra la criptologa. La criptologa est formada por dos tcnicas complementarias:
criptoanlisis y criptografa. La criptografa es la tcnica de convertir un texto inteligible, texto en claro (plaintext), en otro, llamado criptograma (ciphertext), cuyo contenido de
informacin es igual al anterior pero slo lo pueden entender las personas autorizadas. El criptoanlisis es la tcnica de descifrar un criptograma sin tener la autorizacin. CRIPTOGRAFA Para encriptar se debe transformar un texto mediante un mtodo cuya funcin inversa nicamente conocen las personas autorizadas. As se puede utilizar un algoritmo secreto o un algoritmo pblico que utiliza una palabra, llamada clave, slo conocida por las personas autorizadas, esta clave debe ser imprescindible para la encriptacin y desencriptacin.
Pgina 32
CRIPTOANLISIS El criptoanlisis abarca muchas tcnicas diversas, muchas veces no dependen del conocimiento del algoritmo sino que mediante sistemas de aproximacin matemtica se puede descubrir el texto en claro o la clave. La dificultad del anlisis depende de la informacin disponible, as el criptoanalista puede tener acceso a:
M.T.I. MONTSERRAT MASDEFIOL SUREZ. Pgina 33
acercamiento, llamado SecureUML, integra las polticas de control de acceso basadas en roles en un proceso de desarrollo de software basado en UML y dirigido por el modelo.
M.T.I. MONTSERRAT MASDEFIOL SUREZ. Pgina 35
Pgina 36
Pgina 37
Pgina 38
Pgina 39
La seguridad en las aplicaciones de software debe abordarse desde el primer da del proceso de desarrollo y a lo largo de todas las etapas del mismo. En cada una de estas etapas, se pueden realizar diversas actividades que en su conjunto ayudarn a aumentar la seguridad de la aplicacin de software que se est desarrollando. Es importante que en cada organizacin, el sector de seguridad de la informacin sea invitado a participar a lo largo de todo el proceso de desarrollo como supervisor de las tareas y verificaciones de seguridad. La integracin de seguridad a lo largo del SDLC ayuda a reducir las fallas de seguridad como as tambin los costos de la aplicacin, tanto tangibles (tiempo/dinero) como intangibles (imagen de la organizacin). Por lo tanto la complejidad de un programa de computacin o software es una medida de la dificultad para llevar a cabo esa computacin y est muy relacionada con su confiabilidad. Por otra parte, se dice que un software es confiable si realiza lo que el usuario desea, cuando as lo requiera. Se podr aumentar la Confiabilidad de un Software haciendo hincapi en las dos primeras etapas de su desarrollo, el traslado de los requerimientos del usuario y en el diseo lgico. En el desarrollo de software el ingeniero en sistemas debe de tener en cuenta un punto fundamental y este es la seguridad ya que juega un papel fundamental del sistema, esto conlleva a que el sistema sea fiable en la seguridad. Tambin en los sistemas de seguridad crticos es esencial que el funcionamiento del sistema sea siempre seguro. El sistema nunca debera provocar daos en las personas o en el entorno del sistema incluso si ste falla. En el control mediante hardware de los sistemas de seguridad crticos es ms sencillo de implementar y analizar que el control mediante software. Es importante tener en cuenta los aspectos esenciales de la seguridad al desarrollar un sistema, y tambin ver la manera ms viable para procurar la confiabilidad del sistema.
Pgina 40
Ingeniera de software, sptima edicin, Iam Sommerville, Pearson Educacin, S.A., Madrid, 2005. ANNIMO, Software de seguridad Obtenido en: http://www.softwareseguridad.com/seguridadeneldesarrollodesoftware.html Fecha: MAYO 2013
PABLO MILANO, CONSULTOR CYBSEC, Seguridad en el ciclo de vida Del desarrollo de software Obtenido en: http://www.prensariotila.com/pdf/TutorialCybsec_0710.pdf Fecha: MAYO DE 2013
CASANOVA VALENCIA, SALVADOR ANTELMO, Apuntes de ingeniera de software Obtenido en: http://www.fcca.umich.mx/descargas/apuntes/Academia%20de%20Informatica/Ing enier%C3%ADa%20del%20Software%20%20S.C.V/Ingenier%C3%ADa%20de%2 0Software.pdf Fecha: MAYO DE 2013
PONS MARTORELL, MANUEL, Criptologa Obtenido en: http://www.tierradelazaro.com/public/libros/cripto.pdf Fecha: MAYO DE 2013
MAA ANTONIO, RAY DIEGO, SNCHEZ FRANCISCO, Integrando la Ingeniera de seguridad en un proceso de ingeniera software.
M.T.I. MONTSERRAT MASDEFIOL SUREZ. Pgina 41
Pgina 42