You are on page 1of 14

Seguridad

De Software

Introduccin

Habitualmente los usuarios finales no tienen en consideracin la seguridad cuando


hacen uso de un sistema, ya que, frecuentemente se ignoran los aspectos
relacionados con la seguridad. De igual forma, estos aspectos a veces pueden
considerarse una molestia, ya que la seguridad suele ir en el platillo opuesto de la
comodidad y facilidad de uso en la balanza del diseo de un sistema. Es por esto
que los usuarios a veces puedan tener una imagen negativa de la seguridad, por
considerarlo algo molesto y que interrumpe su capacidad de realizacin de un
trabajo determinado. En un entorno seguro, un usuario se encuentra con tareas
que le pueden resultar incmodas (como por ejemplo, recordar contraseas,
cambiarlas peridicamente, etc.) y que pueden limitar las operaciones que puede
realizar as como los recursos a los que se le permite acceder.

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.

1. Por qu son necesarios los mecanismos de seguridad?


Para poner de relevancia lo comentado en los prrafos anteriores se han elegido
tres casos genricos que se describen a continuacin. Con ellos se pretende
mostrar alguno de los peligros, relativos a seguridad, de estar interconectados.
Para cada uno de ellos existen mecanismos de seguridad que permiten llevar a
cabo las operaciones de manera satisfactoria.

1.2.1. Intercambio de informacin


Cuando se intercambia informacin con un ordenador remoto, esa informacin
circula por una serie de sistemas intermedios que son desconocidos a priori
(excepto en mbitos muy especficos). Adems, no slo no se sabe cules sern
estos sistemas intermedios, sino que adems no se dispone de ningn control
sobre ellos o sobre lo que puedan hacer con nuestros datos al pasar por ellos.
Quiz el propietario original es de fiar pero su sistema ha sido comprometido por
un atacante que toma posesin de los datos enviados.
Por otro lado tampoco se puede estar seguro de que el sistema al que uno se est
conectando es quien dice ser. Existen diversos medios tcnicos para suplantar la
identidad de un sistema y engaar a un tercero cuando realiza la conexin.
En definitiva, no existe una certeza absoluta de que aquellos sistemas a los que
uno enve informacin sean realmente los autnticos; adems, en el caso de que
lo sean no se sabe si les llegar la informacin que se les enva, o si llegar sin
cambios o si, an si llega sin modificaciones, ser leda por terceras partes.

1.2.2. Instalacin de software daino involuntariamente


Otra posibilidad que no se debe descartar es que se instale software en un
ordenador sin conocimiento del usuario o administrador. Esto puede ocurrir de
muchas formas, algunas relacionadas con operaciones que se realizan todos los
das. Algunos ejemplos son:

Introduccin de virus o troyanos por la descarga y ejecucin de ficheros en


servidores, en principio, confiables, por parte del usuario. El efecto de
distribucin puede ser, incluso, involuntaria si se hace uso de sistemas de
archivos compartidos. En el caso de los virus el efecto destructivo se har
patente ms pronto o ms tarde. La instalacin de troyanos puede, sin
embargo, pasar desapercibida.

Difusin de virus por correo electrnico. Lograda gracias a la malversacin


por parte del virus del programa utilizado como lector de correo (que lo
ejecuta automticamente sin intervencin del usuario) o porque el usuario
activa el virus inadvertidamente creyendo que se trata de otra cosa. Su
efecto pernicioso es, adems del destructivo habitual de un virus, la
distribucin a las direcciones conocidas convirtiendo su propagacin en
exponencial.
Explotacin de una vulnerabilidad de un servicio que se est ofreciendo a
travs de Internet. Como por ejemplo un servidor web. Un caso similar sera
una carpeta compartida donde otros miembros de la red local (y quiz un
virus que haya en sus ordenadores) pueden copiar archivos.

Este software daino no slo puede obtener o borrar informacin del sistema en el
que se instala, tambin puede servir como plataforma de ataque a otros sistemas.
Es por esto que todo ordenador, mxime cuando se encuentra expuesto a recibir
informacin del exterior, debe protegerse con las medidas de seguridad
adecuadas aunque se considere que no tiene informacin ni servicios de gran
importancia.

1.2.3. Proteccin ante accesos no autorizados


Cuando se ofrecen servicios o informacin en una red para sus usuarios legtimos,
al mismo tiempo se abre la puerta a posibles intrusos en estos sistemas.
Protegerse de esta posibilidad implica tener un especial cuidado con todo el
software empleado, desde el sistema operativo hasta la ltima de las aplicaciones
instalada, y cuidar en gran medida su configuracin.
Pero tampoco debera olvidarse la posibilidad de que existan intrusos que accedan
fsicamente al sistema. La evolucin de las comunicaciones ha hecho que se
preste una gran atencin a la posibilidad de accesos remotos, pero de nada sirve
evitar esta posibilidad si se permite el acceso fsico al sistema a personas no
autorizadas. Es por esto que, en algunos casos pueda ser necesario tomar las
medidas de seguridad adecuadas sobre el propio hardware para evitar robos, o
prdidas de informacin por estos accesos inadecuados.
En definitiva un buen sistema de seguridad debe proteger los sistemas vulnerables
ante el posible acceso fsico o remoto de intrusos no autorizados. Evidentemente,
el nivel de seguridad establecido tendr que ser consecuente con un anlisis
previo de los riesgos, considerando el impacto de dicho acceso no deseado contra
las posibilidades de que este se produzca. Algunas medidas de seguridad que se
pueden implantar en estos casos van desde el cifrado de informacin sensible

para impedir su acceso sin la clave adecuada, mtodos fsicos de destruccin de


la informacin en caso de manipulacin mecnica de la misma, etc.

1.3. Fallos de seguridad en la utilizacin del software


Se puede hacer un anlisis agrupando los fallos de seguridad que se pueden dar
en el software. Este anlisis va a permitir enfocar, ms adelante cmo distintos
tipos de software ayudan a solventarlos. De una forma simplista, se pueden dividir
en tres bloques:

fallos debidos a errores desconocidos en el software, o conocidos slo por


terceras entidades hostiles.
fallos debidos a errores conocidos pero no arreglados en la copia en uso
del software.
fallos debidos a una mala configuracin del software, que introduce
vulnerabilidades en el sistema

El primero de ellos se puede achacar a la calidad del cdigo, el segundo a la


capacidad y celeridad de arreglo de los errores descubiertos en el cdigo por parte
del proveedor del mismo y a la capacidad del administrador de recibir e instalar
nuevas copias de este software actualizado. El tercer tipo de vulnerabilidades
puede achacarse, sin embargo, a una falta de documentacin del software o una
falta de formacin adecuada de los administradores para hacer una adaptacin
correcta del mismo a sus necesidades.
Los fallos pueden dar lugar a un mal funcionamiento del programa, siendo en el
mbito de la seguridad preocupantes por cuanto:

pueden implementarse algoritmos de forma incorrecta lo que puede llevar a


una prdida de seguridad (por ejemplo, un algoritmo de generacin de
claves que no se base en nmeros totalmente aleatorios)
pueden disearse servicios que, en contra de sus especificaciones,
ofrezcan funcionalidades no deseadas o que puedan vulnerar la seguridad
del servidor que los ofrezca.
pueden no haberse tomado las medidas de precaucin adecuadas para
asegurar el correcto tratamiento de los parmetros de entrada, lo que
puede hacer que un atacante externo abuse de ellos para obligar al
programa a realizar operaciones indeseadas

2.0 Problemtica actual de la seguridad en el software


Los puntos dbiles ms importantes de la Ingeniera de Software con respecto a la
seguridad pueden ser clasificados en dos grandes categoras:

I.
II.

Fallas para implementar software seguro.


Fallas para implementar seguridad en el software.

II.1 Fallas para implementar software seguro

Lamentablemente, la mayora de las herramientas que tiene disponible un


desarrollador de software sufren de fallas propias de seguridad.
Una de las debilidades ms trascendentes al momento de implementar software
seguro surge del estado de los lenguajes de programacin desde el punto de vista
de la seguridad. Son escasos los lenguajes que proveen primitivas seguras que
ayuden al programador a escribir un mejor cdigo.
Dos de los lenguajes de programacin ms usados en la actualidad, C y C++,
presentan graves problemas de seguridad. Esto se debe a que al utilizar muchos
de sus servicios provistos por sus libreras estndar se introducen fallas de
seguridad que pasarn inadvertidas al programador debido a que ste las
considera libre de errores.
Las razones por las cuales estas fallas internas permanecen en la actualidad son
varias: mal entendimiento de los protocolos de seguridad, una visin ingenua
respecto a lo que un sistema debiera considerar como seguro, aproximaciones no
serias a la seguridad como corregir luego o no se van a dar cuenta, o
directamente desconocimiento, ya que lamentablemente estas fallas no son
conocidas universalmente, y existen pocas fuentes de informacin para escribir
cdigo seguro. Un programador promedio no cuenta con la experiencia suficiente
como para poder determinar los requerimientos de seguridad que necesite su
aplicacin. Esto resulta en la subestimacin de pequeos detalles que luego
pueden llegar a introducir grandes fallas de seguridad.

2.2 Fallas para implementar seguridad en el software


En la actualidad, el desarrollador de software que quiera incorporar seguridad a su
sistema se enfrentar con la difcil realidad de las tcnicas de programacin
tradicionales, y tambin, con una Ingeniera de Software que recin est
aprendiendo sobre la seguridad.

Tpicamente la seguridad es considerada como un requerimiento no funcional.


Luego, debido a los problemas de planificacin y presupuesto, la seguridad slo
es tenida en cuenta una vez que los requerimientos funcionales son obtenidos.
Esto conduce a que la seguridad sea considerada como un concepto aftert
hougth, y que se incorpore tardamente al sistema.
Esto lleva a una implementacin pobre, ineficiente, e inadecuada de la seguridad.
Tambin, la mayora de las metodologas de diseo y herramientas dedicadas a la
seguridad trabajan de esta forma, como herramientas after thougth. Por lo tanto,
es mandatorio que los conceptos de seguridad formen parte integral en todo el
ciclo de vida de desarrollo de software, tal como se lo demanda.

3. Objetivos para un software seguro


En pos de conseguir un software seguro, se debe dejar claro qu se entiende por
seguridad, para as luego poder establecer requisitos mnimos que debe satisfacer
un sistema que pretenda ser considerado seguro.
Como definicin del concepto de seguridad en software, se adoptar en este
trabajo la definicin que propone Doshi Shreyas en la seguridad de un sistema de
software es un concepto multi-dimensional. Las mltiples dimensiones de la
seguridad son:

Autenticacin: el proceso de verificar la identidad de una entidad.


Control de acceso: el proceso de regular las clases de acceso que una
entidad tiene sobre los recursos.
Auditoria: un registro cronolgico de los eventos relevantes a la seguridad
de un sistema. Este registro puede luego examinarse para reconstruir un
escenario en particular.
Confidencialidad: la propiedad de que cierta informacin no est disponible
a ciertas entidades.
Integridad: la propiedad de que la informacin no sea modificada en el
trayecto fuente-destino.
Disponibilidad: la propiedad de que el sistema sea accesible a las entidades
autorizadas.
No repudio: la propiedad que ubica la confianza respecto al
desenvolvimiento de una entidad en una comunicacin.

La seguridad puede tener diferentes significados en distintos escenarios. En


general, cuando se habla de seguridad implica referirse a ms de una de las
dimensiones mencionadas anteriormente. Por ejemplo:

Seguridad en correo electrnico: involucra confidencialidad, no


repudio e integridad.
Seguridad
en
compras
online:
implica
autentificacin,
confidencialidad, integridad y no repudio.

Bajo este punto de vista, se define un ataque a la seguridad como un intento de


afectar en forma negativa una o ms de las dimensiones del concepto de
seguridad.
Una vez definido el concepto de seguridad, se pueden establecer objetivos
bsicos para un software seguro:
Independencia de la seguridad: la seguridad debe construirse y utilizarse de
manera independiente de la aplicacin.

Independencia de la aplicacin: la aplicacin no debe depender


del sistema de seguridad usado, debe ser desarrollada y mantenida
en forma separada.
Uniformidad: la seguridad debe aplicarse de manera correcta y
consistente a travs de toda la aplicacin y del proceso que
desarrolla la misma.
Modularidad: mantener la seguridad separada. Entre otras ventajas,
esto nos brindar mayor flexibilidad y menor costo de mantenimiento.
Ambiente seguro: se debe partir de un entorno confiable. Es decir,
las herramientas de desarrollo y lenguajes de programacin no
deben contener agujeros de seguridad.
Seguridad desde el comienzo: la seguridad debe ser considerada
como un requerimiento desde el inicio del diseo.

4. El Software Libre y la seguridad informtica

4.1. Qu es el Software Libre?


Para entender la situacin de este tipo de software con respecto a su uso en
seguridad informtica es imprescindible describir, en primer lugar, a qu se refiere
este documento cuando hace referencia a software libre.
El concepto de software libre es, en primera instancia, fcil de presentar, aun no
existiendo una nica descripcin reconocida por todos de lo que es realmente este
tipo de software. En general se entiende como software libre aquel programa o
conjunto de ellos de los que el usuario puede disponer del cdigo fuente, sin
restricciones, y el cual puede modificar y redistribuir tambin sin restricciones.
Estas libertades garantizadas al usuario del software (o a aquel que lo recibe) no
son contrarias a los derechos legtimos del autor del programa, es decir, ste no
tiene por qu perder sus derechos sobre el mismo. No se incluye, por tanto, en
esta definicin software en el domino pblico (aqul para en el que el autor ha
cedido todos sus derechos).

4.2. Ventajas del Software Libre en el mundo de la seguridad


Si se analiza la descripcin realizada previamente de la definicin de software libre
se derivan una serie de ventajas principales de este tipo de software sobre el
software propietario, algunas de las cuales son muy adecuadas para el mundo de
la seguridad. A saber:

Al disponer del cdigo fuente de los programas en su totalidad, ste puede


ser analizado por terceras personas ajenas a sus autores en busca de fallos
de diseo o de implementacin. Es decir, cualquiera con los conocimientos
necesarios puede realizar una auditora del cdigo del programa.
La posibilidad de realizar modificaciones libremente al cdigo fuente y
distribuirlas permite que cualquiera pueda ofrecer mejoras sobre ste. Estas
mejoras podrn ser nuevas funcionalidades que se incorporen al mismo o
parches que corrijan problemas detectados anteriormente.
Las caractersticas del software libre hacen que no sea lgico cargar costes
sobre el software en s (dado que se ha de distribuir sin cargo), lo que
permite que este tipo de software pueda ser utilizado por organizaciones y
personas con menos recursos econmicos.

Esto se presenta como una ventaja cuando se compara con los precios de
lo que cuesta el software de seguridad propietario hoy en da (licencias de
cortafuegos, vpns, sistemas de deteccin de intrusos, etc.). El software libre
pone en manos de cualquiera el tipo de tecnologa que, hoy por hoy, slo
podan tener grandes corporaciones.
De igual forma, la posibilidad de modificar libremente el software permite a
las organizaciones que lo adapten a sus propias necesidades, pudiendo
eliminar funcionalidades que no le sean de inters. En el mundo de la
seguridad existe la mxima de lo ms sencillo es ms seguro por ello
poder eliminar funciones innecesarias de las herramientas las puede
convertir de forma inmediata en ms seguras (porque no podrn ser
utilizadas estas funcionalidades para subvertirlas).

4.3. Desventajas del software propietario

Con respecto a la seguridad, las mismas garantas que ofrece el software libre en
el mundo de la seguridad son problemas que se le pueden achacar al software
propietario. Se puede hablar de las siguientes desventajas del software propietario
para el usuario final:

Posibilidad de que existan funcionalidades no deseadas en dicho software.


Dependiendo de la programacin realizada, algunas funcionalidades podrn
ser activadas o desactivadas por el usuario, pero pueden existir tambin
funcionalidades que no se puedan desactivar o que, incluso, no se
encuentren documentadas. Llevndolo al extremo se podra hablar de
puertas traseras abiertas por el fabricante del software que, despus de
todo, es un agente comercial y, por tanto, tiene sus propios intereses que
pueden ser contrarios a los de la compaa que instala un software de
seguridad especfico.
Desconocimiento del cdigo por parte del usuario. Esto puede llevar a que
el fabricante pueda llegar a tener una falsa sensacin de seguridad por
oscuridad, es decir, las vulnerabilidades de su producto no tienen por qu
ser conocidas porque nadie tiene acceso a las tripas del mismo. De igual
forma, esto puede llevar a que el fabricante no tenga inters en desarrollar
el cdigo de una forma adecuada porque, al fin y al cabo, el usuario no va a
ver dicho cdigo ni evaluar la calidad de su implementacin.
Necesidad de confiar totalmente en el fabricante.

4.4. Desventajas del software libre

Sin embargo, el uso de software libre no est exento de desventajas. As se


podran enumerar las siguientes:

La posibilidad de una generacin ms fcil de troyanos, dado que el cdigo


fuente tambin puede ser modificado con intenciones maliciosas. Si el
troyano logra confundirse con la versin original puede haber problemas
graves. La fuente del programa, en realidad, ser el mtodo de distribucin
de software, que, de no ser seguro, permitir que un tercer agente lo
manipule. La distribucin de software se asegura aadiendo posibilidad de
firmado de hashes de la informacin distribuida
El mtodo de generacin de software libre suele seguir, en la mayora de
los casos, el modelo bazar, es decir, muchas personas trabajan sobre
partes concretas e integrando sus cambios o personas desde el exterior
contribuyen mejoras al proyecto global. Esto puede dar lugar a que se
realice una mala gestin del cdigo fuente del software por no seguir
mtodos formales de seguimiento, la consecuencia final es que falten
piezas clave (que nadie ha contribuido) como es el caso de la
documentacin.
Al no tener un respaldo directo, la evolucin futura de los componentes
software no est asegurada o se hace demasiado despacio.

En mayor o menor medida, algunas de estas desventajas estn comenzado a


soluciones. El caso la difusin de troyanos se limita mediante el uso de tcnicas
de firma digital para garantizar la inviolabilidad del cdigo o binarios transmitidos.
Es frecuente que algunos autores de software libre al distribuir el cdigo indique
tambin informacin (sumas MD5 firmadas) que permitan garantizar la integridad
del cdigo descargado.
De igual forma, los problemas de evolucin futura empiezan a quedar resueltos
con un cambio de paradigma por parte de las compaas de software. Se trata del
cambio de un modelo de negocio en el software que pasa a enfocar el negocio
orientado al cobro de la realizacin de servicios en lugar del cobro a la utilizacin
de productos. Ya se observan, en el mundo de software libre, compaas que
contratan a personal cualificado para hacer mejoras sobre proyectos libres para
cubrir sus propios intereses y ofrecen soporte de productos de software libre.
Estas compaas, a diferencia de la orientacin propietaria previamente
presentada, siguen haciendo pblicas las modificaciones realizadas al cdigo
fuente.

Bibliografa:

Libros y artculos:
Linux
Mxima
Autor: Annimo, Editorial: Prentice Hall
Problemas
de
la
Seguridad
en
http://www.angelfire.com/ri2/aspectos/Tesis/Final.pdf

Seguridad
el

Software:

Sitios web de seguridad y software libre


Linux security: www.linuxsecurity.com
Servicio dedicado a todos los aspectos de seguridad en el mundo GNU/Linux, con
avisos y noticias, herramientas, etc.
Security Focus: http://www.securityfocus.com
Servidor orientado a la seguridad en todos los sistemas operativos y sus aspectos.

You might also like