Sun ha publicado una alerta de seguridad para Solaris 9 y 10 que solventa un problema de regresión en sshd que podría causar una denegación de servicio. El fallo está causado porque los siguientes parches introducen un problema de regresión que podría causar que la característica de reenvío de Secure Shell X11 deje de funcionar en los sistemas que estén configurados sólo con interfaces IPv4. Los parches que causan el problema son: Para la plataforma SPARC: Solaris 9 con parche 114356-14 o superior. Solaris 10 con parche 126133-03 o superior. Para la plataforma x86: Solaris 9 con parche 114357-13 o superior. Solaris 10 con parche 126134-03 o superior. Como contramedida para el problema, es posible ejecutar el siguiente comando como usuario root: # ifconfig lo0 inet6 plumb up Más información: A Regression in the Secure Shell Daemon (sshd(1M)) Breaks X11 Forwarding Functionality on IPv4 Only Systems http://sunsolve.sun.com/search/document.do?assetkey=1-66-240906-1
4 Setiembre 2008
27 Agosto 2008
Denegación de servicio por problema de regresión en sshd de Solaris 9 y 10
21 Junio 2008
Actualización del kernel para múltiples productos SuSE Linux

SuSe ha publicado una actualización de kernel que corrige múltiples vulnerabilidades que se describen a continuación. * Denegación de servicio remota causada por un problema en el manejo de túneles modo SIT en Ipv6. * Un atacante remoto podría causar una denegación de servicio en la pila IPSec/IPv6 por medo de paquetes ESP especialmente manipulados. * Desbordamiento de búfer en CIFS que podría permitir a un atacante remoto provocar una denegación de servicio o ejecutar código arbitrario. * Un atacante local podría perpetrar una ataque de denegación de servicio en plataformas x86_64 causando que el equipo dejase de responder. * Se ha solventado una vulnerabilidad de denegación de servicio en DCCP. * La comprobación de permisos en sys_utimensat no se realizaba de forma correcta, lo que podría provocar que un atacante local pudiera cambiar la hora de ciertos archivos para los que no tendría permiso. * Se ha solventado un problema de fuga de información durante el volcado de core de los procesos root. * Desbordamiento de enteros en la función hrtimer_forward (hrtimer.c) en el kernel de Linux corriendo en sistemas de 64 bits que podría permitir a un usuario local causar una denegación de servicio. * Se ha solventado un problema de ordenación en SMP en la función fcntl_setlk que podría permitir a un atacante local ejecutar código arbitrario. * Condición de carrera en dnotify que podría permitir a un atacante local causar una denegación de servicio. * Un fallo en ptrace que podría permitir que un atacante local hiciera que sus propios procesos no respondieran por tiempo indefinido. Se recomienda actualizar a través de las herramientas automáticas YoU (Yast Online Update). Más información: [security-announce] SUSE Security Announcement: Linux kernel (SUSE-SA:2008:030) http://lists.opensuse.org/opensuse-security-announce/2008-06/msg00006.html
15 Junio 2008
Actualización de múltiples paquetes para SuSE Linux

SuSE ha publicado actualizaciones para múltiples paquetes que corrigen diferentes problemas de seguridad. * Actualización de seguridad de Mozilla Thunderbird 2.0.0.14 y mozilla-xulrunner181 que soluciona un problema en el colector de basura JavaScript que podría causar una denegación de servicio. * Dos vulnerabilidades en tkimg al procesar imágenes GIF. * Desbordamiento de enteros al procesar archivos PNG y denegación de servicio al procesar archivos PDF en cups. * Un atacante local que ejecuta un sesión de invitado en QEMU podría saltarse las restricciones de seguridad y acceder al sistema que lo hospeda por medio de imágenes especialmente formateadas. * Ejecución de código arbitrario a través del plugin gstreamer-plugins-good provocada por un fallo en speex. * Denegación de servicio y posible ejecución de código arbitrario a través de archivos nzb especialmente manipulados en PAN. * Ejecución remota de código a través del procesado de XSL-match en libxslt. Se recomienda actualizar a través de las herramientas automáticas YoU (Yast Online Update). Más información: [security-announce] SUSE Security Summary Report SUSE-SR:2008:013 http://lists.opensuse.org/opensuse-security-announce/2008-06/msg00004.html
12 Junio 2008
Actualización del kernel para Debian Linux

Debian ha publicado una actualización del kernel 2.6 de Linux que corrige dos fallos de seguridad que podrían permitir a un atacante remoto ejecutar código arbitrario. Las vulnerabilidades corregidas son: * Se ha descubierto un fallo, no especificado en el descodificador de ASN.1 usado por los subsistemas SNMP NAT y CIFS, que podría provocar un desbordamiento de la memoria intermedia basada en heap. * Se ha descubierto un fallo de validación en la longitud de datos manejados por el subsistema DCCP que podría ocasionar un desbordamiento de memoria intermedia y permitir la ejecución de código arbitrario. Un atacante remoto podría aprovechar estos fallos para efectuar un ataque de denegación de servicio y potencialmente ejecutar código arbitrario. Se recomienda actualizar a través de las herramientas automáticas apt-get. Para la distribución etch el problema ha sido solucionado en la versión 2.6.18.dfsg.1-18etch6. Más información: Debian Security Advisory DSA-1592-1 http://lists.debian.org/debian-security-announce/2008/msg00172.html
9 Junio 2008
Actualización de múltiples paquetes para SuSE Linux

SuSE ha publicado actualizaciones para múltiples paquetes que corrigen diferentes problemas de seguridad. * Se ha solucionado un fallo en xine en la función 'demux_nsf_send_chunk' de 'src/demuxers/demux_nsf.c', al procesar archivos con formato NSF que podría producir un desbordamiento de memoria intermedia basada en pila. Un atacante remoto podría ejecutar código arbitrario a través de archivos NSF especialmente manipulados. * Se ha solucionado un error en xine por la no comprobación de valores negativos en un puntero a una función que participa en la decodificación de cabeceras Speex. Un atacante remoto podría explotar esta vulnerabilidad a través de cabeceras Speex especialmente manipuladas y ejecutar código arbitrario. * XEmacs carga y ejecuta automáticamente archivos fast-lock (.flc), lo que podría permitir a un atacante local ejecutar código arbitrario con los permisos del usuario editando los archivos asociados. * Se ha descubierto un error de validación de entrada en libvorbis que podría provocar que la aplicación que enlace a estas librerías deje de responder o entre en un bucle infinito, o un desbordamiento de memoria intermedia basada en heap. Un atacante remoto podría aprovechar esta vulnerabilidad a través de archivos de sonido Ogg Vorbis que contengan un objeto 'codebook' de dimensión cero. * Se ha descubierto un error de desbordamiento de enteros en libvorbis en el tratamiento de 'quantvals' y del espacio requerido por 'quantlist' que podría causar un desbordamiento de la memoria intermedia. Esto podría ser aprovechado por un atacante remoto para ejecutar código arbitrario a través de archivos de sonido Ogg Vorbis especialmente manipulados. * Speex no maneja de forma correcta los desplazamientos negativos en un campo en particular de la cabecera, lo que podría dar lugar a un desbordamiento de enteros. * Un problema de ejecución de código en openwsman * Problemas de spoofing en pdns-recursor. Se recomienda actualizar a través de las herramientas automáticas YoU (Yast Online Update). Más información: [security-announce] SUSE Security Summary Report SUSE-SR:2008:012 http://lists.opensuse.org/opensuse-security-announce/2008-06/msg00001.html
5 Junio 2008
Denegación de servicio a través de ast_uri_decode en Asterisk
Se ha descubierto un fallo en Asterisk que podría permitir a un atacante remoto efectuar una denegación de servicio. Asterisk es una aplicación de código abierto de una central telefónica (PBX). Como cualquier PBX, se puede conectar un número determinado de teléfonos para hacer llamadas entre sí e incluso conectar a un proveedor de VoIP. Asterisk incluye interesantes características: buzón de voz, conferencias, IVR, distribución automática de llamadas, y otras muchas más. Asterisk funciona en plataformas Linux, BSD, MacOSX, Solaris y Microsoft Windows. Cuando se procesan paquetes SIP en modo "pedantic"' se pasa el valor "From" de las cabeceras a la función ast_uri_decode sin que sea validado. Esto podría ser aprovechado por un atacante remoto para efectuar una denegación de servicio a través de paquetes SIP especialmente manipulados. Se consideran vulnerables todas las versiones anteriores a la 1.2.29 Open Source y B.2.5.3 Business Edition. Se recomienda actualizar a la última versión disponible en: http://www.asterisk.org/downloads Más información: Asterisk Project Security Advisory - AST-2008-008 http://downloads.digium.com/pub/security/AST-2008-008.html 0012607: SIP INVITE msg without "From" field crashes asterisk 1.2.28 if pedantic=yes http://bugs.digium.com/view.php?id=12607
4 Junio 2008
Google… en la linea de comandos
KDE 4.1, lo que se avecina
Instalar la última versión de desarrollo de Compiz Fusion en Ubuntu y Debian

Git es un sistema de control de versiones para facilitar la gestión de un proyecto software, y es el usado por el equipo de desarrollo de Compiz Fusion. Además de la más estable, en dicho sistema está alojada la última versión de desarrollo, con la que trabajan los programadores para seguir mejorando día a día.
Los usuarios avanzados, o aquellos que quieran tener las últimas novedades en su escritorio nada más sacadas del horno, pueden acceder a la versión del Git para actualizar Compiz Fusion y disfrutar de los últimos plugins y novedades. Lógicamente se trata de una versión que posiblemente tenga fallos y que no sea lo más estable del mundo, por ello no se recomienda actualizarla si es un usuario con poca experiencia.
Existe un script muy cómodo para Debian y Ubuntu llamado compiz-git con el que instalar, actualizar y desinstalar automáticamente la última versión en desarrollo.

El script puede descargarse desde http://xs4all.nl/~mgj1/downloads. Para obtenerlo desde el terminal, ejecuta el comando:
wget http://www.xs4all.nl/~mgj1/downloads/compiz-git-newest.tar.gz
Hay que descomprimirlo ejecutando:
tar xvfz compiz-git-newest.tar.gz
y habrá creado un directorio llamado compiz-git al que accederemos para ejecutar el programa con la orden que queramos, según si queremos instalar o actualizar:
cd compiz-gitsudo ./compiz-git install(para instalar)sudo ./compiz-git update(para actualizar)
Debe ser ejecutado con sudo, para tener permisos de superusuario. Mostrará un menú con las distribuciones que soporta el script, actualmente sólo versiones de Debian y Ubuntu. Por ejemplo, para Ubuntu Hardy la opción a elegir es la 7.
Una vez ejecutada la instalación o actualización, el script va mostrando en el terminal las comprobaciones de versiones y de nuevos plugins que va haciendo, así como los mensajes referentes a la compilación e instalación en el sistema operativo. Cuando termine ya estará instalada la última versión de desarrollo de Compiz Fusion.
Es recomendable utilizar Fusion Icon para manejar los gestores de ventanas, recargarlo o seleccionar entre los que haya instalados en el sistema. Lo mejor es añadirlo como un programa que se ejecute al inicio de la sesión.
En caso de querer desinstalar esta versión de desarrollo, sólo habrá que acceder al directorio del script y ejecutar:
sudo ./compiz-git uninstall
Más información | Compiz-Git Script
Página Oficial | Compiz Fusion
2 Junio 2008
Especial Ubuntu: instalación y gestión de software

Hace unos días publicamos en Genbeta el primer post de la serie especial sobre Ubuntu, en el que hablábamos de los orígenes del sistema operativo, de las versiones que han salido hasta hoy y la filosofía que hay detrás del concepto “Ubuntu”. En esta ocasión vamos a centrarnos en la gestión de software y en las herramientas disponibles para la instalación/desinstalación de programas.
Paquetes y programas
Los paquetes son los distintos componentes software, y los programas son, normalmente, un conjunto de paquetes. Habitualmente los proyectos software suelen tener algún sitio en internet donde alojar los diferentes ficheros para que cualquier usuario pueda obtenerlos fácilmente. Estos ficheros pueden ser, por ejemplo, el código fuente del programa o un paquete con extensión .deb para Ubuntu.
Si se descarga el código fuente de un programa, para instalarlo en el sistema hay que compilarlo primero. Compilar, visto de forma muy sencilla, es el proceso de convertir un fichero de texto que contiene órdenes en algún lenguaje de programación en un archivo ejecutable por la máquina. Estos ficheros suelen venir organizados y empaquetados en un archivo comprimido con extensión .tar.gz, aunque no tiene por qué ser necesariamente ese tipo de compresión.
Los paquetes de código fuente generados con las herramientas estándar se construyen e instalan siempre de la misma forma. Primero se configuran los detalles de compilación para esa máquina, después se compila para generar el ejecutable y por último se instala en el sistema. Estas acciones se realizan en orden, teniendo instalado el compilador apropiado para ese programa, con los tres comandos:
./configuremakesudo make install
Normalmente todos los paquetes tienen un fichero de texto llamado README o INSTALL en el que se detallan las instrucciones para instalar el programa y las dependencias que hay que cumplir. También se puede ejecutar el comando ./configure --help para obtener más información sobre la configuración de la compilación.
Otra forma en la que podemos encontrar un paquete es con extensión .deb, lo cual significa que es un paquete específicamente preparado para ser instalado en una distribución basada en Debian. Con este tipo de paquetes y mediante los gestores del propio sistema, se hace mucho más rápida y fácil la instalación y desinstalación de software.
Del mismo modo, otras distribuciones de GNU/Linux también tienen paquetes con una estructura específica preparados para ser instalados fácilmente, como los RPM de Fedora. Son lo mismo que los DEB para Debian/Ubuntu y también tienen sus instaladores automáticos. Incluso existen algunas herramientas como alien para convertir paquetes de un tipo a otro, por ejemplo para pasar un paquete RPM a un DEB.
Las dependencias
Las dependencias de un programa son aquellos paquetes de librerías o de otros programas que se necesita tener previamente instalados en el sistema para su correcto funcionamiento.
Una parte importante de la utilidad de las herramientas actuales de gestión de paquetes en sistemas GNU/Linux es su capacidad para resolver las dependencias. Lógicamente, en este sentido puede suponer un problema para el usuario el querer instalar un programa a partir del código fuente, compilándolo uno mismo. En caso de no tener instaladas previamente todas las dependencias necesarias, al intentar construirlo dará fallos por esa razón y el usuario deberá instalar primero cada una de ellas por separado para proceder con el programa principal.
El sistema de repositorios
Principalmente la instalación de programas en Ubuntu, al igual que muchas distribuciones de GNU/Linux, se basa en un sistema de repositorios. Los paquetes correspondientes a los diferentes programas y librerías se encuentran en un servidor. A su vez, los usuarios tienen alguna aplicación en el sistema que les permite conectarse a ese servidor para elegir el programa que quieren descargar e instalar, así como realizar actualizaciones a nuevas versiones.
El fichero de configuración /etc/apt/sources.list contiene una lista con todos los repositorios de software a los que se accede. Se pueden añadir y quitar editando directamente el fichero o usando alguna herramienta de configuración como la de Sistema -> Administración -> Orígenes del software, en la que vienen preconfiguradas algunas fuentes para activar y desactivar fácilmente, además de poder añadir más líneas de repositorios a nuestro gusto.

Como ya comentamos en el post de puesta a punto de un Ubuntu Hardy recién instalado, la mayoría de los usuarios prefieren activar todas las opciones de Orígenes del software para poder acceder a más aplicaciones y a sus últimas versiones.
La estructura de repositorio de Ubuntu se divide en 4 componentes:
- Main: software libre, con actualizaciones de seguridad y soporte técnico oficial de Ubuntu.
- Universe: sin soporte oficial pero con actualizaciones cuando son ofrecidas a la comunidad, aplicaciones de todo tipo y con más variedad de licencias. Muchos programas de la comunidad libre preparados para el sistema concreto. Algunos proyectos son movidos a Main si consiguen el soporte de desarrolladores que estén dispuestos a garantizar los requisitos de este repositorio.
- Multiverse: licencias que no tienen por qué ser libres, es responsabilidad del usuario el cumplirlas y no es posible que estén soportadas o corregidas oficialmente.
- Restricted: software importante y muy usado, que no es libre pero es “soportado” por Ubuntu, en la medida de lo posible y de lo que permita la licencia. Algunos drivers de tarjetas gráficas están en este componente.
También hay muchos proyectos y páginas web que mantienen sus propios repositorios, que pueden añadirse fácilmente como “repositorios de terceros” en los Orígenes de software del sistema.
Añadir y quitar programas gráficamente
El gestor de software más sencillo e intuitivo de Ubuntu está en la opción del menú principal Añadir/Eliminar… Muestra una ventana con las diferentes categorías de software y permite buscar al vuelo entre los programas del tipo que tú escojas para que muestre: todas las aplicaciones, sólo las libres o sólo las soportadas oficialmente… Si haces doble click sobre un paquete DEB desde el navegador de archivos se abrirá una ventana de GDebi para resolver las dependencias, guiar al usuario e instalar el paquete automáticamente a golpe de ratón.

Synaptic y Adept son dos opciones más avanzadas para instalar y desinstalar programas gráficamente, ya que no sólo muestran los programas completos sino todos los paquetes disponibles en los repositorios. Siguen teniendo una interfaz visual bastante agradable y son muy intuitivos. El primero de ellos utiliza las librerías gráficas GTK y el segundo usa QT, diseñados para funcionar en los entornos Gnome y KDE, respectivamente.

Los dos programas que vienen de serie en Ubuntu. En cualquier caso, se pueden instalar ejecutando:
sudo apt-get install synapticsudo apt-get install adept
Añadir y quitar programas en línea de comandos
APT son las siglas de Advanced Packaging Tool. Es una librería de funciones usadas de forma poderosísima: el usuario elige un programa y la herramienta se conecta a los repositorios, descarga todos los paquetes necesarios (incluyendo todas sus dependencias) y los instala en el orden correcto. Incluso se puede actualizar de una versión a otra del sistema operativo con un solo comando. Hay varias herramientas que usan dichas librerías, las más conocidas son probablemente apt-get y apt-cache.

Algunos ejemplos de uso básico:
apt-cache search music appletapt-cache show nombre_paquetesudo apt-get install nombre_paquetesudo apt-get remove --purge nombre_paquetesudo apt-get updatesudo apt-get upgrade
El primer comando busca en los reporitorios y muestra una lista con los nombres exactos de los paquetes relacionados con las palabras “music” y “applet”. El segundo muestra toda la información de un paquete, el tercero lo instala, el siguiente lo elimina y los dos últimos son, respectivamente, para actualizar la lista de paquetes de los repositorios y para actualizar todos aquellos que tengan una versión posterior a la que hay instalada en el sistema.
Aptitude es una interfaz para APT, sigue ejecutándose en el terminal pero consigue mucha más interactividad y ser una herramienta mucho más flexible. Tiene muchas diferencias con APT, aunque las más visibles de cara al usuario son la interfaz mediante ncurses, la mejora de búsqueda y muestra de los resultados y la desinstalación automática de programas.

Al ejecutar el comando aptitude el programa muestra un menú principal por el que el usuario puede navegar “casi” del mismo modo que con los gestores con interfaz gráfica, pero desde dentro del terminal.
Algunos ejemplos de uso básico de Aptitude, análogos a los de arriba de APT:
aptitude search music appletaptitude search nombre_paquetesudo aptitude install nombre_paquetesudo aptitude remove nombre_paquetesudo aptitude updatesudo aptitude upgrade
Aptitude viene de serie en el sistema, pero si por lo que sea no lo tienes puedes instalarlo ejecutando el comando:
sudo apt-get install aptitude.
Hay fans tanto de APT como de Aptitude, cada uno defiende y valora aspectos en los que uno es mejor que el otro, pero al final se trata de usar el que cada uno prefiera o considere más cómodo.
Dpkg es la madre del cordero en cuanto a la gestión de paquetes software en sistemas basados en Debian, como es el caso de Ubuntu. Instala, desinstala y muestra información sobre los paquetes que se especifican, pero no es capaz de acceder a los repositorios ni de resolver dependencias. Es la herramienta de bajo nivel que usan los gestores de más alto nivel, como los descritos anteriormente.

Algunos ejemplos de uso de Dpkg para instalar, desinstalar y mostrar la lista de paquetes instalados en el sistema:
sudo dpkg -i paquete.debsudo dpkg -r nombre_paquetesudo dpkg -l
Busca y descarga de aplicaciones para Ubuntu
Hemos comentado cuáles son las herramientas principales de gestión de software en Ubuntu, con ellas se puede directamente buscar en los repositorios e instalar cualquier programa que encuentre.
También viene bien saber que Ubuntu mantiene una página web de búsqueda de paquetes en la que se pueden realizar búsquedas avanzadas según nombre, descripción, versión de Ubuntu o repositorio.
Además, están empezando a funcionar los primeros portales de descarga de software con una sección especial dedicada a Ubuntu, como son UpToDown.com y GetDeb.net. En ellos puedes encontrar programas empaquetados en formato DEB que quizá no estén en los sitios oficiales.
Más información | Ubuntu Documentation: Software Management
30 Mayo 2008
Actualización del kernel para Debian Linux 4.x

Debian ha publicado una actualización para el kernel de Debian Linux 4.0 que soluciona varios problemas de seguridad en la rama 2.6 del kernel, que podrían permitir a un atacante causar una denegación de servicio. Las vulnerabilidades corregidas son: * Existe un desbordamiento de enteros en el subsistema hrtimer de las plataformas de 64 bits. Esto podría ser aprovechado por un atacante local para hacer que el kernel ejecute un bucle infinito (denegación de servicio). * Se ha encontrado un fallo que podría permitir a un atacante causar que los sistemas ejecutando el kernel para amd64 deje de responder. * Existe una fuga de memoria en el código de Simple Internet Transition (SIT) usado en los túneles de IPv6 sobre IPv4 que podría ser aprovechada para causar una denegación de servicio. * Se han encontrado problemas en la comprobación del rango de direcciones virtuales de regiones "mmapeadas" (se usa la función mmap para mapear un archivo a un conjunto consecutivo de direcciones en el espacio de direcciones del proceso) en las arquitecturas sparc. Esto podría ser aprovechado por un atacante local para causar una denegación de servicio. Se recomienda actualizar a través de las herramientas automáticas apt-get. Para la distribución etch el problema ha sido solucionado en la versión 2.6.18.dfsg.1-18etch5. Las versiones para linux-2.6/s390 y fai-kernels/powerpc no están disponibles por el momento. Más información: DSA-1588-1 linux-2.6 -- denial of service http://www.debian.org/security/2008/dsa-1588
19 Mayo 2008
Preguntas frecuentes sobre el problema critptográfico de Debian

El problema encontrado en OpenSSL de Debian puede ser considerado,
lamentablemente, un verdadero acontecimiento criptográfico. La
criptografía es una ciencia compleja, y con el ánimo de aclarar las
graves y extensas consecuencias del fallo, hemos redactado una serie
de preguntas frecuentas para intentar, aun tratándose de un tema tan
complejo, arrojar algo de luz.
¿Qué ha pasado exactamente?
Alguien (por error) del equipo de Debian eliminó una línea de código
en el paquete OpenSSL de Debian que ayudaba a generar la entropía al
calcular el par de claves pública y privada. Las claves sólo se
calculaban tomando como semilla el PID del proceso. Al estar limitado
a 32.768 semillas (tantos como PIDs de proceso son posibles) para la
generación de números seudoaleatorios, el número de claves posibles es
pequeño. Se han estado generando las mismas claves dentro de este número
limitado de posibilidades desde septiembre de 2006. Como son pocas y de
entropía pobre, se puede deducir la clave privada a partir de la pública
porque el espacio de primos es muy pequeño y está precalculado. Ya se
han generado listas disponibles para todos con la clave pública (del
espacio a que han quedado limitado después del fallo) y su
correspondiente privada. Para los usuarios de este OpenSSL de Debian
sin entropía suficiente, se han roto las reglas de la criptografía
asimétrica en la que por ahora confiamos todos y que sustentan las bases
de la (poca) seguridad y confianza que pueda existir en Internet.
¿Es tan grave como parece?
Es más grave. Mucho más grave. Podríamos considerar que la criptografía
de Debian en los últimos dos años ha sido una pantomima. Y es grave
además porque no se resuelve por completo parcheando. Esa no es la
solución definitiva. Hay que regenerar claves, revocar las antiguas,
certificarlas en el caso de SSL, comprobar dónde fueron a parar claves
generadas con Debian... No es un bug en un programa que eventualmente
quedará obsoleto porque todo el mundo estará parcheado. Habrá
administradores que no comprueben la debilidad sus claves, servidores
SSL que jamás certifiquen de nuevo sus claves, claves perdidas de
usuarios que dejen la puerta abierta a servidores SSH... También es
grave porque arrastra a decenas de programas y sistemas que se valen de
claves generadas con OpenSSL. SSL, SSH, OpenVPN, DNSSEC... Alguien lo
ha calificado de "apocalipsis criptográfico". Además los principales
perjudicados son los servidores que precisamente hayan buscado más
seguridad con la criptografía de clave pública, porque contenían
información crítica.
El SANS Internet Storm Center ha elevado el nivel de alerta general a
'amarillo'. No ocurre a menudo.
¿Cómo ha podido ocurrir?
Ha sido todo un desafortunado error. Aunque surgirán las teorías
conspiratorias porque el código abierto ha estado ahí durante dos años,
no ha sido hasta que Luciano Bello se ha dado cuenta que se ha corregido
el fallo y se ha dado la voz de alarma. Pero el daño ya está hecho. Dos
años de claves débiles generándose en cientos de miles de sistemas. Ha
pasado desapercibido porque en general cualquier programa es complejo,
pero la criptografía lo es aún más. Además, Bruce Schneier dijo algo así
como 'Good security looks the same as bad security' ('La buena seguridad
se ve igual que la mala', frase aplicable aún más a la criptografía).
Kurt Roeckx fue quien planteó en un principio borrar líneas que
consideraba problemáticas. Existe un correo de 2006 en una lista
pública, en el que Roeckx plantea en una lista de OpenSSL qué pasaría
si las eliminara. Pregunta si resultaría en una posible pérdida de
aleatoriedad. La respuesta no oficial desde OpenSSL es que "no mucho" y
que es partidario de borrarlas si ayuda en la depuración. Y era cierto,
esas líneas no suponían problema: el problema es que en Debian se
borraron más líneas de la cuenta, de las habladas en la conversación
y para colmo los cambios no se enviaron a OpenSSL para que fueran
revisados.
¿Se soluciona parcheando?
No. No se trata de un fallo de seguridad al uso. Ha existido una fuente
de claves inseguras que se han esparcido durante dos años. Hay que
comprobar y regenerar claves. El fallo fue anunciado a la vez que el
parche, pero hay que tener en cuenta, que las primeras versiones de los
parches para Debian y Ubuntu contenían regresiones. Han publicado nuevas
actualizaciones para los propios parches que es necesario aplicar
también.
¿Qué pasa si tengo un servidor web con acceso por HTTPS?
Si las claves han sido generadas con la versión de OpenSSL con el
problema, las consecuencias son que alguien se puede hacer pasar por el
servidor porque tendrá la privada de forma instantánea a partir de la
pública. Además, cualquiera que haya tenido acceso a una conversación
cifrada con el servidor, podría también descifrarla. Esto es así porque
la clave simétrica que se utiliza para el cifrado ha sido intercambiada
con la ayuda de claves asimétricas débiles. Un administrador debe además
revocar la clave, generar una nueva, enviarla a la Autoridad
Certificadora (que cobra por certificar) e instalarla. La catástrofe
hubiese sito total, si una Autoridad Certficadora, hubiese generado
claves y firmado certificados con estas claves débiles, pues el problema
se extendería hacia abajo a todos sus clientes, en cuyos certificados ya
no se podría confiar. Al parecer han comprobado que las principales
Autoridades no se ven afectadas.
¿Qué pasa con SSH?
Los administradores que controlan sus sistemas a través de SSH se suelen
autenticar a través de su clave privada y el servidor de SSH almacena la
pública correspondiente. Esto es más seguro que usar una sola contraseña
simétrica para autenticarse. El servidor cifra una cadena con la clave
pública del que pretende autenticarse y se la envía, si puede
descifrarla le deja pasar. En este caso puede que la clave pública sea
realmente pública o no. En el primer caso, deducir la privada es
instantáneo, y en el segundo caso, si no se conoce la pública, se debe
hacer un ataque de fuerza bruta sobre un espacio de claves muy pequeño,
algo que tarda unos 20 minutos con un ordenador de hoy día. Se ha creado
un exploit para esto.
Todos los administradores que permitan a sus usuarios utilizar la clave
privada para acceder a sus sistemas a través de SSH, deben auditar las
claves para saber si son de las "débiles". Los administradores de SSH
también se encuentran ante una tarea concienzuda, peligrosa, (y que
deben emprender ya) incluso si no utilizan Debian, porque puede que sus
claves hayan sido generadas en una distribución Debian y exportadas.
Los administradores de SSH comprobarán, con total seguridad, como los
intentos de acceso ilegítimo se multiplican en estos días.
¿A Windows le pasó lo mismo?
No. Se demostró que el generador de números aleatorios de Windows era
débil, pero la diferencia es que según el estudio, había que conocer el
estado previo del generador para saber el siguiente cálculo. Esto podría
permitir descifrar conversaciones SSL entre dos sistemas. Pero para
poder llegar a tener acceso a esa información inicial de la que se
deducirían el resto de "estados del algoritmo", un atacante necesitaría
poder tener acceso como administrador en el sistema. Digamos que para
poder aprovechar el problema del algoritmo y poder descifrar la
información, necesitaría tener el total control de la máquina para
llegar a conocer un estado, con lo que el sistema ya estaría
comprometido en sí.
Conclusiones
Lo peor no está ocurriendo ahora. Lo verdaderamente grave ha podido
ocurrir antes (en los últimos dos años si alguien ha conocido este error
y lo hubiese mantenido en secreto) y después (lo que nos espera a medida
que se vaya descubriendo que sistemas importantes ha generado claves
débiles).
Más información:
The Debian OpenSSL disaster
http://blog.drinsama.de/erich/en/linux/2008051401-debian-openssl-desaster.html
Random number generator, uninitialised data and valgrind
http://marc.info/?l=openssl-dev&m=114651085826293&w=2
The Bug
http://metasploit.com/users/hdm/tools/debian-openssl/
http://wiki.debian.org/SSLkeys
Debian and Ubuntu users: fix your keys/certificates NOW
http://isc.sans.org/diary.html?storyid=4420
15 Mayo 2008
Graves problemas en el algoritmo que genera los números aleatorios en Debian

La criptografía en Debian ha sufrido un grave revés. Se ha descubierto que el generador de números aleatorios del paquete OpenSSL de Debian es predecible. Esto hace que las claves generadas con él ya no sean realmente fiables o verdaderamente seguras. El problema tiene (y tendrá por muchos años) una importante repercusión y numerosos efectos colaterales en otros paquetes y distribuciones. Debian ha publicado una actualización para OpenSSL que solventa múltiples vulnerabilidades, siendo la más grave un fallo en el generador de números aleatorios que los volvía predecibles, o sea, "poco aleatorios". Luciano Bello, desarrollador de Debian, daba la voz de alarma. Sólo afecta al OpenSSL de Debian porque esta distribución parchea su propia versión de OpenSSL, a su manera. En este caso, ha eliminado una línea crucial de código que limita el generador a producir sólo 2^18 claves (solamente 262.144), en vez de poder elegir claves de, por ejemplo 2^1.024 posibilidades. Los sistemas de cifrado basados en criptografía asimétrica necesitan del cálculo de números aleatorios para generar claves de sesión, públicas y privadas... se basan en la aleatoriedad en general para un buen funcionamiento. De hecho, su seguridad radica en la aleatoriedad real de esos cálculos: cuanta más entropía, más complicado de predecir y más "calidad" del cifrado. Igual para la generación de claves. El fallo fue introducido en la versión OpenSSL 0.9.8c-1 de septiembre de 2006. Al intentar solucionar un código aparentemente incorrecto con la herramienta Valgrind, se eliminó por error una línea crucial para el sustento entrópico de OpenSSL que nada tenía que ver. Se eliminaron más líneas de código de la cuenta. Valgrind es un programa que detecta y alerta sobre el uso de memoria no inicializada (lo que sería un fallo en cualquier otra aplicación) pero en OpenSSL es legítimo porque se utiliza para ganar entropía. Un claro ejemplo de lo peligroso de intentar solucionar un fallo sin entender completamente el problema, y de introducir cambios no supervisados en este caso, por los desarrolladores oficiales de OpenSSL. A efectos prácticos, se podría deducir la clave privada a partir de la pública de los usuarios, con lo que la criptografía asimétrica, usada en SSL y SSH por ejemplo, deja de ser fiable para la autenticación y para la confidencialidad. Cualquier clave pública o firma, generada por esa versión de OpenSSL en Debian en los últimos dos años... pasa a ser sospechosa y vulnerable. Incluso Debian, como medida preventiva, ha deshabilitado el acceso SSH a sus sistemas centrales. El problema para los administradores de un servidor público con SSL no es pequeño. Los administradores, para empezar, deben tener conocimiento de este desastre. Después, regenerar la clave para que tenga la fortaleza que debe. Y por último, volver a certificarlas, con el coste económico que conlleva según el certificador. Aunque el problema es específico de Debian, puede arrastrar a las numerosas distribuciones basadas en ella. Pero además, puede salpicar a cualquier distribución donde se hayan importado claves débiles. Las claves afectadas son las usadas en SSH, OpenVPN, DNSSEC, claves utilizadas en certificados X.509 y para conexiones SSL/TLS. Las claves generadas con GnuPG o GNUTLS no se ven afectadas porque no usan OpenSSL. Un problema similar se reportó en Windows. En noviembre de 2007, un equipo de investigadores israelíes publicaron un análisis criptográfico sobre el algoritmo usado por Microsoft Windows 2000 y XP para generar números aleatorios, el PRNG (Pseudo-Random Number Generator). Descubrieron que contenía serios problemas en su implementación. Las conclusiones del estudio revelaban (entre otros fallos) que es posible, y relativamente sencillo, predecir los resultados previos y futuros del algoritmo a partir del conocimiento de un estado interno del generador, así como las claves de sesión usadas y las que se usarán en un futuro para cifrar información. Vista no sufría el problema, y Microsoft dijo que lo arreglaría en el Service Pack 3 para XP. Según parece no ha sido así y aunque han mejorado algunas funciones criptográficas con él, no han resuelto este problema en concreto. Debian y Ubuntu han publicado ya actualizaciones para todos los paquetes afectados. El proceso de comprobación de claves y de generación e implantación de nuevos certificados puede ser complejo. Se recomienda a todos los administradores que acudan a los enlaces del apartado de "más información" para actualizar sus sistemas y claves. Más información: [SECURITY] [DSA 1571-1] New openssl packages fix predictable random number generatorç http://lists.debian.org/debian-security-announce/2008/msg00152.html Debian infrastructure ssh key logins disabled, passwords reset http://lwn.net/Articles/281902/
6 Mayo 2008
Cómo ripear un CD de audio en GNU/Linux
Ripear un CD de audio es pasar todas las pistas del soporte multimedia al disco duro del ordenador. Normalmente se pretende tener cada pista en un fichero de audio por separado y convertidos a un formato que ocupe lo mínimo posible y que sea compatible con cualquier reproductor portátil.
En este artículo vamos a comentar algunas herramientas disponibles en GNU/Linux para realizar esta tarea, tanto de forma gráfica en los entornos de escritorio Gnome y KDE como desde el terminal.
Sound Juicer
Es el programa extractor de las pistas de CD’s de audio que viene de serie con el escritorio Gnome, y tiene el aspecto que se ve en la imagen inicial de este post. Lee directamente todos los metadatos del soporte y muestra una lista con todas las pistas del álbum.
En las preferencias de Sound Juicer puede especificarse el directorio donde dejar las pistas ripeadas, así como el patrón de nombres de las carpetas que creará (nombre del artista y álbum, por ejemplo). También permite seleccionar el formato de salida al que quieres convertir las pistas de audio, pudiendo elegir entre OGG, MP3, FLAC o AAC.

Es rápido e intuitivo, completamente integrado en Gnome y con las opciones justas para ser realmente sencillo de usar. Un detalle que no tiene es la capacidad para elegir riperar sólo algunas pistas arbitrarias, y no todo el álbum desde el principio hasta el final.
Desde el navegador de archivos de KDE
Konqueror y Dolphin permiten acceder a las pistas de audio de un CD y copiarlas al disco duro del ordenador en formato WAV o en algún formato comprimido. Para ello, basta con teclear en la barra de direcciones del propio navegador de archivos: audiocd:/.

El navegador nos mostrará las canciones como ficheros de audio y varias carpetas virtuales que referencian a las canciones ya comprimidas en varios formatos. Accediendo a ellas se pueden copiar directamente los archivos y pegarlos en el disco duro, y el propio programa se encarga de realizar realmente la codificación.
K3b
K3b no es sólo la mejor aplicación libre para grabación de CD/DVD, sino que también incorpora una genial herramienta para ripear CD’s de audio fácilmente. Yendo al menú de Tools -> Rip Audio CD muestra la lista completa de canciones del álbum y permite seleccionar cuáles de ellas convertir a ficheros de música en el disco duro del ordenador. En la ventana emergente se puede elegir el formato de salida y la estructura de nombres para llamar a los ficheros creados.

Desde el terminal: CDDA Paranoia y LAME
Si prefieres usar el terminal, puedes utilizar el programa CDDA Paranoia, que viene por defecto en la mayoría de las distribuciones. Esta aplicación permite comprobar qué unidad tiene el CD de audio y pasar todas las pistas del álbum a ficheros en formato WAV en la carpeta donde es ejecutado, mediante el siguiente comando:
cdparanoia -vsZB

Una vez tenemos las canciones en formato WAV, las podemos convertir a algún formato que las comprima para que no ocupen tanto. Yo recomiendo el formato OGG, que es libre y ofrece una gran calidad y compresión de los archivos, aunque también pueden pasarse a MP3 si planeamos escucharlas en algún dispositivo multimedia portátil que no soporte OGG.
Para la conversión a OGG usaremos el comando OggEnc (que se encuentra dentro del paquete Vorbis-Tools), y para MP3 utilizaremos el programa LAME. Ambos están disponibles en los repositorios de la mayoría de las distribuciones.
Conversión a OGG mediante OggEnc (bitrate de 192 kbps):
oggenc nombre_fichero.wav -b 192

Conversión a MP3 mediante LAME (bitrate de 192 kbps):
lame -h nombre_fichero.wav -b 192

Como siempre, tenemos varias alternativas para poder realizar la tarea de ripear un CD de música en un escritorio basado en GNU/Linux. Y cualquiera de ellas funciona a la perfección, así que todo es cuestión de gustos personales.
Página Oficial | CDDA Paranoia, LAME, Vorbis – Setup on Linux, K3b, Sound Juicer
5 Mayo 2008
Actualización del kernel 2.6.x para Debian Linux 4.x

Debian ha publicado una actualización del kernel 2.6.x que corrige varias vulnerabilidades que podrían permitir a un atacante eludir restricciones de seguridad, elevar privilegios o provocar una denegación de servicio. Las vulnerabilidades corregidas son: * Existe un problema al manejar ciertas limitaciones de tiempo RLIMIT_CPU. Esto podría permitir a un atacante eludir ciertas restricciones de seguridad. * El kernel de Linux es propenso a una vulnerabilidad de condición de carrera en 'dnotify.c'. Un atacante podría aprovechar esto para hacer que el sistema deje de responder o elevar privilegios en el sistema vulnerable. * Existe un error en la referencia de un puntero nulo en partes específicas del código de CHPR para plataformas PowerPC. Esto podría ser aprovechado por un atacante local para provocar una denegación de servicio. * Existe un fallo de seguridad, en algunos drivers, que instalan un manejador de fallo y no efectúan comprobación de rangos. Un atacante local podría acceder a la memoria del kernel proporcionando un rango fuera del límite. Para la distribución etch el problema ha sido solucionado en la versión user-mode-linux 2.6.18-1um-2etch.18etch3 y fai-kernels 1.17+etch.18etch3. Para la distribución sid no se ha publicado parche aun. Más información: DSA-1565-1 linux-2.6 -- several vulnerabilities http://www.debian.org/security/2008/dsa-1565
30 Abril 2008
Medibuntu, porque la vida puede ser maravillosa

En la entrada anterior pudimos ver de reojo una joya llamada Medibuntu, pero desde mi punto de vista no la resaltó tanto como se merece, así que aquí va una entrada en “profundidad”.
¿Que es Medibuntu? Simple y llanamente unos repositorios donde podemos encontrar todos esos paquetes libres y no libres que no se pueden distribuir en los repositorios oficiales por problemas de licencias, patentes y demás cuestiones legales nacionales e internacionales. En un mundo ideal, esos paquetes no serian “apetecibles” para los usuarios, pero lamentablemente todavía hay ocasiones que estamos obligados a usar software privativo.
Aparte de la comodidad de tener todas esas aplicaciones de terceros a un click, Medibuntu nos hace la vida más fácil a los intrépidos que disponemos de sistemas de 64 bits, ya que todos los paquetes están listos para usarse en esta plataforma. Es decir, ya no hace falta ir por la web buscando las versiones de 64 bits de Acrobat Reader, Google Earth o Skype, porque están disponibles en este repositorio.
Además de estas tres aplicaciones (versiones Intel 32 bits, Intel 64 bits y PPC), los paquetes estrella son los codecs necesarios para visualizar DVD sin problemas y los codecs para casi todos los demás tipos de vídeo y audio propietarios (wma, wmv, mov…), por supuesto disponible también para cualquiera de estas tres plataformas.
Por otro lado tenemos una recompilación de reproductores como Amarok, Kaffeine o Mplayer, cuyos paquetes disponibles en Ubuntu están “capados” por problemas legales, y que desde aquí podremos instalar fácilmente. Para acabar, tenemos otros paquetes sueltos como los componentes para trabajar con AMR y FAAC, una versión sin censura de ffmpeg y hot-babe, un programa para… esto lo dejo para que lo descubráis vosotros mismos.
Aunque la página de ayuda que podéis encontrar en el wiki de Ubuntu es bastante explicativa, como está en inglés os voy a ahorrar la molestia y detallaros la instalación de este repositorio en Ubuntu 8.04:
- Primero vamos a añadir los repositorios: vamos a una terminal, copiamos/pegamos este comando y le damos a enter.
sudo wget http://www.medibuntu.org/sources.list.d/hardy.list -O /etc/apt/sources.list.d/medibuntu.list
- Ahora, vamos a añadir la clave GPG de estos repositorios, para que nuestro sistema no se queje. Lo mismo, en una terminal:
sudo apt-get update && sudo apt-get install medibuntu-keyring && sudo apt-get update
- Ya está preparado, ahora solo nos queda añadir los paquetes mediante Sistema->Administración->Gestor de paquetes Synaptic o mediante la terminal con nuestra utilidad preferida. Los paquetes más interesantes se llaman así:
- libdvdcss2 – Para la reproducción de DVD.
- non-free-codecs – Para el resto de codecs propietarios, todas las plataformas.
- acroread – Acrobat Reader, instala también acroread-plugins si quieres tener todos los extras
- mozilla-acroread – ¡El plugin para ver pdf dentro de Firefox!
- googleearth – La última versión de la aplicación más espectacular de Google.
- skype – Adivina…
- mplayer , amarok , kaffeine , k3b , ffmpeg – La versión completa y sin restricciones de estas aplicaciones libres. Si ya las tenías, se actualizan automáticamente.
- hot-babe – Ejem…
Recuerda que si solo te interesan las aplicaciones libres de Medibuntu, es decir, aquellas que no se incluyen al 100% en Ubuntu por restricciones en solo algunos países, puedes encontrar las instrucciones en el wiki de Ubuntu. Por ejemplo, la librería necesaria para leer DVD sigue siendo ilegal en EEUU, pero en España y otros países no.
Enlace | Medibuntu, wiki de Ubuntu
Enlace | Medibuntu
