Package: devscripts Version: 2.10.41 Severity: serious Tags: patch security Justification: Vulnerable to symlink attacks (unless I'm mistaken).
Hi, mktemp(1) says it all: ,-- | The trailing ‘Xs’ are replaced with a combination of the cur‐ | rent process number and random letters. The name chosen | depends both on the number of ‘Xs’ in the template and the num‐ | ber of collisions with pre-existing files. The number of | unique filenames mktemp can return depends on the number of | ‘Xs’ provided; ten ‘Xs’ will result in mktemp testing roughly | 26 ** 10 combinations. `-- but your usage of mktemp is bogus, since .$2 is appended to the X's. The attached patch fixes this (I used local set -x/+x to check the filenames). I only happened to discover this bug after signing was aborted (I wanted to have an extra look at a package, so I hit “cancel” in pinentry), and when running debsign the 2nd time on the very same package, nothing was happening. strace'ing pointed to the same file being tried again and again, with all X's, since that file didn't go away after the aborted signing step. Since the filename is predictable, I guess debsign is vulnerable to symlink attacks and the like (although I'm no security crack, etc., sorry if I'm overthinking the consequences of this bug). Mraw, KiBi. -- Package-specific info: --- /etc/devscripts.conf --- --- ~/.devscripts --- export BTS_MAIL_READER='mutt -F ~/mail/SOMEFILEYOUDONTHAVETOKNOWABOUT.rc -f %s' -- System Information: Debian Release: lenny/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: amd64 (x86_64) Kernel: Linux 2.6.28-rc6-kibi-00189-g15d1ff2 (SMP w/2 CPU cores) Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages devscripts depends on: ii dpkg-dev 1.14.23 Debian package development tools ii libc6 2.7-16 GNU C Library: Shared libraries ii perl 5.10.0-18 Larry Wall's Practical Extraction Versions of packages devscripts recommends: ii at 3.1.10.2 Delayed job execution and batch pr ii bsd-mailx [mailx] 8.1.2-0.20081101cvs-2 A simple mail user agent ii bzr 1.5-1.1 easy to use distributed version co ii curl 7.18.2-7 Get a file from an HTTP, HTTPS or ii cvs 1:1.12.13-12 Concurrent Versions System ii dctrl-tools 2.13.0 Command-line tools to process Debi ii debian-keyring 2008.11.30 GnuPG (and obsolete PGP) keys of D ii debian-maintainers 1.49 GPG keys of Debian maintainers ii dput 0.9.2.36 Debian package upload tool ii epiphany-gecko [ww 2.22.3-8+b1 Intuitive GNOME web browser - Geck ii equivs 2.0.7-0.1 Circumvent Debian package dependen ii fakeroot 1.11 Gives a fake root environment ii git-core 1:1.5.6.5-1 fast, scalable, distributed revisi ii gnupg 1.4.9-3 GNU privacy guard - a free PGP rep ii konqueror [www-bro 4:3.5.9.dfsg.1-5 KDE's advanced file manager, web b ii libauthen-sasl-per 2.12-1 Authen::SASL - SASL Authentication ii libcrypt-ssleay-pe 0.57-1+b1 Support for https protocol in LWP ii libparse-debcontro 2.005-2 Easy OO parsing of Debian control- ii libsoap-lite-perl 0.710.08-1 Client and server side SOAP implem ii libterm-size-perl 0.2-4+b1 Perl extension for retrieving term ii libtimedate-perl 1.1600-9 Time and date functions for Perl ii liburi-perl 1.35.dfsg.1-1 Manipulates and accesses URI strin ii libwww-perl 5.820-1 WWW client/server library for Perl ii libyaml-syck-perl 1.05-1 Fast, lightweight YAML loader and ii links [www-browser 2.2-1 Web browser running in text mode ii lintian 2.1.0 Debian package checker ii lsb-release 3.2-20 Linux Standard Base version report ii man-db 2.5.2-3 on-line manual pager ii mercurial 1.0.1-5.1 Scalable distributed version contr ii openssh-client [ss 1:5.1p1-4 secure shell client, an rlogin/rsh ii patch 2.5.9-5 Apply a diff file to an original ii patchutils 0.2.31-4 Utilities to work with patches ii strace 4.5.17+cvs080723-2 A system call tracer ii subversion 1.5.1dfsg1-1 Advanced version control system ii unzip 5.52-12 De-archiver for .zip files ii w3m [www-browser] 0.5.2-2+b1 WWW browsable pager with excellent ii wdiff 0.5-18 Compares two files word by word ii wget 1.11.4-2 retrieves files from the web Versions of packages devscripts suggests: ii build-essential 11.4 Informational list of build-essent pn cvs-buildpackage <none> (no description available) ii devscripts-el 29.4-1 Emacs wrappers for the commands in ii gnuplot 4.2.4-4 A command-line driven interactive pn libfile-desktopentry-perl <none> (no description available) pn libnet-smtp-ssl-perl <none> (no description available) ii mutt 1.5.18-4 text-based mailreader supporting M ii svn-buildpackage 0.6.23 helper programs to maintain Debian -- no debconf information
--- a/scripts/debsign.sh +++ b/scripts/debsign.sh @@ -116,7 +116,7 @@ local filename if ! [ -w "$(dirname "$1")" ]; then - filename=`mktemp -t "$(basename "$1").XXXXXXXXXX.$2"` || { + filename=`mktemp -t "$(basename "$1").$2.XXXXXXXXXX"` || { echo "$PROGNAME: Unable to create temporary file; aborting" >&2 exit 1 }