Package: nvi
Version: 1.79-25
Severity: grave
Tags: security patch

Hi everyone, 

Going through the list of packages listed at [1] I noticed the overrides are 
completely wrong and it *is* a security issue. I verified versions 1.79-25 
and 1.81.6-3 (etch and lenny, respectively) of the package and are both 
affected.

An attacker could create /var/tmp/vi.recover as a symlink pointing to some 
directory (e.g. /) and abuse the code in the postinst script to make it 
a+wxr.

The code portion follows:
if [ $1 = "configure" ] ; then
    [ -d /var/tmp/vi.recover ] || mkdir -p /var/tmp/vi.recover
    chown root:root /var/tmp/vi.recover
    chmod 1777 /var/tmp/vi.recover
fi

The main mistake is to ignore any possible failure of mkdir to create the 
directory (probably because it already exists, and might not be a directory).

Attached is a simple patch that aborts the execution of the postinst if mkdir 
fails, of course a better way to do it would be to use 'set -e' and review 
the usage of /var/tmp/vi.recover.

[1]http://lintian.debian.org/tags/possibly-insecure-handling-of-tmp-files-in-maintainer-script.html

Kind regards,
-- 
Atomo64 - Raphael

Please avoid sending me Word, PowerPoint or Excel attachments.
See http://www.gnu.org/philosophy/no-word-attachments.html
diff -urN nvi-1.81.6.orig/debian/postinst nvi-1.81.6/debian/postinst
--- nvi-1.81.6.orig/debian/postinst	2008-08-24 17:10:47.000000000 -0500
+++ nvi-1.81.6/debian/postinst	2008-08-24 17:14:39.000000000 -0500
@@ -11,7 +11,7 @@
   --slave /usr/share/man/man1/editor.1.gz editor.1.gz /usr/share/man/man1/nvi.1.gz
 
 if [ $1 = "configure" ] ; then
-    [ -d /var/tmp/vi.recover ] || mkdir -p /var/tmp/vi.recover
+    [ -d /var/tmp/vi.recover ] || mkdir -p /var/tmp/vi.recover || exit $?
     chown root:root /var/tmp/vi.recover
     chmod 1777 /var/tmp/vi.recover
 fi

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to