JIQUILPAN, MICH. 25 DE MAYO DEL 2013 Subsecretara de Educacin Superior Direccin General de Educacin Superior Tecnolgica Instituto Tecnolgico de Jiquilpan
INDICE:
REPASO. SEGURIDAD EN EL DISEO BUENAS PRCTICAS: SEGURIDAD EN EL DISEO. ANLISIS DE RIESGOS. MTODO STRIDE. MTODO DREAD. SEGURIDAD EN LA CODIFICACIN. BUENAS PRCTICAS: CODIFICACIN SEGURA.
REPASO: Seguridad en el ciclo de vida del software. Entre ms avanza el tiempo y el software pasa por distintas etapas de desarrollo de software, es ms costoso corregir errores. A pesar de que corregir errores en etapas tempranas no es costoso es sumamente importante no cometerlos, para que posteriormente no se vayan arrastrando hasta el final.
Seguridad en el anlisis de requerimientos del software. Se deben identificar aquellos requerimientos funcionales que tendrn impacto en los aspectos de seguridad de la aplicacin. SEGURIDAD EN EL DISEO DE SOFTWARE: Evitacin de fallas en el desarrollo. Menos fallas en la etapa de diseo, significa menos fallas al momento codificacin y ejecucin. Es decir, se debe de cuidar mucho no cometer errores desde etapas tempranas para no provocar una especie de efecto domin en etapas futuras. BUENAS PRCTICAS: SEGURIDAD EN EL DISEO DE SOFTWARE: Tolerancia a fallas en el desarrollo. Diseo de un sistema que detecte fallas al momento de ejecucin y las gestione de modo que no corrompan el sistema. Redundancia en el diseo. Es importante incluir en el diseo la capacidad de un repuesto disponible si falla parte del sistema. Es decir disear un componente que redunde las mismas caractersticas del otro. Diversidad en el diseo. Se emplea al disear componentes del sistema de distintos tipos, esto aumenta las posibilidades de que no existan fallas iguales. Se debe combinar con la redundancia para lograr un funcionamiento de tolerancia a fallos eficaz. Procesos operacionales confiables. Un proceso confiable tiene que disearse para evitar errores humanos, y al cometerse stos, el software debe detectar el error y permitir su correccin. Reduccin de superficie de ataque. La posibilidad de un ataque es directamente proporcional a la superficie de ataque total de la aplicacin. Se deben de cubrir o camuflajear muy bien los puntos dbiles del software que se est elaborando o sus puertas traseras con el fin de evitar que el enemigo pueda atacar por los lugares ms comnmente desprotegidos.
Criterio del menor privilegio El criterio del menor privilegio se cita a continuacin tal cual:
Cada programa y cada usuario del sistema debe operar utilizando el menor conjunto de privilegios necesario para completar el trabajo.
La proteccin de la informacin en sistemas de cmputo 1974 Este criterio hace referencia a que los usuarios nicamente deben de contar con los privilegios necesarios para realizar sus tareas, ni ms ni menos, con eso existir un mayor control dentro del sistema. ANLISIS DE RIESGOS. Permite identificar las amenazas de una aplicacin y cuantificar los riesgos a los que la misma estar expuesta. Generalmente se hace en una escala tomando las ms importantes como riesgos con amenazas de alto nivel y tratando de contrarrestarlas, en el caso de caer en un fallo, tratar de que no sea tan devastador para el sistema y recuperarse de l. Mtodo STRIDE. STRIDE es un acrnimo que representa el espectro de amenazas de seguridad que pueden afectar a la aplicacin. Con ste mtodo se sugiere que el ingeniero de software piense no como alguien que quiere contrarrestar ataques, si no como el mismo atacante, con el fin de encontrar sus puntos dbiles en el sistema. A continuacin se describe a qu tipo de amenaza se refiere cada letra del acrnimo. Suplantacin de identidad (Spoofing Identity) Como su nombre lo dice, se trata de robar datos confidenciales de credenciales de autenticacin con el fin de entrar al sistema como un usuario privilegiado suplantando su identidad. Manipular datos (Tampering with Data) Se refiere a los hoyos de seguridad dentro del software que permite la entrada a terceras personas a las bases de datos y puedan manipular la informacin con un mal fin.
Repudio (Repudiation) Este tipo de amenaza hace referencia al seguimiento de actividades de un usuario dentro del sistema, con el fin de saber que modificaciones y ejecuciones ha realizado dentro del software. Divulgacin de informacin (Information Disclosure) Cuando un sistema es atacado y se extrae informacin por ejemplo de la web y posteriormente se publica sin licencias existe una divulgacin de informacin. Denegacinde servicio (Denial of Service) Cuando existe un bloqueo por fallo en el sistema y ste no puede recuperarse deniega el servicio a los usuarios. Elevacin de privilegios(Elevation of privilege) Con esta amenaza se elevan los privilegios de usuarios comunes a super usuarios que pueden manipular el sistema a ms alto nivel, generando desastres dentro de la informacin que se maneja. Mtodo DREAD. Calcula el riesgo asociado a cada amenaza, ayudando a determinar qu respuesta dar a cada amenaza, y priorizarlas segn el riesgo que representen. Dao potencial (Damage Potencial) En este tipo de daos se clasifica por ejemplo la prdida de mltiple informacin valiosa en las bases de datos. Reproductividad(Reproducability). Cuando existe un fallo dentro del sistema y ste se va reproduciendo, causando un efecto domin que termina derivando muchos ms fallos. Explotabilidad (Exploitability) Cuando hay amenazas dentro del sistema existen probabilidades de que sean altamente explotables hasta ocasionar fallos terribles dentro del sistema. Usuarios Afectados(Affected Users). Puede que los fallos causen afecciones a ciertos usuarios que interactan con el software. Descubrible(Discoverability) Que tan fcil es descubrir el tipo de fallo que ocurrir muy probablemente en el futuro y que tan factible es detenerlo. SEGURIDAD EN LA CODIFICACION La falta de controles adecuados en la codificacin, muchas veces deriva vulnerabilidades dentro del sistema, especialmente en la etapa de testing y al momento de la implementacin, donde es muy probable que se reflejen todos los fallos de codificacin. BUENAS PRCTICAS: CODIFICACIN SEGURA. 8 lineamientos bsicos para una codificacin segura. Controlar visibilidad de informacin Validacin de entradas Manejar excepciones Minimizar uso de cdigos proclives a error Ofrecer capacidades de reinicio Comprobar los lmites Incluir interrupciones a componentes externos Nombrar constantes de valores del mundo real CONCLUSIN. La confiabilidad y seguridad de un software puede lograrse ante la deteccin de amenazas en la etapa del diseo, as como la deteccin de fallas y eliminacin de stos antes de la implementacin en la codificacin. Cosas que NO debes olvidar: La redundancia y diversidad son esenciales. El anlisis de riesgos es fundamental. Las arquitecturas ms confiables son aquellas diseadas con tolerancia a fallos. La programacin confiable verifica validez de entradas.
REFERENCIAS BIBLIOGRFICAS: Para obtener mayor informacin consultar las siguientes fuentes. LIBRO: [1] Sommerville, I. (2011). INGENIERIA DE SOFTWARE (Novena ed., Vol.1, pp. 261-386). Mxico, DF: Pearson Education. PGINAS WEB: [2] Maulini, M. (2010, 11). Desarrollo y Seguridad de Software. Tecnologas Web. Recuperado 05, 2014, de: http://tecnologiasweb.blogspot.mx/2010/11/medidas- seguridad-en-el-desarrollo.html [3] Milano, P. (2008, 09). Seguridad en el ciclo de vida del desarrollo de software. Cybsec Systems. Recuperado 05, 2014, de: http://www.cybsec.com.ar/upload/cybsec_Tendencias2007_Seguridad_SDLC.pdf [4] Feck, C. (2012, 11). Modelado de Amenazas, una herramienta para el tratamiento de la seguridad en el diseo de software. .UTN. Recuperado 05, 2014, de: http://www.frsf.utn.edu.ar/cneisi2010/archivos/22/Modelado_de_Amenazas_en_el_dise %C3%B1o_de_sistemas.pdf