miércoles, octubre 31, 2007

ASLR + APPLE

A pesar de que muchos tecnicoless siguen recomendando Windows XP sobre Windows Vista sin tan siquierea haberlo probado, perdiendo el Ctrl+AlT+Supr y la verguenza, y descubriendo que la tecla de Windows servía para algo, lo cierto es que Vista trajo montones de tecnologías al gran público que en otros sistemas operativos ni existen, están en beta o en productos muy expecíficos. Una de estas tecnologías es el ASLR que ayuda a complicar cualquier intento de ataque por desbordamiento.

La idea es muy sencilla, cada librería del sistema es cargada en una dirección de memoria distinta, dentro de un rango de 256 valores, dependiendo del resultado que se obtenga a través de una función de entropia.

Esto permite que para los programadores de exploits sea más complejo realizar las llamadas a las funciones del sistema. De esto ya escribí, en cuatro posts tiempo ha, en el blog de Vista Técnica.

Conseguir un exploit remoto de ejecución arbitraria de código en Windows Vista creo que aún lo están buscando, pues aunque se consiga desbordar algun programa, el saber a que direcciones debes llamar hace casi imposible el programar este exploit.Si a esto añades que un exploit no llama a una sola función sino a varias las probabilidades de acertar todas las direcciones de todas las librerías tienden a la probabilidad e Hamilton de ganar el mundial de F1 2007. Esta tecnología junto a DEP tienen el inconveniente de que pueden hacer que muchas aplicaciones antiguas dejen de funcionar. Un problema de compatibilidad hacia atrás en pro de mayor Seguridad.

Hay planes de futuro para implementar estas tecnologías en el mainstream de las distribuciones de Linux y distribuciones fortificadas y especilizadas en sistemas robustos las implementan hace tiempo, pero el último que se ha subido al carro ha sido MacOSX.

Library Randomization

Defend against attackers with no effort at all. One of the most common security breaches occurs when a hacker’s code calls a known memory address to have a system function execute malicious code. Leopard frustrates this plan by relocating system libraries to one of several thousand possible randomly assigned addresses


No es la única novedad que trae la última versión del sistema operativo, pero parece que al final las características de algo tan maduro como los sistemas operativos tiende a juntarse.

Vista no solo trae ASLR y DEP, sino también dos tecnologías como UiPi y MIC que ayudan a mejorar la seguridad del sistema.

Windows Vista y el Malware I y Windows Vista y el Malware II

Por favor, instala lo que más te mole, pero... no digas tonterías, que ya les es suficientemente duro el trabajar como Directores de Seguridad en Spectra [Trabajas en Spectra?]

9 comentarios:

Gura dijo...

jaja, justo antes de llegar aquí esta dura mañana de trabajo me pasé por el blog que emncionas. Me ha hecho gracia.

En lo que a los sistemas operativos respecta, es cierto que no todas se atreven a implementar de serie dichas tecnologias como puede ser PaX, SELinux, RSBAC, etc.

Agur.

palako dijo...

Hey Chema!

Aquí me quedo yo un poco descolocao. Que yo supiera, era Spectra la que iba muy retrasada en la incorporación de esta tecnología. Linux tiene ASLR desde el kernel 2.6. Como mínimo, desde antes del febrero de 2005 (http://lwn.net/Articles/121845/).

No se que están haciendo las distros por ahí, no suelo estar al día de esas cosas, pero en las que yo uso hace ya mucho (en torno a dos años?) que vienen con 2.6.

Así que explicame un poco mejor eso de "hay planes de futuro para implementar...". What do you mean?

Saludos

Maligno dijo...

Hola palako!!

Tengo para ti tú caja de botellines, así que, como voy a pasar por londres, ¿estás allí ahora, no? Pues aprovechamos y nos metemos una caja!

Lo de ASLR, existe en el kernel hace tiempo, pero no lo implementan la mayoría de las distros, de hecho solo en versiones hardened.

Tienes la historia de las implementaciones en la wikipedia.

ASLR

Saludos!

palako dijo...

Si, aquí en London Town estoy, y como no te van a dejar traerte los botellines nos los tomaremos en pintas (la equivalencia no es por volumen, sino a pinta por botellín que trajera la caja :-)).

Hasta donde yo se, y lo confirma en en el enlace que has puesto, cualquier distro que tenga un kernel mayor que el 2.6.12 tiene por defecto activada esta opción, y esto no lo se, pero, ¿tu crees que al empaquetarlas la desactivan o configuran el arranque para no usarla? No lo creo. La única razón para hacerlo sería la compatibilidad hacia atrás, pero esto es Linux, aquí no existe el mismo problema con las direcciones de las llamadas a sistema fijas en las dll de windorrows(***), así que, no way. ¿Sabes algo sobre esa desactivación explicita de ASLR?

Respecto a las distribuciones de linux más orientadas a la seguridad, lo que hacen es meterle un montón de parches al kernel, sobre todo en versiones anteriores a 2.6, con pilas no ejecutables y todas esas cosas que tu ya sabes.

Así que aún me tienes que convencer de que la batalla del ASLR la gana el lado del mal :-)

(***)Que nadie me empiece un flame con la compatibilidad hacia atrás en linux, que no he dicho nada de que sea buena, solo que el problema no es el mismo que en windows. Es uno de los principales problemas de linux para abrirse "mercado" de verdad entre desarrolladores de drivers (fabricantes de hardware), etc... Dar algo un poquito más estable en cuanto a API del kernel.

Maligno dijo...

Hola Palako,

no conozco el estado de la configuración de todas las distros, pero hasta hace bastante poco la mayoría evitaban meter estas opciones. De hecho RedHat no las ha incluido hasta Marzo del 2007 con las versiones 5.

Compruebo algunos datos y los pongo por aquí.

Saludos y ok a lo de las pintas!

bastian dijo...

Con esta versión de Windows creo que han abordado más seriamente el tema de la seguridad. Sin embargo la han cagado esta vez con Vista en temas más cotidianos. Temas como la lentitud al copiar archivos, problemas con conexiones WPA, que consuma demasiada RAM (y no hablo del superfetch o del aero) lo cual hace que cosas como usar máquinas virtuales u otras aplicaciones pesadas con 1GB de RAM (que es con lo que vienen muchos portátiles) sea un suplicio.

Trancek dijo...

Vi esto y me sonaba que habia leido sobre el tema y asi era, aqui hay unas pruebas de que en la Beta 2 del Vista no es tan seguro como parece.

http://www.sysdream.com/articles/Analysis-of-Microsoft-Windows-Vista's-ASLR.pdf
http://www.sysdream.com/articles/Stack%20overflow%20on%20Windows%20Vista.pdf

El problema esta claro que se produce por el numero de posibilidades de acertar y les costara bastante hacer un exploit que funcione 100% bien pero bueno seguro no tardan en encontrar otro tipo de vulns para saltarse este tipo de protecciones, lo hacen todos los dias.

Lo que no ando muy enterado del vista pero despues de un año es probable que ya hayan mirado eso jeje, pero bueno no vi asi nada mas reciente, cada dia se complican mas las cosas para los exploit writter pero tanto en windows como en linux que hay formas incluso de protegerse de 0-days pero no he tenido oportunidad de probar que tal funciona el sistema.

palako dijo...

Como buenos tecnicomore, tendremos que averiguar cuando ha metido Red Hat ASLR en sus distros, porque me resulta muy rara la fecha que das.

De momento he encontrado esto:

http://www.awe.com/mark/blog/200701041544.html

No se quien es el tipo que lo publica ni su credibilidad, pero el cuadro es tan bonito que no creo que se lo haya inventado :-)

Hay dice que esto ya lleva un tiempito.

También en otras entradas, como:

http://blogs.msdn.com/michael_howard/archive/2006/05/26/address-space-layout-randomization-in-windows-vista.aspx

se puede leer algun comentario de mayo de 2006 de alguien (cualquiera sabe quien y como de creible) diciendo, ¿no tiene esto red hat desde hace más de un año y medio?

¿Contrastes?

Maligno dijo...

Hola otra vez seres!

Pues me llama la atención de lo del link que has puesto Palako, pues el RHEL 4 se quedó en el kernel 2.6.9-55 y en el Changelog de dicho kernel no viene por defecto. Es cierto que las ramas fortificadas podrían implantarlo pues hay soporte para kernels 2.4 y anteriores al 2.6.12, pero me extraña que la RHEL 4 la lleve por defecto. No obstante, como tengo un server de pruebas en RHEL 4 lo voy a comprobar segurito.

Los kernels superiores a la 2.6.12 entraron ya en las versiones 5, es decir, hace bastante poquito.

En Linux creo que la primera implementación es del 2003, pero lo que es ponerlo activo por defecto y ser distribuido en las distros mainstream lleva bastante poco, por los problemas de compatibiliad de aplicaciones, al igual que el NX y demases.

@trancek, con algo nos sorprenderán .... seguro.

;)

Entradas populares