Package: xfe
Version: 1.32.5-2
Severity: normal
Tags: patch upstream
I'm re-submitting this to upstream and I kindly ask the maintainer to fix
this in stable and re-upload the fixed package.
Lately, I was playing around with ACLs on Samba and NFS shares when I
discoved that the 'File New' dialog always creates files with the mask of
the user (default 0022), instead of applying the rights determined by the
default ACL set on the particular directory (wich is the default behavior
of 'touch'). This is problematic because the admin sets ACLs because he/she
most likely wants to restrict foreign access to this file and the default
behavior of xfe ignores this, giving unpreviliged users read access in
possibly right sensitive areas (e.g. xfe invoked by root and creating a new
file and afterwards adding a private key to it). Furthermore, changing the
default umask can expand the problem to a more severe security impact.
The problem could be reproduced in stable (wheezy), testing (jessie) and
unstable (sid) also with local ACLs. The responsible code is located in
function FilePanel::onCmdNewFile in FilePanel.cpp (lines 2763-2775 in
version 1.32.5-2 [stable]; 2944-2956 in version 1.37-1 [testing, unstable]).
The attached patches fix this vulnerability in all versions by removing
these lines and thus restore the linux default bevahior. Intense testing
of the patched version showed no recurrence of the issue.
-- System Information:
Debian Release: 7.4
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.13.1 (SMP w/4 CPU cores; PREEMPT)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages xfe depends on:
ii libc6 2.13-38+deb7u1
ii libfox-1.6-0 1.6.45-1
ii libfreetype6 2.4.9-1.1
ii libgcc1 1:4.7.2-5
ii libpng12-0 1.2.49-1
ii libstdc++6 4.7.2-5
ii libx11-6 2:1.5.0-1+deb7u1
ii libxft2 2.3.1-1
ii xfe-themes 1.32.5-2lv4261
ii zlib1g 1:1.2.7.dfsg-13
Versions of packages xfe recommends:
ii audacious 3.2.4-1
ii xarchiver 1:0.5.2+20090319+dfsg-4.1
ii xfe-i18n 1.32.5-2lv4261
ii xterm 278-4
Versions of packages xfe suggests:
ii rpm 4.10.0-5+deb7u1
pn xine-ui <none>
pn xpdf <none>
-- no debconf information
--- s13/src/FilePanel.cpp 2014-02-18 20:52:09.545258341 +0100
+++ s14/src/FilePanel.cpp 2014-02-18 20:53:42.545235420 +0100
@@ -2759,20 +2759,6 @@
MessageBox::error(this,BOX_OK_SU,_("Error"),"Can't create file %s",filename.text());
return 0;
}
- // Change the file permissions according to the current umask
- FXint mask;
- mask=umask(0);
- umask(mask);
- errno=0;
- FXint rc=chmod(filename.text(), 438 & ~mask);
- FXint errcode=errno;
- if (rc)
- {
- if (errcode)
- MessageBox::error(this,BOX_OK_SU,_("Error"),"Can't set permissions in %s: %s",filename.text(),strerror(errcode));
- else
- MessageBox::error(this,BOX_OK_SU,_("Error"),"Can't set permissions in %s",filename.text());
- }
}
}
--- s13/src/FilePanel.cpp 2014-02-19 10:26:10.660455500 +0100
+++ s14/src/FilePanel.cpp 2014-02-19 10:30:01.064448693 +0100
@@ -2940,20 +2940,6 @@
MessageBox::error(this,BOX_OK_SU,_("Error"),_("Can't create file %s"),filename.text());
return 0;
}
- // Change the file permissions according to the current umask
- int mask;
- mask=umask(0);
- umask(mask);
- errno=0;
- int rc=chmod(filename.text(), 438 & ~mask);
- int errcode=errno;
- if (rc)
- {
- if (errcode)
- MessageBox::error(this,BOX_OK_SU,_("Error"),_("Can't set permissions in %s: %s"),filename.text(),strerror(errcode));
- else
- MessageBox::error(this,BOX_OK_SU,_("Error"),_("Can't set permissions in %s"),filename.text());
- }
}
}