Vous êtes sur la page 1sur 10

Subsecretara de Educacin Superior

Direccin General de Educacin Superior


Tecnolgica

INSTITUTO TECNOLOGICO DE SAN JUAN DEL RIO QRO

INGENIERIA DE SOFTWARE

4 UNIDAD

SEGRIDAD DE SOFTWARE

HERNANDEZ HERNANDEZ LAURA


GOMEZ ALOR CARLOS EDUARDO
GARCIA YAEZ TOMAS
FLORES MEJIA DULCE GUADALUPE
MARTINEZ ROMERO DANIEL

INGENIERIA SISTEMAS COMPUTACIONALES

PROFESOR(A):
LETICIA TREJO GARCIA

Seguridad de Software
Actividad enfocada en la identificacin y evolucin de los peligros potenciales
que puedan afectar al software y al sistema en e que se ejecuta.
La seguridad del software es una actividad de aseguramiento de la calidad del
software que se enfoca en la identificacin y evaluacin de los peligros
potenciales que pueden afectar negativamente al software y provocar una falla
de todo el sistema .
Si los peligros se pueden identificar temprano en el proceso de software, las
caractersticas de diseo de software se pueden especificar de modo que
eliminaran o controlaran los peligros potenciales.
La seguridad en proyectos software ha sido un factor clave desde el inicio de la
ingeniera del software.
Se trata de un aspecto del proyecto que tiene que tenerse en cuenta y
planificarse desde la fase de diseo, y que afectar a lo largo de todo el ciclo
de vida del proyecto.

Seguridad en el ciclo de vida del software

Seguridad en el anlisis de requerimientos


Durante el anlisis de requerimientos, se pueden identificar diversas
caractersticas que derivarn en los requerimientos de seguridad del software.
Por ejemplo:
Arquitectura de la aplicacin
Plataforma donde correr la aplicacin
Tipos de datos que se almacenan o transfieren
Requerimiento de compliance con normativas y marcos regulatorios
Tipos de registro que el sistema debe generar
Perfiles de usuario necesarios para la aplicacin
Tipos de acceso a los datos por parte de cada perfil
Acciones sobre el sistema que puede hacer cada perfil
Modos de autenticacin

Seguridad en el diseo
Muchas de las vulnerabilidades encontradas en aplicaciones tuvieron su causa
en errores de diseo.
Reduccin de Superficie de ataque
Criterio del menor privilegio
Fallar de manera segura
Criterio de defensa en profundidad
Diseo seguro de mensajes de error
Diseo seguro de autenticacin
Separacin de privilegios
Interaccin amigable con Firewalls e IDS's.
Administracin segura informacin Sensible
Diseo de Auditora y Logging
Anlisis de riesgo

Seguridad en la codificacin
La falta de controles adecuados en la codificacin, muchas veces deriva en
vulnerabilidades que pueden comprometer a la aplicacin o a los datos de la
misma
Los tipos de vulnerabilidades ms habituales son:
- Authentication Bypass

- Stack buffer overflows (XSS)

- Information Disclosure

- Heap buffer overflows

- Escalamiento de privilegios

- SQL Injections

- Manejo inseguro de sesiones

- Cross Site Scripting

- Denegacin de servicio

- Directory Traversal

Prcticas para una codificacin segura


Validar siempre los datos de entrada antes de procesarlos
Nunca confiar en que los datos recibidos sean correctos.
Realizar validacin de datos en todas las capas
Controlar tamao y tipo de datos
Eliminar o escapear caracteres especiales
Transformar los datos de entrada a un encoding establecido
Evitar generar cdigo con valores ingresados por el usuario
No mezclar datos con cdigo
Capturar errores de capas inferiores y no mostrarlos al usuario

Seguridad en la implementacin
Si no se implementa la aplicacin de forma segura, se pueden echar por tierra
los esfuerzos de las etapas anteriores.
Hardening de software de base
- Servicios innecesarios
- Usuarios y contraseas default
- Configuracin de intrpretes
Proceso de implementacin
- Separacin de ambientes
Administracin de implementacin y mantenimiento
- Releases y Patches
- Firma de cdigo

Concepto de riesgos
Las vulnerabilidades son la piedra angular de la seguridad, puesto que
suponen el origen del que derivan numerosos fallos de seguridad. Una
vulnerabilidad en un programa informtico o software es simplemente un error,

un problema en su cdigo o en su configuracin. Es muy probable por no


decir que se produce siempre que los programas contengan errores, puesto
que han sido creados por seres humanos. Esto es especialmente frecuente en
el caso de las aplicaciones muy complejas (como por ejemplo, un sistema
operativo), que tienden a contener errores de manera exponencial. La
peculiaridad que convierte un simple fallo en una vulnerabilidad es la
posibilidad de que el "abuso inteligente" de este defecto pudiera llevar a un
riesgo de seguridad que compromete todo el sistema sobre el que se ejecuta
esa aplicacin.
Qu es una vulnerabilidad
Una vulnerabilidad es un fallo en un programa o sistema informtico. Pero no
cualquiera, sino un fallo de seguridad. Es necesaria esta distincin puesto que
no todos los errores de programacin derivan en fallos de seguridad. Un error
en un programa puede llevar a que no funcione correctamente o que su
comportamiento no sea el esperado, pero no todos estos tipos de problemas
pueden considerarse fallos de seguridad. Segn la capacidad de aprovecharse
de este defecto, la vulnerabilidad ser ms o menos grave.
Una vulnerabilidad se define, bsicamente, por cinco factores
1. Producto
Para definir una vulnerabilidad, lo primero que es necesario conocer es a qu
productos afecta. Dentro de un mismo programa, incluso, puede afectar a una
sola versin, a toda una rama o incluso a programas totalmente diferentes que
compartan un mismo fallo. Este ltimo supuesto ocurre cuando la aplicacin
afectada por la vulnerabilidad reside en sistemas operativos diferentes
2. Dnde
Dentro de un mismo programa, una vulnerabilidad se localiza habitualmente en
un componente o mdulo. Los programas suelen componerse de varios
mdulos que interactan entre s. Una vulnerabilidad puede encontrarse en un
mdulo concreto del programa o bien por utilizar una configuracin concreta
3. Causa y consecuencia
Cul es el origen del problema? En qu fall su programador? Esto se
refiere al fallo tcnico concreto que cometi el programador a la hora de crear
la aplicacin que es el origen de la vulnerabilidad.
4. Impacto
El impacto es lo que puede conseguir un atacante que aprovechase la
vulnerabilidad.
El impacto define en gran medida la gravedad de la vulnerabilidad. La
ejecucin de cdigo arbitrario supone la mayor gravedad puesto que significa
que el atacante podr ejecutar cualquier programa en el sistema de su vctima.

5. Vector
A la forma que tiene el atacante de aprovechar la vulnerabilidad se le conoce
como vector de ataque. Un vector de ataque comn es el envo de
informacin especialmente manipulada a un puerto concreto del sistema. Otra
forma de conseguir aprovechar una vulnerabilidad es creando un fichero
manipulado que ser procesado por ese programa.
El anlisis de riesgos consistir, de forma muy resumida, en las
siguientes actividades:
Recopilacin de los recursos que deben ser protegidos.
Clasificacin de los actores del proyecto.
Recopilacin de requisitos legales y de negocio.
Construir una tabla en la que, para cada riesgo, se estime el costo que tiene
por incidente, y a partir de una estimacin nos permitiera decidir sobre la
estrategia que hay que implantar.
Recomendaciones para mitigar los riesgos asociados a cualquier
proyecto
Asignar el mnimo privilegio posible a cada actor en el sistema.
Simplicidad. La seguridad por ofuscacin no da buenos resultados.
Diseo abierto. Siempre tendremos alternativas para mejorar o asegurar ms
el sistema.
Seguridad por defecto. El sistema debe ser el mximo de seguro por defecto,
si tiene que ser posible relajar las restricciones.
Fallada segura. Si el sistema falla o puede fallar, evitar que lo haga
quedndose en una modalidad insegura.
Minimizar el uso de recursos compartidos.
Trabajar a favor de la usabilidad del proyecto redunda en un mejor uso de l y
en menores probabilidades de fallos de seguridad por un mal uso del mismo.

Puntos para establecer la confiabilidad de Software


Disponibilidad: Se refiere a la condicin de trabajo que un sistema debe de
tener.
Fiabilidad: En la ingeniera se usa generalmente para asegurar aquella
condicin de trabajo que permite al usuario realizar sus tareas para que el
sistema no llegue a corromperse.

Seguridad: Este concepto no solo describe el comportamiento del sistema,


tambin nos define la habilidad que tiene este para poder resistir los ataques
externos.
Proteccin: Se refiere a la capacidad del sistema de permitir las fallas de
manera inmediata, en caso de que el sistema llegara a fallar existir alguna
manera de proteger la informacin o las acciones que el sistema realice.
Confidencialidad: los recursos (o funcionalidades sobre ellos) son accesibles
slo para los usuarios (o procesos) autorizados.
Integridad: los recursos pueden ser modificables slo por los usuarios
autorizados.
Disponibilidad: los recursos accesibles estn disponibles.
Los errores, no as las fallas, sern siempre los mismos, no importa el
entorno en el que corran.
Se dice que un Software es confiable si realiza lo que el usuario desea,
cuando as lo requiera.
Si corregimos estos errores sin introducir nuevos, mejoramos la
Confiabilidad del Software.
Una de las tareas ms importantes del diseador de los sistemas es disear
un sistema con el propsito minimizar el xito de las intrusiones mediante el
uso de una serie de tecnologas como

- Encriptacin
- Funciones de compendio de mensajes
- Firmas digitales
- Certificados digitales
Encriptacin
Se refiere al proceso de transformar datos o texto para ser ilegible. A
continuacin se detalla el proceso de utilizacin
- La computadora emisora encripta el texto
-

Los datos encriptados se envan a travs de lneas de transmisin

La computadora receptora procesa el texto encriptado a su forma


original

Funciones de compendio de mensajes


-

Es un algoritmo que genera un nmero grande normalmente entre 128 y


256 bits que representa un compendio o resumen de los caracteres de
un mensaje.

Tiene la propiedad de que si el mensaje cambia y se vuelve a aplicar el


algoritmo el numero cambia. El mensaje se enva con el numero aadido
al final.

La funcin del compendio se aplica en el receptor y el numero resultante


se compara con el que se envi

Firmas digitales
-

Es una forma de que el emisor de un mensaje se pueda identificar con


le receptor de tal manera que el receptor pueda confiar en el mensaje
que fue enviado realmente por el emisor.

*Antivirus: Un antivirus es un programa informtico especficamente diseado


para detectar y eliminar virus. (Malwares software malicioso encargado de
daar el software del sistema y puede arrojar errores a lo largo del tiempo).
*Cortafuegos: Un cortafuegos o firewall es un software destinado a
garantizar la seguridad en sus comunicaciones va Internet al bloquear las
entradas sin autorizacin a su ordenador y restringir la salida de informacin.
*Actualice frecuentemente sus aplicaciones con los parches de
seguridad: Las vulnerabilidades que se detectan en los programas
informticos ms utilizados (navegadores de Internet, procesadores de texto,
programas de correo, etc.) suelen ser, precisamente por su gran difusin, un
blanco habitual de los creadores de virus.
*Software Legal: Asegrese que todo el software instalado en su ordenador
proviene de una fuente conocida y segura. No instale copias de software pirata.
Adems de transgredir la Ley, pueden contener virus, spyware o archivos de
sistema incompatibles con los de su ordenador, lo cual provocar inestabilidad
en su equipo.
*Administrador y usuario estndar: Normalmente los sistemas operativos
diferencian entre usuarios Administradores y usuarios estndar con permisos
limitados.
Disponga de un usuario Administrador y uno estndar (ambos con contrasea)
y utilice un usuario sin permisos de administrador para las tareas habituales de
navegacin y edicin.

*Contraseas seguras: Utilice contraseas diferentes para cada acceso


importante (cuenta del banco online, correo electrnico, redes sociales,
administrador del sistema, etc). Puede usar una misma contrasea para los
accesos menos crticos.
*Copias de Seguridad: Realice de forma peridica copias de seguridad de su
informacin ms valiosa. En caso de sufrir un ataque de un virus o una
intrusin.

Diferencia entre Seguridad y fiabilidad de Software


*La fiabilidad del software puede ser medida o estimada mediante datos
histricos o de desarrollo. La fiabilidad del software se define en trminos
estadsticos como la probabilidad de operacin libre de fallos de un programa
de computadora en un entorno determinado y durante un tiempo especfico
Los problemas de la fiabilidad del software se deben casi siempre a errores en
el diseo o en la implementacin.
Adems de una medida de la fiabilidad debemos obtener una medida de la
disponibilidad. La disponibilidad del software es la probabilidad de que un
programa funcione de acuerdo con los requisitos en un momento dado.
En el hardware, son ms probables los fallos debidos al desgaste fsico (por
ejemplo: de la temperatura, de la corrosin y los golpes) que los fallos relativos
del diseo los fallos del software, se producen por problemas de diseo o de
implementacin;
*Seguridad del software
La seguridad del software es una actividad de garanta de calidad del software
que se centra en la identificacin
y evaluacin de los riesgos potenciales que pueden producir unimpacto
negativo en el software y hacer que falle el sistema completo.
Si se pueden identificar pronto los riesgos en el proceso de ingeniera del
software podrn especificarse las caractersticas del diseo del software que
permitan eliminar o controlar los riesgos potenciales.
Parte de la seguridad del software, se puede dirigir un proceso de anlisis y
modelado. Inicialmente, se identifican los riesgos y se clasifican por su
importancia y su grado de riesgo.
La fiabilidad del software utiliza el anlisis estadstico para determinar la
probabilidad de que pueda ocurrir un fallo del software.
La seguridad del software examina los modos segn los cuales los fallos
producen condiciones que pueden llevar a accidentes.
Pruebas de errores para software.

La fiabilidad y la seguridad del sistema estn relacionados, pero son distintos


atributos de confiabilidad. Desde luego, un sistema de seguridad critico es
fiable si est de acuerdo con su especificacin y funciona sin fallos. Dicho
sistema puede incorporar caractersticas de tolerancia a defectos para que
puedan 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 podemos tener la certeza absoluta de que un
sistema software est libre de defectos y es tolerante a fallos, hay muchas
otras razones para las que un sistema software que es fiable no
necesariamente es seguro:
1.-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 se debe a errores de
especificacin ms que a errores de diseo.
2.-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.
3.-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.

Vous aimerez peut-être aussi