Beruflich Dokumente
Kultur Dokumente
Ingeniera de software
N de control: 13320875
1
Contenido
4.1 seguridad de software............................................................................................................. 3
IMPORTANCIA DE SEGURIDAD .................................................................................................. 3
USUARIOS COMUNES ................................................................................................................ 3
CREANDO SOFTWARE ............................................................................................................... 3
PROPIEDADES DE LA INFORMACIN ........................................................................................ 3
4.2 Seguridad en el ciclo de desarrollo del software .................................................................... 4
SEGURIDAD EN EL ANLISIS DE REQUERIMIENTOS .................................................................. 5
SEGURIDAD EN EL DISEO ........................................................................................................ 5
SEGURIDAD EN LA CODIFICACIN ............................................................................................ 5
TESTING / QA DE SEGURIDAD ................................................................................................... 6
IMPLEMENTACIN / PUESTA EN PRODUCCIN ....................................................................... 6
4.3 CONFIABILIDAD DEL SOFTWARE ............................................................................................. 7
PRUEBAS DE CONFIABILIDAD .................................................................................................... 8
De Componentes .................................................................................................................... 9
Pruebas de Estrs .................................................................................................................. 9
De Integracin ......................................................................................................................... 9
Pruebas de estrs de componentes .................................................................................... 9
Pruebas de Integracin ......................................................................................................... 9
Pruebas Estructurales ......................................................................................................... 10
4.4 INGENIERIA DE SOFTWARE ................................................................................................... 10
ATAQUE DE SEGURIDAD.............................................................................................................. 14
BIBLIOGRAFA .............................................................................................................................. 16
2
4.1 seguridad de software
El concepto de la seguridad en los sistemas de software es un rea de investigacin
que ha pasado a ser vital dentro de la Ingeniera de Software. Con el crecimiento de
Internet, y otras aplicaciones sobre redes, como el comercio electrnico, correo
electrnico, etc., la posibilidad de ataques se ha incrementado notablemente, como
tambin lo han hecho las consecuencias negativas de estos ataques. En la actualidad
prcticamente todo sistema debe incorporar cuestiones de seguridad para defenderse
de ataques maliciosos. El desarrollador ya no slo debe concentrarse nicamente en
los usuarios y sus requerimientos, sino tambin en los posibles atacantes.
IMPORTANCIA DE SEGURIDAD
Por el dinero, el dueo de los sistemas tiene dinero invertido en algo que le trae
un beneficio o ventaja.
Por calidad, hay que acostumbrarse a hacer las cosas bien, aunque cuentes
ms esfuerzo.
La seguridad surge tecnolgicamente, la seguridad es gratis. Los sistemas
operativos modernos contienen muchas caractersticas de seguridad.
Las mejores herramientas de seguridad son open source.
USUARIOS COMUNES
Los usuarios se acostumbran a usar la tecnologa sin saber cmo funciona o
de los riesgos que pueden correr.
Son las principales vctimas.
Tambin son el punto de entrada de muchos problemas crnicos.
El eslabn ms dbil en la cadena de seguridad.
2 enfoques para controlarlos.
Principio del menor privilegio posible.
Reducir la capacidad de accin del usuario sobre los sistemas.
Objetivo: lograr el menos dao posible en caso de incidentes.
CREANDO SOFTWARE
El software moderno es muy complejo y tiene una alta probabilidad de contener
vulnerabilidad de seguridad.
Un mal proceso de desarrollo genera software de mala calidad. Prefieren a que
salga mal a que salga tarde.
Usualmente no se ensea a incorporar requisitos ni protocolos de seguridad.
PROPIEDADES DE LA INFORMACIN
Confidencialidad: asegurarse que la informacin en un sistema de cmputo t la
transmitida por un medio de comunicacin, puede ser leda solo por las
personas autorizadas.
Autenticacin: asegurarse que el origen de un mensaje o documento
electrnico est correctamente identificado, con la seguridad que la entidad
emisora o receptora no est suplantada.
Integridad: asegurarse que solo el personal autorizado sea capaz de modificar
la informacin o recursos de cmputo.
No repudiacin: asegurarse que ni el emisor o receptor de un mensaje o accin
sea capaz de negar lo hecho.
3
Disponibilidad: requiere que los recursos de un sistema de cmputo estn
disponibles en el momento que se necesiten.
Anlisis de requerimientos.
Diseo funcional y detallado.
Codificacin.
Testing/QA.
Implementacin puesta en produccin.
4
SEGURIDAD EN EL ANLISIS DE REQUERIMIENTOS
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).
SEGURIDAD EN EL DISEO
Antes de comenzar a escribir lneas de cdigo, hay numerosos aspectos de seguridad
que deben ser tomados en cuenta durante el diseo de 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
En la etapa de codificacin, una de las reglas 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.
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 vulnerabilidades se pueden dividir
en dos grandes grupos: vulnerabilidades clsicas y vulnerabilidades funcionales. Las
primeras son bien conocidas y categorizadas. Ejemplo de estas vulnerabilidades son las
presentes en el OWASP Top 10 (Vulnerabilidades de inyeccin, Cross Site Scripting,
errores en manejo de sesiones, etc.), como as tambin otras vulnerabilidades no
ligadas directamente con las aplicaciones WEB, como desbordamiento de buffer,
denegacin de servicio, etc. Los Frameworks de desarrollo de aplicaciones son una
5
buena ayuda en este punto, ya que ofician de intermediario entre el programador y el
cdigo, y permiten prevenir la mayora de las vulnerabilidades conocidas. Ejemplos de
estos frameworks son Struts, Ruby on Rails y Zope.
TESTING / QA DE SEGURIDAD
6
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. La integridad de
seguridad a lo largo del SDLC ayuda a reducir las fallas de seguridad como as tambin
los costos de la aplicacin, tanto tangibles como intangibles. 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.
A veces los sistemas informticos caen y no consiguen realizar los servicios que
se les ha requerido. Los programas que se ejecutan sobre dichos sistemas pueden no
funcionar como se esperaba y, ocasionalmente, pueden corromper los datos que son
gestionados por el sistema. Se ha aprendido a vivir con este tipo de fallos, y pocas
personas confan plenamente en las computadoras personales que normalmente usan.
7
La eliminacin de fallos depende del tiempo y del perfil operativo. Los modelos
de confiabilidad del software son generalmente procesos aleatorios. Estos modelos se
pueden dividir en dos grandes categoras:
Modelos que predicen la confiabilidad como una funcin cronolgica del tiempo.
Modelos que predicen la confiabilidad como una funcin del tiempo de
procesamiento transcurrido.
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.
De Componentes.
Pruebas de Estrs.
De Integracin.
Pruebas Reales.
Pruebas de Confiabilidad.
Pruebas de Destruccin Aleatoria.
8
Pruebas de Integracin.
Pruebas Estructurales.
De Componentes
La idea es forzar cada componente de forma aislada ms de lo que la aplicacin podra
experimentar en condiciones normales. Por ejemplo: usar un bucle de 1 a 10.000.000 lo
ms rpidamente posible y observar si hay problemas evidentes.
Pruebas de Estrs
Consisten en la simulacin de grandes cargas de trabajo para observar de qu forma
se comporta la aplicacin ante situaciones de uso intenso.
De Integracin
Estn relacionadas con las interacciones con otras estructuras de datos, procesos y
servicios tanto de los componentes internos y externos de la 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 Integracin
Identificar errores introducidos por la combinacin de programas probados
unitariamente. Verificar que las especificaciones de diseo sean alcanzadas.
9
Todo de una vez: provee una solucin til para realizar la integracin de
problemas simples.
Down-Top: Se empieza con los mdulos de nivel inferior, y se verifica que los
mdulos de nivel inferior llaman a los de nivel superior de manera correcta, con
los parmetros correctos.
Top-Down: se empieza con los mdulos de nivel superior, y se verifica que los
mdulos de nivel superior llaman a los de nivel inferior de manera correcta, con
los parmetros correctos.
Pruebas Estructurales
Son tambin conocidas como "pruebas de caja blanca" o "pruebas basadas en cdigo",
donde se enfocan en probar cada una de las estructuras de cdigo, para que su
comportamiento sea el esperado.
Son las pruebas donde se conoce la estructura interna del componente a probar, y se
efecta una prueba sobre dicha estructura. En el caso de una aplicacin web tambin
se revisa la estructura interna de los links y otros elementos.
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.
10
software debido a la necesidad de gestionar un nmero muy grande de sensores y
actuadores con leyes de control complejas.
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:
11
requerimientos son la causa clave de los errores de software relacionados con
la seguridad que persistieron hasta la integracin y la prueba del sistema.
12
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.
13
Algunos ejemplos de sistema en los que la seguridad es un aspecto fundamental
son los siguientes:
La contabilidad de un banco.
Los cajeros automticos.
Los mecanismos de proteccin fsica, como alarmas y sensores en general,
destinados a detectar intrusos no deseados.
Los servicios en lnea, va internet.
Obviamente en aplicaciones militares.
La privacidad es un tema de importancia en el caso de informacin de salud, o
mala informacin obtenida a travs de los censos.
La necesidad de manejar operaciones seguras en el internet, espacio en el cual
los ataque del tipo negacin de servicios son comunes.
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.
14
Dentro de los ataques voluntarios, los problemas creados por stos se
pueden clasificar en tres familias:
15
BIBLIOGRAFA
Ingeniera de software, sptima edicin, Iam Sommerville, Pearson Educacin, S.A.,
Madrid, 2005.
16