Beruflich Dokumente
Kultur Dokumente
en el software
Tema 1
Tema 1: El problema de la seguridad en el softwar e
Universidad Internacional de La Rioja (UNIR)
Actualmente las tecnologas de seguridad red pueden ayudar a aliviar los
ciberataques, pero no resuelven el problema de seguridad real ya que una vez que el
ciberatacante consigue vencer esas defensas, por ingeniera social por ejemplo, y
comprometer una mquina del interior, a travs de la misma podr atacar las dems
empezando por las ms vulnerables. Se hace necesario por tanto el disponer de
softwar e seguro que funcione en un entorno agresivo y malicioso. El objetivo del
presente tema es introducir al alumno en los principales conceptos que abarca la
seguridad del software, en cuanto a los beneficios que produce, su importancia en la
seguridad global de un sistema, las propiedades de un software seguro, los ataques a
los que se tiene que enfrentar y las metodologas aplicables a los procesos de desarrollo
seguro de software.
Javier Bermejo Higuera
1.1. Introduccin al problema de la seguridad en el software
Hoy en da, los ataques cibernticos son cada vez ms frecuentes, organizados y
costosos en el dao que infligen a las administraciones pblicas, empresas privadas,
redes de transporte, redes de suministro y otras infraestructuras crticas desde la
energa a las finanzas, hasta el punto de poder llegar a ser una amenaza a la
prosperidad, la seguridad y la estabilidad de un pas.
Figura 1. Incidentes de seguridad
Tema 1: El problema de la seguridad en el softwar e
Universidad Internacional de La Rioja (UNIR)
En la figura-1 se puede observar un grfico cualitativo en el que se muestran diversos
incidentes ocurridos a lo largo de los ltimos doce aos en relacin con su nivel de
complejidad. Como se puede observar la amenaza es creciente con los aos y cada
vez su nivel de complejidad es mayor.
La sociedad est cada vez ms vinculada al ciberespacio, un elemento importante del
mismo lo constituyen el software o las aplicaciones que proporcionan los servicios,
utilidades y funcionalidades. Sin embargo estas aplicaciones presentan defectos,
vulnerabilidades o configuraciones inseguras que pueden ser explotadas por
atacantes de diversa ndole desde aficionados hasta organizaciones de cibercrimen o
incluso estados en acciones de ciberguerra, utilizndolas como plataformas de ataque
comprometiendo los sistemas y redes de la organizacin.
Nadie quiere software defectuoso, especialmente los desarrolladores cuyo cdigo
incorrecto es el problema, en un informe de Klocwork [10] se indica que las principales
causas de la aparicin de vulnerabilidades son las siguientes:
Tamao excesivo y complejidad de las aplicaciones.
Mezcla de cdigo proveniente de varios orgenes como compras a otra
compaa, reutilizacin de otros existentes, etc., lo que puede producir
comportamientos e interacciones no esperados de los componentes del software.
Integracin de los componentes del softwar e defectuosa, estableciendo
relaciones de confianza inadecuadas entre ellos, etc.
Debilidades y fallos en la especificacin de requisitos y diseo no basados
en valoraciones de riesgo y amenazas.
Uso entornos de ejecucin con componentes que contienen vulnerabilidades
o cdigo malicioso embebido, como pueden ser capas de middleware, sistema
operativo u otros componentes COTS.
No realizacin de pruebas seguridad basadas en riesgo.
Falta de la herramientas y un entorno de pruebas adecuados que simule
adecuadamente el real de ejecucin.
Cambios de requisitos del proyecto durante la etapa de codificacin.
Mezcla de equipos de desarrolladores, entre los que podemos tener, equipos
propios de desarrollos, asistencias tcnicas, entidades subcontratadas, etc.
Falta de conocimiento de prcticas de programacin segura de los
desarrolladores en el uso de lenguajes de programacin propensos a cometer errores
como C y C++ y utilizacin de herramientas de desarrollo inadecuadas.
Tema 1: El problema de la seguridad en el softwar e
Universidad Internacional de La Rioja (UNIR)
No control de la cadena de suministro del software, lo puede dar lugar a la
introduccin de cdigo malicioso en origen.
No seguimiento, por los desarrolladores, de guas de normalizadas de estilo
en la codificacin.
Fechas lmite de entrega de proyectos inamovibles.
Cambio en la codificacin en base al requerimiento de nuevas funcionalidades.
Tolerancia a los defectos.
No tener actualizadas las aplicaciones en produccin con los parches
correspondientes, configuraciones errneas, etc.
Las aplicaciones son amenazadas y atacadas, no solo en su fase de operacin, sino que
tambin en todas las fases de su ciclo de vida [9]:
Desarrollo. Un desarrollador puede alterar de forma intencionada o no el software
bajo desarrollo de forma que se comprometa su fiabilidad futura durante la fase de
operacin.
Distribucin e instalacin. Ocurre cuando no se protege el software evitando
manipulaciones antes de enviarlo o publicarlo. Del mismo modo, si el instalador del
software no bastiona la plataforma en la que lo instala o la configura de forma
insegura, queda vulnerable a merced de los atacantes.
Operacin. Cualquier software que se ejecuta en una plataforma conectada a la red
tiene sus vulnerabilidades expuestas durante su funcionamiento. El nivel de
exposicin variar dependiendo de si la red es privada o pblica, conectada o no a
Internet, y si el entorno de ejecucin del software ha sido configurado para
minimizar sus vulnerabilidades.
Mantenimiento o sostenimiento. No publicacin de parches de las
vulnerabilidades detectadas en el momento oportuno o incluso introduccin de
cdigo malicioso por el personal de mantenimiento en las versiones actualizadas del
cdigo.
Segn el informe 2011 Top Cyber Security Risks Report [3], las vulnerabilidades
detectadas en aplicaciones alcanzaron su punto mximo en el ao 2006 iniciando a
partir de ese ao un lento declive, ver figura 2.
Tema 1: El problema de la seguridad en el softwar e
Universidad Internacional de La Rioja (UNIR)
Esta disminucin de vulnerabilidades detectadas no significa que el software sea cada
vez ms seguro, es una sensacin de seguridad falsa, pues el nmero de
vulnerabilidades de alta severidad est creciendo a un ritmo ms rpido que los otros
niveles de vulnerabilidad (CVSS
1
8 a 10, clasificacin definida en la OSVDB)
2
. En la
figura 3 se pone de manifiesto cmo el porcentaje de vulnerabilidades de alta severidad
se ha incrementado en los ltimos 10 aos.
Figura 2. Vulnerabilidades descubiertas por OSVDB
3
, 20002011
Figura 3. Gravedad de las vulnerabilidades OSVDB en 10 aos
Las vulnerabilidades de alta severidad dan lugar a que un atacante pueda
explotarlas rpidamente y hacerse con el control total del sistema. Su explotacin
requiere un conocimiento poco especializado de la aplicacin al alcance, no solo de
organizaciones cibercriminales, si no de cualquiera con conocimientos de informtica.
En el mismo informe anteriormente referido se incluye un grfico del nmero de
vulnerabilidades por aplicaciones (figura 4) desde el ao 2005 hasta el 2011,
QuickTime es de manera significativa la ms alta, al igual que los navegadores Web
Internet Explorer y Firefox.
1
Common Vulnerability Scoring System (CVSS). Es un sistema que categoriza la severidad de
una vulnerabilidad, de manera estricta a travs de frmulas, proporcionando un estndar para
comunicar las caractersticas y el impacto de una vulnerabilidad en el software.
2
http://osvdb.org/search/advsearch
3
Vulnerability information from the Open Source Vulnerability Database (OSVDB)
Tema 1: El problema de la seguridad en el softwar e
Universidad Internacional de La Rioja (UNIR)
Figura 4. Nmero de vulnerabilidades por aplicaciones desde 2005 hasta 2011
Otros aspectos importantes que influyen en el nmero de vulnerabilidades conocidas
de una aplicacin son: su complejidad, su extensin en lneas de cdigo y el nivel
exposicin a los ataques, en este sentido las aplicaciones web en Internet, son las que
tienen ms probabilidades de ser atacadas y por tanto suelen tener mayor nmero de
vulnerabilidades conocidas.
Adems errneamente, a pesar de los datos convincentes de lo contrario, se sigue
confiando que la implantacin de tecnologas y dispositivos de seguridad de
red como cortafuegos, sistemas de gestin y correlacin de eventos (SIEM
4
), sistemas
de deteccin de intrusos, sistemas de gestin de acceso y cifrado del trfico, etc., son
medidas suficientes para proteger los sistemas de la organizacin. Los atacantes
buscan el descubrimiento de fallos en el software relacionados con la seguridad del
sistema, que den lugar a una vulnerabilidad con un impacto y riesgo asociado para la
entidad propietaria.
En base a lo expuesto anteriormente, se considera la necesidad que las diferentes
organizaciones pblicas o privadas dispongan de software fiable y resistente a los
ataques, es decir de confianza, con nmero de vulnerabilidades explotables
que sea el mnimo posible.
En respuesta a lo expuesto anteriormente nace la Seguridad del Softwar e, en el
documento de referencia [13] de SAFECode se define como: La confianza que el
software, hardware y servicios estn libres de intencionadas o no intencionadas
vulnerabilidades y que funcionan conforme a lo especificado y deseado.
4
Sistema de Centralizacin y Monitorizacin de la Informacin de Eventos y datos
infraestructura como, logs, etc.
Tema 1: El problema de la seguridad en el softwar e
Universidad Internacional de La Rioja (UNIR)
El Departamento de Defensa de los Estados Unidos (DoD) [19] la define como El nivel
de confianza de que el software funciona segn lo previsto y est libre de
vulnerabilidades, ya sea intencionada o no diseada o insertada en el marco de la
software.
En este sentido, en base a la definicin anterior y los prrafos anteriores, se puede
definir la seguridad del softwar e como:
El conjunto de principios de diseo y buenas prcticas a implantar en el SDLC,
para detectar, prevenir y corregir los defectos de seguridad en el desarrollo y
adquisicin de aplicaciones, de forma que se obtenga softwar e de
confianza y robusto frente ataques maliciosos, que realice solo las
funciones para las que fue diseado, que est libre de vulnerabilidades,
ya sean intencionalmente diseadas o accidentalmente insertadas durante su
ciclo de vida y se asegure su integridad, disponibilidad y confidencialidad.
Hasta principios de la dcada anterior, la mayora de las aplicaciones se desarrollaban
sin tener en cuenta requisitos y pruebas de seguridad especficos, los desarrolladores de
software no eran conscientes de las vulnerabilidades que se pueden crear al programar
y descuidaban los aspectos de seguridad, dando primaca al cumplimiento de las
especificaciones funcionales, sin tener en cuenta casos en los que el software fuera
maliciosamente atacado. Este proceso de desarrollo de software ofrece, aparte de los
errores no intencionados producidos al codificar anteriormente referidos,
oportunidades de insertar cdigo malicioso en el softwar e en origen.
Como se ha comentado anteriormente la tecnologas de seguridad red pueden ayudar a
aliviar los ataques, pero no resuelven el problema de seguridad real ya que una
vez que el ciberatacante consigue vencer esas defensas, por ingeniera social por
ejemplo, y comprometer una mquina del interior a travs de la misma podr atacar a
otras de la red (pivoting) empezando por las ms vulnerables. Este es el caso de las
Amenazas Avanzadas Persistentes (APT
5
) uno de los ciberataques ms peligrosos y
dainos de hoy en da. Se hace necesario por tanto el disponer de softwar e seguro
que funcione en un entorno agresivo y malicioso.
5
Tipo sofisticado de ciberataque organizado, de rpida progresin y largo plazo, diseado
especficamente para acceder y obtener informacin de los sistemas de la organizacin objetivo.