- Evolución del
panorama de seguridad informática en los
últimos años - Ciclo de vida de un
software, su explotación y (deseablemente) su
actualización y/o parchado - EL camino más
corto a la explotación de sistemas - La solución:
profesionales informados - Dos atajos para ahorrar
tiempo: AlertaHacker.com y
HackerWarnings.com - Notas
Hay dos posibles situaciones que pueden ser
explotadas por un hacker(1) que
busca tomar el control de un
sistema:
a) programas y
sistemas mal
configurados por error del usuario
b) programas y sistemas con vulnerabilidades conocidas
(errores de programación presentes en el software)
Según mis propias estadísticas como auditor de sistemas, la
situación "a" (sistemas mal configurados) produce
sólo un 14% de los incidentes de seguridad, en
tanto que la situación "b" (vulnerabilidades por errores
internos del software) produce el 86% restante. (2)
Evolución del panorama
de seguridad
informática en los últimos
años
Si bien no cuento con
cifras sobre este fenómeno hace 11 años (cuando me
inicié profesionalmente en esta actividad), bien recuerdo
que los incidentes de seguridad informática se debían casi
exclusivamente a errores de configuración por parte de
administradores y usuarios. Las vulnerabilidades internas de los
programas también causaban problemas,
pero no con la frecuencia que experimentamos en la
actualidad.
De modo que el panorama de (in)seguridad en
Tecnologías de la Información ha ido evolucionando hasta la
situación actual, en que los errores (o "Bugs") en los
programas son los responsables de la inmensa mayoría de
los incidentes de seguridad informática.
Las causas de estos cambios son:
* Mayor cantidad y calidad en la
documentación que indica cómo
instalar un programa; lo
que reduce la presencia de sistemas mal instalados, produciendo
la baja de la situación "a".
* Mayor cuidado de la configuración de
seguridad por parte de los empaquetadores de software. Por
ejemplo: en las distribuciones Linux actuales,
la instalación por defecto resulta relativamente segura,
al contrario de lo que ocurría hace unos años,
cuando un Linux recién instalado tenía decenas de
servicios y
puertos abiertos innecesariamente. Este otro fenómeno
también produce la baja de la situación
"a".
* Los programadores siguen cometiendo errores de
seguridad en sus programas, al igual que hace 10
años.
Esto es debido a:
1) Los programadores no necesariamente son expertos en
seguridad.
2) No existe ninguna asignatura de
"programación segura" en los currículos de
universidades e institutos.
3) En las compañías de software, los
"empresaurios" presionan a sus programadores para reducir los
plazos de desarrollo
del software, pero no imponen ningún requerimiento en
cuanto a la seguridad del código que éstos
producen.
4) Las auditorías de seguridad de código
fuente no son para nada populares. Aunque existen muy dignas
excepciones, como ser el grupo que
produce el sistema opertaivo libre OpenBSD.Debido a estas
causas, la enorme producción de software que se desarrolla
en la actualidad sigue manifestando prácticamente los
mismos tipos de defectos que se encontraban en los softwares de
hace algunos años.
* En los últimos años se
descubrió una nueva categoría de vulnerabilidad
en programas compilados en lenguaje C o
creados mediante herramientas
que enlazan código C (casi todas): los ataques por
"string format". Estos se suman a los anteriormente conocidos
"buffer overflows" (desbordamientos de búfer). Esta
innovación prácticamente duplica
el horizonte de las posibilidades de ataques a programas de
software. Este factor produce un alza en la situación
"b".
* En los últimos años se ha producido un
fenómeno social (posiblemente impulsado desde Hollywood)
(3) en que millares de adolescentes
quieren ser "hackers". A
partir de este fenómeno, se ha multiplicado la cantidad
de personas que –aún sin conocer los fundamentos
técnicos de lo que están haciendo– utilizan
programas llamados "exploits" que aprovechan los errores
conocidos en determinados sistemas para generar una forma de
acceso que permita al atacante la manipulación remota
del sistema atacado.
* En los últimos años han proliferado
los Centros de Incidentes Informáticos: instituciones que se especializan en reportar y
recopilar información sobre problemas de seguridad en
Tecnologías de la Información.
Estos datos son usados
por los "buenos", pero también son usados por los "malos".
De ahí que el
conocimiento de las vulnerabilidades en softwares haya
adquirido una capacidad de propagación sin precedentes. Es
un ciclo en que el último en enterarse de la existencia de
un "bug" suele ser el propietario de un sistema recién
atacado.
* Se han popularizado un tipo de aplicaciones
conocidas como "gusanos", que no son otra cosa que programas
que escanean automáticamente la Internet
buscando sistemas que presenten alguna vulnerabilidad
predeterminada. Una vez que encuentran un sistema de estas
características, aplican un procedimiento
de explotación del error (lo mismo que haría un
hacker a mano) y penetran en el sistema víctima. Una vez
dentro, pasan a ejecutarse y desde allí comienzan a
escanear la Internet, comenzando nuevamente el proceso en
forma propagatoria.
* Se han popularizado los portales "underground" donde
es posible descargar un número creciente de "exploits"
por parte de cualquier persona que
sepa buscar en Internet. Muchos de estos "exploits" ya vienen
compilados. A su vez estas herramientas vienen cada vez
más y mejor documentadas (a diferencia de los de antes:
para saber cómo usarlos había que revisar y
entender completamente su código fuente).
He enumerado algunos de los fenómenos que han
contribuído a la conformación del panorama actual
de la Seguridad de Sistemas, donde el principal origen de los
incidentes de seguridad son los errores (o bugs) en los softwares
y sistemas instalados.
Ciclo de vida de un software,
su explotación y (deseablemente) su actualización
y/o parchado
Posiblemente no exista ningún software en el
mundo que se encuentre libre de manifestar un error en
algún momento del futuro. Los errores existen en TODOS los
programas. Aunque aún no hayan sido descubiertos… pero
hay tanta gente investigando… hurgando en todos los aspectos
del funcionamiento… analizando meticulosamente cada
pequeño detalle… Podemos afirmar que tarde o temprano
alguien en algún lugar encontrará una forma de
aprovechar un error hasta entonces no descubierto en el
software.
Cuando instalamos un sistema nuevo (un servidor web, por
ejemplo), normalmente utilizamos una versión muy reciente
de software, tanto en el sistema operativo
como en las aplicaciones del servidor. Si es así, este
servidor (suponiendo que esté bien configurado) no
manifestará problemas de seguridad durante algún
tiempo.
Pero SIN DUDA llegará el día en que
alguien descubra y reporte una vulnerabilidad en alguno de los
programas (que en el caso de un servidor web podrían ser
Apache, PHP, ASP, IIS,
OpenSSL, cgi, Perl, MySQL,
SQLserver, o el propio Kernel del sistema). Cualquiera de estos
programas que manifieste un error está exponiendo nuestro
servidor al ataque de un intruso. Y de estos intrusos hay por
millares, dando vueltas por las redes… buscando estos
errores. Casi al mismo tiempo de descubierta la vulnerabilidad,
el autor del software lanzará una nueva versión, o
en su defecto un "parche" o actualización (o "service
pack") para solucionar el problema de seguridad en versiones ya
instaladas sin necesidad de sustituírlas.
Entonces es en este punto donde surge la disyuntiva que
puede salvar los sistemas, o condenarlos a la intrusión de
hackers: si el administrador de
sistemas se entera de la existencia del problema –y su
solución– aplicará el parche. Si no se
entera… entonces tarde o temprano un intruso hará uso
del mismo.
Lo importante es la certeza de que EN ALGUN MOMENTO
TODOS LOS PROGRAMAS ESTAN EXPUESTOS A MANIFESTAR ALGUNA
VULNERABILIDAD DE SEGURIDAD. Y el único secreto para no
estar expuesto es tomar las medidas a tiempo.
EL camino más corto a
la explotación de sistemas
Por un momento pongámonos del lado del atacante.
Es interesante saber que la mayoría de los atacantes no
suelen buscar algún objetivo
concreto. Es
decir: la víctima de tuno puede ser absolutamente
cualquier servidor o sistema que sea pasible de ser atacado: que
manifieste una vulnerabilidad que el atacante conozca y sea capaz
de explotar. Para estos hackers lo importante es conquistar el
servidor. No importa cuál sea. Pasará a ser una de
sus hazañas, y contribuirá a fundar su prestigio
dentro de su comunidad.
El próximo paso del ataque es reunir su "arsenal"
(los programas de explotación que les permitirán
aprovechar cierto conjunto de vulnerabilidades), y acto seguido,
la búsqueda de servidores y
sistemas que manifiesten estas vulnerabilidades a ser explotadas.
Esta búsqueda se logra mediante programas de "escaneo"
(muchos de los cuales en realidad fueron desarrollados para
ayudar a los profesionales de seguridad a encontrar errores en
sus propios sistemas: Satan, Saint, Nmap, Retina o Nessus, por
ejemplo).
…Y una vez que el hacker tiene sus herramientas
preparadas y descubrió un servidor y/o sistema que
manifiesta la vulnerabilidad que estaba buscando… es hora de su
más auténtica diversión! Y tendremos un
servidor más para las estadísticas
forenses.
La solución:
profesionales informados
Ni la más sólida formación
científica, ni el más agudo talento como
administrador de sistemas. Ni la experiencia de años en la
configuración de servidores. Nada de esto constituye
atenuante cuando se descubrió una vulnerabilidad en el
software que usamos en nuestros servidores: estaremos expuestos a
ser atacados a menos que parchemos los sistemas a
tiempo.
A su vez, para tener la capacidad de parchar los
sistemas a tiempo, es condición imprescindible que el
administrador del sistema se entere de la vulnerabilidad a la
mayor brevedad posible.
Los administradores de sistemas deben frecuentar la web,
leer sitios especializados, estar suscritos a los e–zines
de los Centros de Incidencias de Seguridad como CERT
(www.cert.org), CERIAS (www.cerias.purdue.edu), BugTRAQ
(www.securityfocus.com), etc.
Y por sobre todas las cosas deben repasar diariamente
los aburridos reportes de vulnerabilidades (donde la inmensa
mayoría de las vulnerabilidades reportadas corresponden a
softwares y sistemas que no hemos usado ni posiblemente usemos en
nuestra vida).
Dos atajos para ahorrar
tiempo: AlertaHacker.com y HackerWarnings.com
Estos sitios brindan un servicio
gratuito de avisos de seguridad, que permite al administrador de
sistemas configurar sus alertas (qué softwares desean
monitorizar, con qué frecuencia, cómo desean ser
avisados, etc.) para recibir sólo las alertas de seguridad
que cada profesional requiera, según el software que
esté usando en sus instalaciones.
Estos sistemas los desarrollé personalmente hace
muchos años para ahorrar tiempo evitándome leer
decenas de reportes de vulnerabilidades que no me aportaban nada,
y pudiendo focalizarme en la monitorización de los
softwares que usaban mis clientes. Con
muchas "horas de vuelo" al final me decidí a poner estos
servicios a disposición del público gratuitamente
para beneficio de todos. A su vez son bienvenidas las ideas para
mejorarlos.
Hace algunos años cambiábamos para una
nueva versión de software porque deseábamos usar
las nuevas funciones y las
mejoras que el software nuevo nos proporcionaba. Actualmente la
causa más común para cambiar (o parchar) un
software es para corregir algún error que comprometa su
seguridad.
Esta afirmación es válida tanto en el
mundo del software libre
(Apache, MySQL, PHP, Linux, etc.) como del software propietario
(Windows,
Oracle,
etc).
La mejor forma de lograr (y mantener) un nivel de
seguridad óptima en nuestros sistemas es mantener las
versiones de software actualizadas. Pero a su vez hay que
discernir cuál es la causa que motivó el
lanzamiento de la nueva versión del software en
cuestión: si se trata de resolver un tema de seguridad
(que es lo que nos ocupa) o –como antes– la nueva
versión sólo agrega funcionalidades al
programa.
(1) El vocablo correcto para referirse al atacante es
"Cracker". En este artículo se optó por usar el
vocablo "Hacker" para mantener la compatibilidad con los
conceptos de un amplio público no involucrado en el tema
(ver artículo "Hacker: la palabra peor utilizada en la
historia de la
informática")
(2) Datos estadísticos obtenidos a partir de los
análisis forenses realizados en los
últimos 214 incidentes de seguridad en que el autor
participó en calidad de consultor y auditor.
(3) Algunas de las películas que han
contribuído a masificar el concepto de
"hacker": Tron (1982); WarGames (1983); Real Genius (1985);
Sneakers (1992); Goldeneye (1995); Hackers (1995); The Net
(1995); The Matrix (1999);
Operation Swordfish (2001); AntiTrust (2001)
Ing. Eduardo González
González