| Artículos | 01 NOV 2001

Seguridad en Windows XP

Tags: Histórico
Daniel Avila.
Microsoft es consciente de la importancia de la seguridad en sus nuevos sistemas operativos. En los dos últimos años -casualmente desde 2000- han aparecido las vulnerabilidades más peligrosas en sus productos, y los usuarios se preguntan si en la nueva versión de Windows habrá mejorado la seguridad. Descubra la verdad sobre este delicado asunto.

Desde que Microsoft entró de lleno en el mundo de las redes allá por la versión 3.11 de Windows para Grupos de Trabajo en 1993, los términos seguridad y privacidad han ido ascendiendo puestos en la escala de la popularidad, pero no precisamente en el sentido positivo.
De hecho, incluso alguna consultoría informática de renombre internacional -Gartner: www.gart ner.com/DisplayDocument?doc_cd=101034- ha llegado a escribir informes recomendando a los integradores de sistemas que no incorporen el servidor web (entre otras cosas) Internet Information Server (o Service en Windows 2000) de Microsoft debido a su alta tasa de fallos de seguridad y el coste asociado a este inconveniente.
No pretendemos dar la idea que los productos de Microsoft son los únicos inseguros en el mercado, ni mucho menos: existe multitud de nuevos fallos de seguridad virtualmente para cualquier plataforma, incluyendo Linux, Solaris, Irix, Cisco o 3Com (por citar algunos). Pero, para el caso que nos atañe, Windows es el sistema operativo más utilizado a nivel mundial, tanto en entornos domésticos como profesionales, de ahí que un fallo de seguridad en él afecte directamente a más gente; y si este fallo es grave -que permita acceso total a la máquina, por ejemplo- el problema es aún mayor.
La situación se complica desde que Microsoft ha decidido unir todos sus sistemas operativos en una plataforma común, la conocida XP -cuyo nombre ha sido objeto de imitación de varios fabricantes-, en la cual si se produce un fallo a nivel de sistema, éste se reproducirá, posiblemente, en todas las versiones de XP, desde el usuario casero que usa el ordenador para jugar hasta las grandes multinacionales que mantienen bases de datos críticas.
Todo esto hace que Microsoft comience a tomarse el tema de la seguridad más en serio. El problema es el de siempre, los productos que no han sido diseñados desde el principio para ser seguros, tarde o temprano acaban cayendo.
Esto es debido a la propia evolución de Windows XP. El núcleo o kernel de XP procede directamente de Windows 2000 y éste a su vez de Windows NT -tal y como muestra la pantalla de inicio de 2000-, por ello, tanto lo bueno como lo malo ha sido arrastrado durante años. Windows XP es quizás el proyecto de software mayor de la historia, prueba de ello son sus más de 40 millones de líneas de código que, comparadas con los 29 millones de Windows 2000 o los 16,5 millones de su predecesor Windows NT 4.0, dan idea de lo complejo que es internamente. Pero el punto está en que la base sigue siendo la misma, es decir, las partes críticas del núcleo (gestión de procesos, entrada y salida, etc.) desarrolladas por Dave Cutler para la primera versión de NT en 1993 apenas han evolucionado.
Sin llegar a ser extremistas, intentaremos repasar cuáles son los puntos de seguridad delicados, así como las soluciones que propone Microsoft en su nuevo Windows XP.

Raw Sockets, potencia para el usuario final
En 1981, los ingenieros de los laboratorios de la Universidad de Berkeley en California implementaron la pila TCP /IP en el sistema operativo UNIX, gracias a la cual sus ordenadores podrían conectarse a Internet.
Esta API (Application Programming Interface) permitía a los programadores manejar un nivel relativamente alto de abstracción, es decir, no necesitaban acceder a las estructuras internas del sistema para crear aplicaciones que soportaran comunicaciones TCP/IP; en lugar de ello usaban sockets.
Un socket es básicamente el punto final de una comunicación entre dos procesos, tanto locales como remotos, compuesto por un par “dirección IP”-puerto. Los datos en Internet son transmitidos estableciendo una comunicación TCP bidireccional entre dos máquinas -unidireccional si el protocolo es UDP- mediante sockets.
Según la definición original de BSD (Berkeley Software Distribution), existen dos tipos de sockets: standard socket y raw socket. Aunque ambos tipos de sockets permiten la misma funcionalidad (enviar datos), el raw socket permite acceso a las interfaces y protocolos internos de red del kernel, es decir, permite generar las estructuras de control a bajo nivel en las que el programador es responsable de construir un paquete TCP/IP -o UPD/IP- completo, incluyendo las cabeceras. Disponible sólo para usuarios con privilegios de administrador, un raw socket está destinado a usar funcionalidades que no están implementadas en una interfaz normal, o para construir un nuevo protocolo sobre los protocolos de bajo nivel existentes.
Resumiendo, un raw socket permite al programador un control total sobre los protocolos de transmisión de redes, permitiéndole crear paquetes con direcciones IP falsas (spoofing) e incluso paquetes no estándares con fines maliciosos.
La implementación de la pila TCP/IP de Windows está basada en las especificaciones originales de Berkely (incluso tiene partes idénticas a éstas), pero en las versiones Windows anteriores a 2000, léase Windows 3.x, 95, 98, Me e incluso NT, la librería Winsock (encargada de las transmisiones TCP/IP) no permitía la creación de raw sockets al estilo de BSD (ver figura). Aunque era posible crear raw sockets, estos no accedían nunca al núcleo de red.
En Windows 2000 sí que es posible crear raw sockets al estilo tradicional, ya que Microsoft actualizó la implementación TCP/IP para que cumpliera con las especificaciones originales (según Microsoft era una característica que demandaban sus clientes). Pero, el uso de raw sockets en 2000 estaba limitado, naturalmente, al usuario con privilegios de administrador por motivos obvios, igual que en UNIX sólo se permite usarlos al usuario con la identificación efectiva 0 (EID==0) o normalmente root.
El uso de raw sockets fue principalmente diseñado con motivos experimentales, y para aplicaciones que necesitaban acceder directamente al núcleo de red por demandar funcionalidades no implementadas por defecto como NAT (Network Address Translation) o IPsec (protocolo de transmisión segura sobre IP).
El caso es que Microsoft ha decidido implementar el soporte para raw sockets en todas las versiones del nuevo sistema XP, incluso en la versión doméstica o Home Edition. Pero el problema no es éste; el problema es la manera de establecer los privilegios de los usuarios en el sistema, ya que en esta versión de XP todos los usuarios se ejecutan por defecto con los privilegios de administrador (al ser una versión para un público no experto se trató de minimizar la complejidad de permisos) y por lo tanto tienen la capacidad de crear raw sockets.
Un usuario normal nunca intentará crear ni standard sockets ni raw sockets, ya que eso es tarea de los programadores de red, pero, como ya puede ir imaginando, no son ellos quienes nos deben preocupar.
Últimamente ha aparecido multitud de vulnerabilidades de seguridad en los sistemas operativos y aplicaciones de Microsoft que permiten, de una forma u otra (ver sección Seguridad de PC World), acceder a los recursos de la máquina afectada. A través de estas vulnerabilidades y una vez con el control del sistema, los hackers pueden efectuar ataques r

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información