Aviso de seguridad de Debian

DSA-379-1 sane-backends -- varias vulnerabilidades

Fecha del informe:
11 de sep de 2003
Paquetes afectados:
sane-backends
Vulnerable:
Referencias a bases de datos de seguridad:
En la base de datos de Bugtraq (en SecurityFocus): Id. en BugTraq 8593, Id. en BugTraq 8594, Id. en BugTraq 8595, Id. en BugTraq 8596, Id. en BugTraq 8597, Id. en BugTraq 8600.
En el diccionario CVE de Mitre: CVE-2003-0773, CVE-2003-0774, CVE-2003-0775, CVE-2003-0776, CVE-2003-0777, CVE-2003-0778.
Información adicional:

Alexander Hvostov, Julien Blache y Aurelien Jarno descubrieron varios problemas relacionados con la seguridad en el paquete sane-backends, que tiene una biblioteca API para escáneres con un demonio de escaneo (en el paquete libsane) que podían aprovecharse remotamente. Estos problemas permitían a un atacante remoto provocar un fallo de segmentación y/o consumir cantidades arbitrarias de memoria. El ataque podía llevarse a cabo aunque el computador del atacante no estuviera listado en saned.conf.

Sólo es vulnerable si tiene en funcionamiento saned, p. ej. desde xinetd o desde inetd. Si las entradas respectivas en el archivo xinetd o inetd están comentadas o no existen, está a salvo.

Pruebe «telnet localhost 6566» sobre el servidor que esté corriendo saned. Si recibe «connection refused» (n. t. conexión rechazada), saned no está corriendo y está a salvo.

El proyecto Common Vulnerabilities and Exposures (n. t. Vulnerabilidades y exposiciones comunes) identifica los siguientes problemas:

  • CAN-2003-0773:

    saned comprobaba la identidad (dirección IP) de la máquina remota sólo tras ocurrir la primera comunación (SANE_NET_INIT). Por tanto, cualquiera podía enviar ese RPC, aunque la máquina remota no estuviera autorizada para escanear (no listada en saned.conf).

  • CAN-2003-0774:

    saned carecía de verificación de errores en casi todos los sitios del código. Además, las liberaciones de conexiones se hacían demasiado tarde. Si no se detectaba la liberación de la conexión, el acceso al buffer interno podría sobrepasar los límites de la memoria ubicada. Por tanto, tras la lectura aleatoria de memoria «posterior» al buffer sucedía un fallo se segmentación.

  • CAN-2003-0775:

    Si saned esperaba cadenas de caracteres, ubicaba la memoria necesaria para almacenar la cadena tras recibir el tamaño de la cadena. Si la conexión se liberaba antes de transmitir el tamaño, malloc reservaría un tamaño arbitrario de memoria. Según ese tamaño y la cantidad de memoria disponible, o bien malloc fallaba (->saned salía del modo correcto) o bien se reservaba una enorme cantidad de memoria. Según el núcleo, podrían producirse incrementos de intercambio de páginas y de OOM.

  • CAN-2003-0776:

    saned no verificaba la validez de los números RPC que obtenía antes de recoger los parámetros.

  • CAN-2003-0777:

    Si estaban activados los mensajes de depuración y se liberaba una conexión, las cadenas de caracteres no terminadas en nulo se podrían mostrar y podrían ocurrir fallos de segmentación.

  • CAN-2003-0778:

    Era posible ubicar una cantidad arbitraria de memoria en el servidor que estuviera corriendo saned aunque la conexión no se hubiera liberado. Por ahora, y según el autor, este problema no se ha podido corregir de forma sencilla. Se puede usar un límite mejor para la cantidad total de memoria (ulimit).

Para la distribución estable (woody), este problema se ha corregido en la versión 1.0.7-4.

Para la distribución inestable (sid), este problema se ha corregido en las versiones 1.0.11-1 y posteriores.

Le recomendamos que actualice el paquete libsane.

Arreglado en:

Debian GNU/Linux 3.0 (woody)

Fuentes:
http://security.debian.org/pool/updates/main/s/sane-backends/sane-backends_1.0.7-4.dsc
http://security.debian.org/pool/updates/main/s/sane-backends/sane-backends_1.0.7-4.diff.gz
http://security.debian.org/pool/updates/main/s/sane-backends/sane-backends_1.0.7.orig.tar.gz
Alpha:
http://security.debian.org/pool/updates/main/s/sane-backends/libsane_1.0.7-4_alpha.deb
http://security.debian.org/pool/updates/main/s/sane-backends/libsane-dev_1.0.7-4_alpha.deb
ARM:
http://security.debian.org/pool/updates/main/s/sane-backends/libsane_1.0.7-4_arm.deb
http://security.debian.org/pool/updates/main/s/sane-backends/libsane-dev_1.0.7-4_arm.deb
Intel IA-32:
http://security.debian.org/pool/updates/main/s/sane-backends/libsane_1.0.7-4_i386.deb
http://security.debian.org/pool/updates/main/s/sane-backends/libsane-dev_1.0.7-4_i386.deb
Intel IA-64:
http://security.debian.org/pool/updates/main/s/sane-backends/libsane_1.0.7-4_ia64.deb
http://security.debian.org/pool/updates/main/s/sane-backends/libsane-dev_1.0.7-4_ia64.deb
HPPA:
http://security.debian.org/pool/updates/main/s/sane-backends/libsane_1.0.7-4_hppa.deb
http://security.debian.org/pool/updates/main/s/sane-backends/libsane-dev_1.0.7-4_hppa.deb
Motorola 680x0:
http://security.debian.org/pool/updates/main/s/sane-backends/libsane_1.0.7-4_m68k.deb
http://security.debian.org/pool/updates/main/s/sane-backends/libsane-dev_1.0.7-4_m68k.deb
Big endian MIPS:
http://security.debian.org/pool/updates/main/s/sane-backends/libsane_1.0.7-4_mips.deb
http://security.debian.org/pool/updates/main/s/sane-backends/libsane-dev_1.0.7-4_mips.deb
Little endian MIPS:
http://security.debian.org/pool/updates/main/s/sane-backends/libsane_1.0.7-4_mipsel.deb
http://security.debian.org/pool/updates/main/s/sane-backends/libsane-dev_1.0.7-4_mipsel.deb
PowerPC:
http://security.debian.org/pool/updates/main/s/sane-backends/libsane_1.0.7-4_powerpc.deb
http://security.debian.org/pool/updates/main/s/sane-backends/libsane-dev_1.0.7-4_powerpc.deb
IBM S/390:
http://security.debian.org/pool/updates/main/s/sane-backends/libsane_1.0.7-4_s390.deb
http://security.debian.org/pool/updates/main/s/sane-backends/libsane-dev_1.0.7-4_s390.deb
Sun Sparc:
http://security.debian.org/pool/updates/main/s/sane-backends/libsane_1.0.7-4_sparc.deb
http://security.debian.org/pool/updates/main/s/sane-backends/libsane-dev_1.0.7-4_sparc.deb

Las sumas MD5 de los ficheros que se listan están disponibles en el aviso original.