Sie sind auf Seite 1von 10

INSTITUTO TECNOLGICO SUPERIOR DE TIERRA

BLANCA

INGENIERA EN SISTEMAS COMPUTACIONALES


INGENIERA DE SOFTWARE


ING. EVA MORA COLORADO


JOS ERNESTO CASTRO CHVEZ



TIERRA BLANCA, VERACRUZ; 31 DE MAYO DE 2014


4. SEGURIDAD EN INGENIERA DE SOFTWARE
La seguridad de software aplica los principios de la seguridad de informacin
al desarrollo de software. Information security (La seguridad de informacin) se
refiere a la seguridad de informacin comnmente como la proteccin de sistemas
de informacin contra el acceso desautorizado o la modificacin de informacin,
si est en una fase de almacenamiento, procesamiento o trnsito.
Tambin la protege contra la negacin de servicios a usuarios desautorizados y
la provisin de servicio a usuarios desautorizados, incluyendo las medidas
necesarias para detectar, documentar, y contrarear tales amenazas.
Muchas preguntas con respecto a la seguridad, son relacionadas al ciclo vital de
software. En particular, la seguridad del cdigo y el proceso de software; deben de
ser considerados durante la fase del diseo y desarrollo. Adems, la seguridad
debe de ser preservada durante la operacin y el mantenimiento para asegurar
la integridad de una parte (pedazo) de software.
Una gran cantidad de seguridad usada en los Sistemas de Redes de hoy,
nos pueden engaar en la creencia que nuestros trabajos como diseadores
de sistema de seguridad ya han sido realizados. Sin embargo, las cadenas y
computadoras son increblemente inseguras. La falta de seguridad se origina en
dos problemas fundamentales: Los sistemas que son tericamente seguros
pueden ser inseguros en la prctica, Adems los sistemas son cada vez ms
complejos. La complejidad proporciona ms oportunidades para los ataques. Es
mucho ms fcil probar que un sistema es inseguro que demostrar que uno es
seguro probar la inseguridad, simplemente una toma ventaja de ciertas
vulnerabilidades del sistema.
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.
Esto ha motivado cambios importantes en el proceso de diseo y desarrollo de
software para incorporar a la seguridad dentro de los requerimientos crticos del
sistema.
Estos cambios son los primeros pasos en la concientizacin de los ingenieros de
software acerca de la importancia de obtener un software seguro. Como todo gran
cambio, no se logra de un da para otro, sino que es un proceso gradual que requiere
tiempo y maduracin. Todava la Ingeniera de Software no ha dado una respuesta
eficaz, coherente y aplicable que satisfaga plenamente a la comunidad informtica,
sino que las aproximaciones actuales estn plagadas de fallas y debilidades fruto
de que todava es un proceso que se encuentra en su infancia.
Siempre que utilicemos un sistema informtico, sin importar cul sea la razn, es
importante que tengamos como prioridad la instalacin de un software de seguridad,
teniendo en cuenta la cantidad de riesgos que corremos con un sistema informtico
sin proteccin.
Justamente por la importancia acerca de lo que es un software de seguridad para
cualquier usuario, la mayora de los sistemas operativos con los que podemos
trabajar suelen traer incorporado en ellos un software de seguridad bsico, pero es
importante que sepamos ante todo qu es un software de seguridad y la diferencia
entre ste software y uno que es especialmente desarrollado para prevenir
problemas en el funcionamiento del sistema, es que el mismo, simplemente nos
advierte cuando estamos frente a algn riesgo.

Tipos de software de seguridad
Sin duda, el tipo de software de seguridad ms conocido son los programas
antivirus, que se encargan de detectar y eliminar virus informticos. Un buen
programa antivirus dispone de un archivo de firmas de virus que se actualiza
automticamente y detecta virus nuevos. Este tipo de actualizacin se realiza
peridicamente, varias veces al da.
El software de seguridad suele venderse en las denominadas suites. Son paquetes
compuestos de:
Programa antivirus
Cortafuegos
Filtro antispam
Software para filtrar contenidos
Software contra publicidad no deseada
Control de sitios web
Actualmente, la seguridad es un concepto que todo sistema debe incorporar. La
Ingeniera del Software todava no es capaz de brindar un mecanismo para
implementar adecuadamente la seguridad: los lenguajes tienen primitivas
inseguras, el cdigo relativo a la seguridad es siempre un cdigo confuso y complejo
debido a tcnicas de abstraccin insuficientes, etc.
4.2 SEGURIDAD EN EL CICLO DE DESARROLLO DEL SOFTWARE
La mayor parte de las organizaciones desarrolla o contrata el desarrollo de
aplicaciones propias para su gestin de negocio. Como todo software, estas
aplicaciones pueden contener fallas de seguridad y a diferencia del software
comercial, no se dispone de actualizaciones o parches liberados en forma peridica
por el fabricante. El tratamiento de las vulnerabilidades en aplicaciones propias
corre por parte de la organizacin que las desarrolla.
Lamentablemente es una prctica habitual en muchas organizaciones la puesta en
produccin de sistemas sin la participacin del sector de Seguridad de la
Informacin.
Muchas otras veces, el sector de Seguridad se entera demasiado tarde, y no tiene
suficiente margen de accin para el anlisis de seguridad de la aplicacin
desarrollada.
Por lo general, en el mejor de los casos, se coordina un testeo de seguridad una
vez que la aplicacin ya est desarrollada. Aqu muchas veces se encuentran
errores que requieren el rediseo de parte de la aplicacin, lo cual implica un costo
adicional en tiempo y esfuerzo.
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 compliance con normativas locales o internacionales (ej: PCI,
SOX, A 4609, etc.), tipo de informacin que se transmitir o procesar (ej:
Informacin pblica o confidencial, datos personales, datos financieros,
contraseas, datos de pago electrnico, etc.) y requerimientos de registros de
auditora (ej: 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 tenidos en cuenta durante el diseo de la aplicacin.
Algunos de ellos son: diseo de autorizacin
(ej: Defnir los roles, permisos y privilegios de la aplicacin), diseo de autenticacin
(aqu se debe 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, certifcados, 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 (ej: 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 (aqu
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
encriptacin, 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, le toca a los desarrolladores el turno de 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 podramos dividirlas en dos grandes grupos a saber:
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 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.
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.
4.3 CONFIABILIDAD DEL SOFTWARE
La confiabilidad de software significa que un programa particular debe de
seguir funcionando en la presencia de errores. Los errores pueden ser
relacionados al diseo, a la implementacin, a la programacin, o el uso de
errores.
As como los sistemas llegan a ser cada vez ms complejos, aumenta la
probabilidad de errores.
Como mencionamos, es increblemente difcil demonstrar que un sistema sea
seguro. Ross Anderson dice que la seguridad de computacin es como
programar la computadora del Satn. Software seguro debe de funcionar abajo
de un ataque.
Aunque casi todos los softwares tengan errores, la mayora de los errores nunca
sern revelados debajo de circunstancias normales. Un atacante busca esta
debilidad para atacar un sistema.
Las organizaciones que desarrollan productos basados en software requieren de
prcticas efectivas que permitan mejorar la calidad del producto. La Ingeniera de la
Confiabilidad de Software es una prctica cuantitativa que puede ser implementada
en organizaciones de cualquier tamao bajo distintos modelos de desarrollo.
Las organizaciones desarrolladoras de productos basados en software destinan
grandes cantidades de recursos para mejorar la calidad de sus productos. Una parte
de dichos recursos se utiliza para la adopcin de mejores prcticas. Sin embargo,
la dificultad de la adopcin de dichas prcticas no slo reside en el costo y el tiempo
requerido para institucionalizarlas, sino en cmo medir su impacto en la calidad del
software, as como demostrar el retorno de dicha inversin.
La calidad, las fallas y la confiabilidad de Software
La calidad es un atributo percibido por los usuarios o clientes de cualquier producto
o servicio. En el caso de productos basados en software, la percepcin de la calidad
est en funcin de las fallas que el cliente percibe del mismo durante su operacin.
La confiabilidad es un atributo que mide el grado en que un producto opera sin fallas
bajo condiciones establecidas por un periodo de tiempo determinado. La
confiabilidad es un atributo cuantitativo que ha sido ampliamente analizado,
estudiado y usado en otras industrias para caracterizar la calidad de los productos
o servicios.
En su concepcin ms general, la confiabilidad es un atributo que mide el grado en
que un producto opera sin fallas bajo condiciones establecidas por un periodo de
tiempo determinado. Una falla es la manifestacin percibida por el cliente de que
algo no funciona correctamente e impacta su percepcin de la calidad. Un defecto
es el problema en el producto de software que genera una falla.
Se dice que un Software es confiable si realiza lo que el usuario desea,
cuando as lo requiera
No es confiable si as no lo hiciera. A nuestros fines un Software no es
Confiable cuando falla.
Las fallas se deben a errores en el Software. Si corregimos estos errores sin
introducir nuevos, mejoramos la Confiabilidad del Software.
Histricamente, una forma de aumentar la Confiabilidad de un Software era correrlo
y probarlo extensivamente antes de liberarlo. No es efectivo probar la Confiabilidad
en el producto sino hacerla, es decir fabricarla en el mismo. La Confiabilidad deber
ser diseada en el producto.
4.4 INGENIERA DE SEGURIDAD
La Ingeniera de la seguridad es una rama de la ingeniera, que usa todo tipo de
ciencias para desarrollar los procesos y diseos en cuanto a las caractersticas de
seguridad, controles y sistemas de seguridad. La principal motivacin de esta
ingeniera ha de ser el dar soporte de tal manera que impidan comportamientos
malintencionados.
El campo de esta ingeniera puede ser muy amplio, podra desarrollarse en muchas
tcnicas:
Equipos: Como el diseo de cerraduras, cmaras, sensores,...
Procesos: polticas de control, procedimientos de acceso,...
Informtico: control de passwords, criptografa,...
Tradicionalmente el tema de la seguridad en sistemas computarizados se ha
asociado a la criptografa y sus tcnicas. La inmensa complejidad que caracteriza a
los sistemas modernos hace que esta aproximacin sea insuficiente.
Hoy en da la seguridad est asociada a la interaccin de una multiplicidad de
sistemas. La seguridad de un sistema en particular est directamente relacionada a
la seguridad de la ms dbil de sus partes.
Un sistema puede tener mecanismos criptogrficos que sean considerados
completamente seguros pero puede adolecer de debilidades que hagan que sea
innecesario atacar al sistema criptogrfico.


Ejemplos de esto son:
Sistemas que fallan debido a problemas en el cdigo, como en la mayora de los
ataques conocidos como de buffer overflow, en los cuales el no considerar
aspectos de excepcin asociados a los sistemas pueden representar que un
atacante suficientemente hbil pueda asumir funciones del administrador. Si en un
determinado sistema alguien asume las funciones del administrador puede tener
muy fcil acceso a claves y sistemas criptogrficos haciendo intil la fortaleza del
sistema criptogrfico que lo protege.
Algunos ataques aprovechan fallas de diseo en los sistemas. Si una determinada
aplicacin ejecuta sin evaluar un determinado comando, los atacantes del sistema
pueden conseguir informacin vital sin necesidad de romper las claves
criptogrficas que lo protegen.
La existencia de sistemas de comunicacin mvil, basados en transmisin
inalmbrica facilita actividades de fisgoneo en la seal.
Algunas veces lo que se conoce como ataques de ingeniera social pueden resultar
muy efectivos a la hora de atacar sistema supuestamente seguros.
La poca comprensin que algunos implementadores de sistemas tienen sobre los
mecanismos de seguridad implcitos tambin ocasiona que ciertos sistemas sean
ms vulnerables. Un ejemplo clsico es la forma en que se implementan algunos
sistemas de contabilidad.
El sistema de doble registro, ancestralmente usado para proteger sistemas de
seguridad se ve violentado por sistemas que obligan al cuadre entre cuentas lo
cual facilita el ataque a sistemas de esta naturaleza.

Das könnte Ihnen auch gefallen