29 noviembre 2011

Anthony G. Basile, aka blueness, es una de las personas que está detrás de proyectos como PaX/Grsecurity, Gentoo Hardened o Tin Hat, un sistema operativo basado en Gentoo que tiene una razón de ser muy interesante.

Nos ha dejado hacerle algunas preguntas sobre su labor en algunos de éstos proyectos, y su forma de ver varios aspectos de la seguridad actualmente.

Personalmente he disfrutado mucho haciendo la entrevista y me gustaría agradecerle que haya compartido con nosotros un poquito de su tiempo. Os dejo con él.

1. Cuéntanos algo sobre tí, trabajo, hobbies, y qué haces cuando no tienes un ordenador entre manos.

Soy profesor en D'Youville College, en Buffalo, NY. Es una pequeña escuela con unos 3000 estudiantes. Soy el director del programa "Information Technology", que es cómo lo llamamos, pero es una licenciatura de ingeniería informática con énfasis en programación y diseño de sistemas. La mayoría de mi vida la paso enseñando, administrando servidores, y después llego a casa para escribir código para varias iniciativas en Gentoo.

Por otro lado, paso tiempo con mi perro Daniel. Vamos al parque todas las mañanas para hacer ejercicio.

2. ¿Por qué Gentoo Hardened? Y, ¿por qué basado en Gentoo y no Debian, Fedora u otro sabor de GNU/Linux?

Primero, ¿por qué Gentoo? Gentoo es una distribución "desde el código", no es como una distribución tradicional. Más o menos creas tu propia distribución cada vez que configuras una nueva máquina con Gentoo. Una vez que tienes los binarios básicos en tu disco duro, depende de tí el cómo vas a recompilar el sistema entero como tú quieres. Ni Debian ni Fedora te dan ésto. Por ejemplo, si quieres construir un sistema sin el módulo de soporte de autenticación PAM, como podría ser para un sistema embebido, ¡puedes! Pero en sistemas con binarios, ésa decisión ya está tomada por tí por parte de los los desarrolladores. Por lo que, si vas a construir una distribución derivada, y quieres construirla a tu manera, como Tin Hat (luego hablaremos de ello), la elección del "padre" en obvia.

La otra razón para elegir Gentoo como raiz de Tin Hat es que también soy desarrollador de Gentoo, trabajo en el kernel y en hardening, por lo que ya estoy familiarizado con las elecciones que he de tomar a nivel de código. Gentoo te da más opciones que Debian, ¡pero no es infinitamente abierto! Nosotros parcheamos código fuente y decidimos qué características añadir o quitar en éste nivel. Por ejemplo, yo sé y estoy involucrado en cómo construimos los binarios ELF, por lo que diseño el sistema en un nivel más bajo.

Finalmente, ¿por qué Hardened? Porque la idea principal detrás de Tin Hat era un sistema que tuviera cero fugas de información. Cuando está funcionando, no queremos que un atacante sea capaz de entrar y ver qué está pasando, y cuando se apaga, ¡no queremos si quiera que un atacante sepa que había un sistema operativo corriendo en la máquina! Por ésto, el hardening es crítico para nuestros propósitos.

3. ¿Podemos decir que Gentoo (Hardened) es una buena distribución para escritorio, o es mejor para otros entornos? ¿Por qué?

Gentoo, hardened u otro, puede ser usado igual para escritorio, servidor o embebido. No hay un entorno en el que es mejor. Pero la carga de construir el sistema está en el usuario. Por lo que, ¡mejor que sepas lo que estás haciendo! Para continuar con mi ejemplo de antes, ¡no debes desactivar PAM a la ligera!

Una vez que lo has diseñado como lo quieres, Gentoo funciona muy bien. Yo prefiero Gentoo en mis escritorios o servidores a Ubuntu (que suelen usar los estudiantes) porque los construyo de forma precisa con las cosas que yo quiero. Raramente sufro la frustración de que un paquete no se genere como yo quiero.

4. ¿Cuáles son las ventajas de portage contra, por ejemplo, APT?

Comparar portage y APT es como comparar manzanas y tomates --- ambos pueden ser rojos, ¡pero por dentro son muy diferentes!

Portage es una suite para compilar paquetes entre dependencias, desde el código, a un sistema funcional. Toda la información está ahí. Desde el código, a la manera en la que tiene que ser compilado para que termine en un sistema coherente.

APT es más restringido en alcance. Resuelve dependencias, descarga, instala los binarios precompilados, y configura los paquetes en el sistema. Portage hace éso también, pero tiene una dimensión extra, en el sentido de que compila el código según las decisiones del usuario. Puedes pensar en portage como en una capa que abstrae las decisiones de los desarrolladores sobre la manera de compilar un paquete para dárselas al usuario final --- nada que ver con APT.

5. ¿Cuales fueron las motivaciones para desarrollar Tin Hat?

Comenzó durante un experimento en una clase de Sistemas Operativos Modernos, dónde estábamos discutiendo la idea de "información cero". ¿Bajo qué condiciones se filtra la información y qué tipo de información es filtrada?

Queríamos un sistema que, al final, ¡ni siquiera filtrara el hecho de que hay un sistema operativo! ¡Información cero!

El usuario podría decir plausiblemente "éste ordenador no tiene nada en él", y que un atacante no fuera capaz de probar que éra incorrecto. Esto es un ideal extremo, pero fuímos en ésa dirección.

Al menos cuando cuando el ordenador se apaga, podemos asegurar que todo es limpiado. Por ello, sería muy difícil probar que el ordenador ha tenido alguna vez algo corriendo en él. Ponemos todo en RAM.

Cuando el ordenador está corriendo, queremos asegurar que el sistema es tan seguro como es posible para que un atacante no pueda entrar de forma remota. Por éso decidimos añadir la cantidad mayor de hardening posible sin hacer el sistema inutilizable.

Esperamos haber llegado a algo atractivo para el usuario paranóico de verdad :)

6. ¿Qué opinas acerca de las mitigaciones activadas en el kernel por defecto?

Ésto es absolutamente necesario a día de hoy, especialmente para exploits 0day.

Es imposible para los desarrolladores escribir código que garantice el 100% de seguridad. No hay humanos que tengan tanta perspicacia para saber cómo se puede abusar del código. Tarde o temprano, hasta el código mejor escrito tendrá alguna fisura que pueda ser aprovechada para un exploit. Por lo tanto, la seguridad se tiene que hacer a varios niveles: los desarrolladores deben escribir de forma tan segura como sea posible (ej: sanitizar la entrada del usuario), las herramientas deben de incluir medidas para prevenir exploits (ej: protección stack smashing) y el kernel debe hacer su parte (ej: prevenir de ejecutar memoria que también se puede escribir).

Núnca tendrás un sistema 100% seguro, pero según te frustras más y más con los vectores de ataque, las posibilidades de una explotación satisfactoria disminuyen.

Ok, puede que un desarrollador no se diera cuenta de que tiene un mapa de memoria en modo lectura/escritura/ejecución en uno de sus plugins, ¡pero PaX lo hace! En primer lugar, él no debería estar desarrollando de ésa forma, pero si ésto ocurre se cae en el siguiente nivel de seguridad.

La forma en la que se trabaja en Gentoo Hardened es que cuando detectamos paquetes que fallan avisamos a los desarrolladores. Cada capa ayuda a mejorar las otras capas y al sistema entero.

7. ¿Por qué grsec/PaX no está incluido por defecto de alguna manera?

Está incluido por defecto en Tin Hat. La máxima seguridad en las herramientas y el kernel está activada mientras el sistema siga siendo usable para escritorio. Una característica no activada por defecto es RBAC, unas reglas de acceso del sistema. Esto es más apropiado en servidores que hacen la misma tarea una y otra vez. Ahí, el sistema RBAC puede aprender la rutina y construir las reglas apropiadas, permitiendo sólo ésas tareas y nada más. En un escritorio, que es lo que Tin Hat pretende ser, RBAC es más difícil de implementar para que no interrumpa el uso normal.

En Gentoo, como parte de la filosofía, depende del usuario final añadir o no añadir el hardening que él quiera, por lo que no incluimos grsec/pax por defecto. No queremos limitar ésa elección. Hay algunos paquetes mal escritos que rompen con algunos aspectos del hardening.

Si el usuario final no quiere seguridad, ¿por qué forzarle?

8. ¿Qué opinas acerca de Qubes OS? ¿La disminución del rendimiento justifica la seguridad en éste caso?

No he mirado Qubes OS en profundidad, pero la seguridad es diferente a la que busca Tin Hat. Qubes OS pretende securizar mediante el aislamiento entre programas utilizando máquinas virtuales ligeras. ¡Ésto no llega a los extremos de ocultar los datos y el sistema operativo entero! El nivel de paranoia es diferente.

Imagina que vives en un régimen represivo dónde las autoridades pueden confiscar tu ordenador y obligarte a descifrar los discos duros. Con Tin Hat, cuando el sistema se apaga, no hay nada que pueda obtener el atacante. No hay nada que "entregar". A lo mejor el atacante puede obtener el sistema de arranque --- un pendrive bootable.

Para ser honestos, yo he tenido sistemas Tin Hat corriendo durante meses. Mientras no haya un fallo eléctrico, el sistema funciona y puede ser borrado en un segundo. Todos los datos que quieras guardar los puedes almacenar de forma remota mediante una conexión cifrada. Puedes bloggear acerca de las violaciones de los derechos humanos utilizando Tor para ocultar tus pasos y no necesitas guardar nada en local.

9. ¿Qué hay de las mitigaciones en los smartphones? Parece que Apple dió el primer paso implementando ASLR en sus dispositivos. ¿Son necesarias las mitigaciones para los últimos dispositivos móviles?

La diferencia entre los dispositivos móviles y los ordenadores está desapareciendo. De hecho, está pasando con todos nuestros dispositivos.

¡No me sorprenderá ver que un día nuestras neveras sean dispositivos con IP para que la compañía pueda loggear y hacer diagnósticos! (O ver qué comidas preferimos) ¿Imaginas virus en redes dónde todos los dispositivos tienen CPUs e IPs?

10. Estudiando las mitigaciones actualues podemos intentar imaginar cómo puede ser el futuro de la explotación. ¿Qué imaginas acerca de ésto?

Es difícil decir lo que puede conseguir el ingenio de alguien para eludir los esfuerzos actuales de las mitigaciones. Ciertamente si tú fueras un escritor de virus, querrías saber todas las técnicas para prevenir su propagación. Ésto incluye saber evadir la detección de los escáners. No sé mucho sobre ese aspecto de la seguridad por lo que no puedo predecir que la dirección de la explotación vaya a ser en esa dirección.

Pero una vez el ataque llega a la máquina, queremos prevenir cualquier tipo de corrupción o abuso de memoria tanto en espacio de usuario cómo de kernel. Éste progreso se está haciendo todos los días por el equipo de grsec y PaX.

Dado que las técnicas de explotación se están cerrando, lo que permanece son agujeros más exóticos que requieren técnicas más concretas. Por ello, no veo que la explotación se esté terminando, pero no vamos a volver a los tiempos del clásico "stack smashing" que afectaba a un alto tanto por ciento de binarios. El número de binarios afectados está disminuyendo y las técnicas se están volviendo más particulares y no tan fáciles de transferir a otras situaciones.

No creo que a estas alturas del juego nos estemos perdiendo una familia de técnicas grande, por lo que las técnicas futuras serán cada vez más limitadas en alcance.

11. ¿Lees blogs? ¿Cuál es tu manera de estar actualizado?

Sigo muchos feeds RSS y estoy en muchas listas de correo. Aquí hay algunas:

Cosas del kernel y seguridad:
- todos los feeds de http://seclists.org
- lkml y muchas listas de http://vger.kernel.org/vger-lists.html

Noticias geeks generales:

12. ¿Cinco herramientas que debes tener en tu ordenador?

um .... sólo necesito tres

busybox, kernel, un destornillador

---------------------

Original en inglés:

1. Tell us something about you, works, hobbies, and what do you do when you don't have your hands on a computer.

I am a professor at D'Youville College in Buffalo, NY. It is a small school of about 3000 students. I am the director of the "Information Technology" program, which is what we call it, but it is more of a computer engineering degree with emphasis on programming and systems design. So most of my life is spent teaching, running servers, and then coming home and writing code for the various initiatives in Gentoo.

However, I do spend time with my dog Daniel. We go to the park every morning where we both get our exercise.

2. Why Gentoo Hardened? And why based on Gentoo and not Debian, Fedora, or other GNU/Linux flavor?

First why Gentoo? Gentoo is a "from source" distribution and so it is not like a traditional distro. You pretty much create your own distro every time you set up a new Gentoo box. Once you get the basic binaries on the hard drive, it is up to you how you will recompile the entire system into what you want. Neither Debian nor Fedora give you that. For example, if you want to build a system with no PAM authentication module support, like you might for an embedded system, you can! But with binary distros, that choice was already made for you by the developers. So, if you're going to build a derivative distro and you want to build it your way, like Tin Hat, the choice of parent is obvious.

The other reason for Gentoo as the parent of Tin Hat is that I am also a Gentoo developer, and work on kernel and tool chain hardening, so I already have familiarity with the choices that are made at the source level. Gentoo gives you more choices than Debian, but its not infinitely open! We patch source code and decide what features to add or remove at that level. So, for example, I know and have input into how we build our ELF binaries and can design the system down to that level.

Finally why hardened? Because the whole idea behind Tin Hat was a system that would leak zero information. When its running, we don't want an attacker to be able to get in and watch whats going on, and when its shut off we don't even want the attacker to know that there was an operating system on the box! So, hardening is critical for our purposes.

3. Can we say Gentoo (Hardened) is a good distribution for desktops, or it is better for other environments? Why?

Gentoo, hardened or otherwise, can be equally used for desktop, server or embedded. There's no environment where it is better. But, the burden is on the user to build the system she wants. So, you'd better know what you're doing! To continue my example above, you don't want to disable PAM lightly! Once built the way you want it, Gentoo works great. I much prefer my Gentoo desktops or servers to Ubuntu (which the students more typically use) because they're build precisely for the kinds of things I want. I seldom feel the frustration of some package not being built the way I wanted it.

4. What are the advantages of portage against, for example, APT?

Comparing portage and apt is like comparing apples and tomatoes --- they may both be red, but their insides are very different! Portage is a suite for building inter dependent packages from source into a functional system. All the information is there for what code is needed and how to build it into a coherent system. Apt is more restricted in scope. It resolves dependencies, downloads, installs the prebuilt binaries, and configures packages on the system. Portage does that too, but has that extra dimension of building the source according to user choices. You can think of portage as an abstraction layer which abstracts the developers' choices about how to build packages and exports that to the end user --- there's nothing like that in apt.

5. What were the motivations to develop Tin Hat?

It began during a thought experiment in a Modern Operating system class in which we were discussing the ideal of "zero information". Under what conditions is information leaked and what kind of information gets leaked? So we wanted a system that, in the end, would not even leak out the fact that it has an Operating System on it! Zero information! The user could plausibly say "this computer has nothing on it", and the attacker would not be able to prove them wrong. This is an extreme ideal but we pushed in that direction. At least when the computer is shut off, we can make sure everything gets wiped. Then it would be very difficult to prove that the computer had ever had anything running on it. So we put everything into RAM. When the computer is running, we want to make sure that the OS is as secure as possible so the attacker can't make headway into it remotely. So we decide to add the most amount of hardening without making the system unusable.

We hope we've come up with something appealing to the truly paranoid user :)

6. What do you think about the mitigations activated in the kernel by default?

This is absolutely necessary today, especially with zero day exploits. It is impossible for developers to write code which guarantees 100% security. No human has that much insight into how code could be abused. Sooner or later, even the best written code will show some crack that can be escalated into an exploit. So security has to be done at multiple levels: the developer must write as securely as possible (eg. sanity checks on user input), the toolchain must include guards to prevent exploits (eg. stack smashing protection) and the kernel must do its part (eg. prevent executing memory which is also writable). You'll never get a 100% secure system, but as you frustrate more and more vectors of attack, the chances of an exploit succeeding will decrease. Okay, maybe the developer didn't catch that he's got a read/write/executable memory mapping in one of his plugins, but PaX did! He shouldn't be coding that way in the first place, but if it happens then you fall back on the next level of security. The way it usual plays out in hardened Gentoo is we see the packages fail and then alert the developers. So each layer helps to improve the other layers and tighten up the system.

7. Why grsec/PaX isn't included by default in some way?

It is included by default in Tin Hat. The maximum toolchain and kernel hardening is turned on while still leaving the system usable as a desktop. One feature not enabled by default is RBAC, a system of mandatory access rules. This is more appropriate on servers which do the same task over and over again. There the RBAC system can learn the routine, construct the appropriate rules, thus allowing only those tasks and nothing more. On a desktop, which is what Tin Hat aims to be, RBAC is harder to implement in such a way that it doesn't restrict normal usage.

In Gentoo, as part of the philosophy, its up to the end user to add or not add as much hardening as she wants, so we don't include grsec/pax by default. We don't want to limit that choice. There are some poorly coded packages which break under some aspects of hardening. If the end user doesn't need the security, why force them!

8. What do you think about Qubes OS? The performance kill justify the security in that case?

I haven't looked at qubes-os in any depth, but security there is different from the security Tin Hat is looking for. Qubes-os aims to secure by isolating programs from one another in light weight vms. It does not aim at the extremes of hiding the data and the entire OS! The level of paranoia is different. Imagine you're living in a repressive regime where the authorities can confiscate your computer and demand that you decrypt the drives. With Tin Hat, once the system is down, there's nothing there for the attacker to get. There is nothing to "hand over". Maybe the attacker can get the boot medium --- a bootable pen drive. But to be honest, I've had Tin Hat systems running for months. As long as there is no power failure, the system runs and can be wiped at a given second. Any data you might want to store you can store remotely and upload/download via some encrypted connection. Or more likely you can blog about human rights abuses using tor to hide your tracks in which case you don't even need to store anything locally.

9. What about mitigations in smartphones? It seems Apple has done the first step implementing ASLR in their devices. Are mitigations necessary for last mobile devices?

The difference between mobile devices and networked computers is disappearing. In fact, this is becoming true of all our devices. I will not be surprising if one day our refrigerators become IP devices so the company can log in and do diagnostics! (Or see what foods we prefer!) Can you imagine viruses wild in network where every appliance in the world has a CPU and an IP address!

10. Studying actual mitigations we can try to imagine how could be future of exploitations. What do you imagine about that?

Its hard to say what cleverness someone might come up with to circumvent current mitigation efforts. Certainly if you were writing viruses, you'd want to know all the techniques in place today to prevent their propagation. This includes such things as evading detection by scanners. I don't know much about that aspect of security so I can't predict what the evolution of exploitation will be in this direction.

But once the attack lands on the box, we really want to prevent any kind of memory corruptions or abuse in either kernelland or userland. There progress is being made every day by the grsec and PaX teams --- like the recent work to constify all kernel pointers which can be made constant. As entire families of exploit techniques get closed off, what remains are more exotic holes requiring more ad hoc techniques. So I don't see exploitation every going away, but we're not going back to the days of classic "stack smashing" that affected some large percentage of binaries. The effected binaries are becoming fewer in number and the techniques are becoming more particular and not as easy to transfer to other situations. I don't think at this stage of the game we're missing any really big family of exploit techniques, so future techniques will be increasingly limited in scope.

11. Do you read blogs? What is you way to be updated?

I follow lots of RSS feeds and I'm on lots of email lists. Here's just a few:

Kernel stuff, security stuff
- http://kernel.org/kdist/rss.xml
- http://feeds.feedburner.com/grsecurity
- http://freshmeat.net/index.atom
- all the feeds from http://seclists.org
- lkml and many of the lists at http://vger.kernel.org/vger-lists.html

General geek news
- http://www.theregister.co.uk/headlines.atom
- http://rss.golem.de/node/feed?category=
- http://slashdot.org/slashdot.rss
- http://digg.com/rss/index.xml

12. Five must-have tools for your computer?

um .... I only need three

busybox, kernel, screw driver

1 comments :

Alejandro Ojeda (opotonil) dijo...

Muy interesante. Nunca me he atrevido ha usar Gentoo Hardened en el escritorio... Principalmente por el software privado que se distribuye en binarios como los drivers de nVidia o el plugin de Flash.