Escalamiento de privilegios en la rama 2.6.x del kernel de Linux

Leímos en Hispasec que se descubrió una vulnerabilidad en el kernel de Linux que permitiría escalamiento de privilegios, por lo que cualquier usuario normal podría volverse root.

La vulnerabilidad se debe a una función llamada readlink. Hasta el momento no se ha publicado ningún exploit, pero es uno de los problemas más graves a los que se ha enfrentado Linux ya que toda una rama que se creía segura es vulnerable antes de la versión 2.6.28.1

(Actualización: 29-Ene-2009. Damián)

Como bien explican aquí, la vulnerabilidad se debe a que el valor de retorno de la función readlink puede ser negativo y al no haber validación se podría provocar un buffer underflow. El código problemático se encuentra en la función follow_link en fs/encryptfs/inode.c. Por lo que sólo serían vulnerables aquellos sistemas linux que utilicen el sistema de archivos eCryptfs.

¿Cómo cambiar los permisos a los archivos del Buzón de Entrega automáticamente en tu Mac?

Muchos habrán sufrido el tener que cambiar los permisos a mano a los archivos en el Buzón de Entrega, tal como yo lo hice, y hoy me puse a investigar como hacerlo asi que les dejo un script que lo hace, lo unico que tienes que hacer es:

Abrimos cualquier editor de textos y copiamos y pegamos este código tomando en cuenta cambiar el usuario por el nuestro.

on adding folder items to thefolder after receiving theAddedItems
	set com to "sudo chown -R usuario:staff "
	repeat with fle in theAddedItems
		set command to com & quoted form of POSIX path of fle
		do shell script command
	end repeat
end adding folder items to

Lo guardamos como BuzonEntrega.scpt

Nos vamos a la carpeta /Library/Scripts/Folder Action Scripts y copiamos ahi el archivo.

Folder Acciones

Ahora abrimos la Terminal y cambiamos los permisos de ese archivo:

sudo chmod 775 /Library/Scripts/Folder\ Action\ Scripts/BuzonEntrega.scpt
sudo chown root:admin /Library/Scripts/Folder\ Action\ Scripts/BuzonEntrega.scpt

Ahora hacemos click derecho en el Buzón de Entrega nos vamos a Más y hacemos click en configurar acciones de carpeta como se muestra en la imagen:

Acciones de Carpeta

Ahora en caso de que no esten activadas las acciones lo hacemos palomeando el checkbox

Hacemos click en el signo de más, seleccionamos de nuevo la carpeta de buzón de entrega y seleccionamos el script nuevo BuzonEntrega.scpt

Acciones

Listo! ahora podremos disfrutar de no volver a tener que cambiar permisos en esa carpeta.

(Fuente: Maxosxhints)

Artículo sobre biometría

Muy interesante artículo de Bruce Schneier sobre Biometría:

One more problem with biometrics: they don’t fail well. Passwords can be changed, but if someone copies your thumbprint, you’re out of luck: you can’t update your thumb. Passwords can be backed up, but if you alter your thumbprint in an accident, you’re stuck. The failures don’t have to be this spectacular: a voice print reader might not recognize someone with a sore throat, or a fingerprint reader might fail outside in freezing weather. Biometric systems need to be analyzed in light of these possibilities.

El Keynote de Phil Schiller

Muchos se han quejado que Steve Jobs no haya salido en Keynote que se presentó hoy y hasta lo han calificado como el Keynote más aburrido de la historia. A mi la verdad me parece exagerado, aunque ciertamente Steve Jobs tiene un carisma muy por encima de Phil Schiller no creo que haya sido pésimo ni nada por el estilo. Además según Steve Jobs dijo se debe a sus problemas de salud, asi que tampoco creo que se vaya a acabar el mundo porque Steve Jobs no aparezca en un keynote, según él mismo dice en una carta abierta (versión en español), parece que el problema se ha solucionado y en unos meses volverá todo a la normalidad, esperemos que asi sea.

Dejo esta imagen muy buena que encontré en Appleweblog

joyoftech1

Por otra parte los nuevos productos que anunció Apple como el iLife 09 con el nuevo reconocimiento de caras me parece increible, igual que el iMovie con sus nuevas características. Todo eso y más lo pueden ver en la página web de apple, como siempre Apple no nos decepciona.

Cambiar los colores en la Terminal de Leopard sin instalar ningún extra

terminal

Quienes usen mucho la terminal en Leopard se habrán dado cuenta que toda tiene el mismo color, a lo mucho se pueden poner temas pero sigue siendo siempre un solo color para el texto y otro para el background, y en linux, en cambio, tiene diferentes colores para los directorios, archivos ejecutables y demás.

La solución sin instalar absolutamente ningun programa extra es abrir la Terminal y escribir esto:

nano .profile

Lo cual nos abrirá un archivo existente si intenta crear uno nuevo quiere decir que algo salió mal, ahora al final del archivo agregamos las líneas:

alias ls='/bin/ls -G'
export LSCOLORS=ExGxExGxCxGxDxhbHbacEh

Guardamos el archivo:
Presionamos Ctrl + X, nos preguntará si queremos guardar y le decimos que si presionando Y, luego presionamos enter y listo.

Cerramos la Terminal y al volverla a abrir aparecerán los nuevos colores.

Esos colores estan pensados para verse bien con el tema Homebrew y sin iguales a los default de debian, si quieren hacer sus propias combinaciones:
La primera letra representa el color del texto y la segunda el color de fondo:
a black
b red
c green
d brown
e blue
f magenta
g cyan
h light grey
A bold black, usually shows up as dark grey
B bold red
C bold green
D bold brown, usually shows up as yellow
E bold blue
F bold magenta
G bold cyan
H bold light grey; looks like bright white
x default foreground or background

Y la combinación es la siguiente:
Pair 1 (ex) - directories
Pair 2 (fx) - symbolic links
Pair 3 (cx) - sockets
Pair 4 (dx) - pipes
Pair 5 (bx) - executable files
Pair 6 (eg) - block special
Pair 7 (ed) - character special
Pair 8 (ab) - executable with setuid bit set
Pair 9 (ag) - executable with setgid bit set
Pair 10 (ac) - directory writable to others, with sticky bit
Pair 11 (ad) - directory writable to others, without sticky bit

Pueden ver más información en el foro de discusión de apple en la última respuesta

Modelo Entidad Relación con el menor número de cruces

Problema

Hace ya varios meses al estar desarrollando un software bastante complejo, que requería una base de datos muy grande, nos enfrentamos al problema de cómo poder visualizar un diagrama entidad-relacion de la forma más legible posible. Intentamos con MySQL Workbench, el cual nos dibujó las tablas con sus relaciones pero desgraciadamente todas juntas y teníamos que acomodarlas a mano; lo cual además de llevar tiempo, es difícil, pues llegar a un modelo que tenga el menor número de cruces y sea fácil de entender es una tarea casi imposible. Así que buscamos en Google un programa que pudiera dibujar de una forma estética nuestra base de datos, y aunque algunos lo prometían ninguno lo hacía.

Historia

Buscamos un algoritmo que se encargara de distribuir gráficas con el menor número de cruces, lo que se conoce como aplanamiento de gráficas y encontramos uno llamado dibujado ortogonal, que nos pareció el más estético para dibujar un digrama EER. Encontramos gran cantidad de documentos de investigación que hacían alusión a un algoritmo publicado por Kandinsky, pero en ninguna parte pudimos encontrar el pseudo código o algún documento más detallado de ese algoritmo. Seguimos buscando y encontramos otros programas que servían para acomodar diagramas UML y algunos con el menor número de cruces. Notamos que muchos usaban un formato de archivo llamado GML y encontramos su especificación. GML significa Graphics Modeling Language y fue un poco difícil de encontrar porque hay otro formato de archivo con el mismo nombre que siginifica Geographic Modeling Language.

Después de un día de búsqueda encontramos un framework para diferentes tipos de dibujado de gráficas llamado OGDF, librería escrita en C++ y de código abierto. Para nuestra sorpresa esa librería recibe un archivo GML para procesarlo y devuelve otro de igual formato procesado.

Idea

Al ver que no había un programa que te hiciera todo el proceso completo, desde conectarse a la base de datos, obtener su estructura, procesarla, graficarla con el menor número de cruces y presentarla tuvimos una idea:

¿Por qué no hacer un programa que obtenga la estructura de la base de datos junto con sus relaciones, genere un archivo .GML y lo pase a un programa que use la librería OGDF, luego lea el archivo procesado y dibuje las tablas en la posición adecuada?

Nuestra solución

- Java
Inicialmente lo solucionamos haciendo un programa escrito en Java, que se conectara a la base de datos MySQL, obtuviera su estructura mediante SHOW TABLES, DESCRIBE tabla, y con el código de creación de la tabla obtuviera las llaves foráneas y se encargara de relacionar las tablas y generar un archivo GML válido con la estructura y las relaciones.

- C++
Ahora mirando en OGDF notamos que había un How To, lo copiamos, modificamos un poco y compilamos, generando un binario que lee dos parámetros, el archivo fuente y la ruta del archivo GML a donde queremos guardar el procesamiento.

- Conectar Java y C++
Nos dispusimos a conectar los dos programas, llamando al binario de OGDF desde nuestro programa en Java y luego nuevamente leer el GML, parsearlo y relacionar con las tablas que estaban en memoria.

Hasta este punto ya teníamos solucionado todo, ahora solo faltaba dibujarlo.

Dibujarlo
Pensamos en un momento dibujarlo en Java, el problema iba a ser que Java no es exactamente lo más amigable para dibujar, y había otro problema, a lo largo del desarrollo del programa pensamos que sería una buena idea liberarlo bajo la GPL y poner el código a disposición de todos y fue cuando se nos ocurrió una idea: ¿porqué no volver todo este programa una aplicación web y abrirla al público?, pero ¿cómo podríamos solucionarlo?

- PHP y Flash
Pensamos que era fácil simplemente crear un formulario que pidiera el acceso a la base de datos, llamara del lado del servidor a nuestro programa en Java y así podríamos generar un XML que leyera una aplicación en Flash, además por medio de Actionscript lo dibujara y agregara comportamientos como arrastrar que hiciera más facil la interacción del usuario.

Diagrama Entidad Relación Procesado- Conectar Java, C++, PHP, Flash
Lo hicimos, y nuestro programa en Java después de haber leido y parseado el GML generó un XML con la estructura y coordenadas, que luego Flash leería mediante Actionscript y dibujaría obteniendo una representación interactiva de la base de datos como se muestra en la imagen.

Código Abierto
Después de algunos ajustes liberamos el código de Java, C++, Flash, PHP y Actionscript bajo la GPL y siendo nuestro primer programa que liberamos bajo esa licencia nos sentimos muy felices. Para mi fue como un logro que desde hace tiempo quería hacer, pues siempre nos ha ayudado enormemente el código abierto y nunca habíamos regresado el favor.

Ahora tenemos pensado liberar otros algoritmos y scripts que tenemos guardados bajo GPL, y creamos una sección para todo ese Software en nuestra página, que según tenemos pleaneado irá creciendo poco a poco.

Nos sentimos muy bien de poder colaborar con la Open Software Foundation, e invitamos a otras compañías que tienen mucho software detenido que lo liberen y aporten algo a la comunidad.

La versión en línea de nuestro programa se encuentra disponible al público y esperemos que lo aprovechen.

Con este software nuevo esperamos que este año que apenas comienza aportemos mucho más a la comunidad del software libre.

¡ Feliz año 2009 !

I Love Stars programa para puntuar tu música de iTunes rápidamente

Para mi siempre ha sido un problema ponerle estrellas a las canciones de iTunes que estoy escuchando pues a veces estoy trabajando y por no distraerme se me olvida ponerle estrellas a una cancion que me gusta.

Puntuar musica itunes

Ahora con I Love Stars puedes ponerle rápidamente una calificación a la música como se muestra en la imagen, me parece muy util este software pues puede ayudar mucho a tener bien organizada tu librería de iTunes.

(Vía: Applesfera)
(Descarga)