Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20130222114615.GC27037@gremlin.ru>
Date: Fri, 22 Feb 2013 15:46:15 +0400
From: gremlin@...mlin.ru
To: oss-security@...ts.openwall.com
Subject: Re: nginx world-readable logdir

On 22-Feb-2013 10:49:38 +0200, Henri Salo wrote:

 >>> So I think that ${subject} is just a misconfiguration.

 >> Welp I confirmed it on Fedora 16. So at least some things are
 >> affected.

 > Some distros are affected.

Alas for them... But the solution is simple.

 > Good to hear not all are.

%install
# ...
mkdir -pm750 %{buildroot}%{_localstatedir}/log/%{name}
touch	%{buildroot}%{_localstatedir}/log/%{name}/access.log \
	%{buildroot}%{_localstatedir}/log/%{name}/error.log

%post
# ...
touch	%{_localstatedir}/log/%{name}/access.log \
	%{_localstatedir}/log/%{name}/error.log
chown -R root:wheel %{_localstatedir}/log/%{name}
chmod 750 %{_localstatedir}/log/%{name}
chmod 640 %{_localstatedir}/log/%{name}/*
# ...

%files
# ...
%ghost %{_localstatedir}/log/%{name}/access.log
%ghost %{_localstatedir}/log/%{name}/error.log

The use of `touch` is preferred as it doesn't trash the existing logs
on package update, and explicit `chmod` and `chown` ensure that their
permissions are correct (Captain Obvious to the rescue, I know).

 > This is not just misconfiguration.

This issue isn't related to the nginx itself.
However, I'd agree that nginx could use restrictive mode for its' log
files:

diff -burpN nginx-1.2.7.orig/src/core/ngx_log.c nginx-1.2.7/src/core/ngx_log.c
--- nginx-1.2.7.orig/src/core/ngx_log.c	2012-01-18 19:07:43.000000000 +0400
+++ nginx-1.2.7/src/core/ngx_log.c	2013-02-22 15:42:04.000000000 +0400
@@ -325,7 +325,7 @@ ngx_log_init(u_char *prefix)
 
     ngx_log_file.fd = ngx_open_file(name, NGX_FILE_APPEND,
                                     NGX_FILE_CREATE_OR_OPEN,
-                                    NGX_FILE_DEFAULT_ACCESS);
+                                    NGX_FILE_USR_GRP_ACCESS);
 
     if (ngx_log_file.fd == NGX_INVALID_FILE) {
         ngx_log_stderr(ngx_errno,
diff -burpN nginx-1.2.7.orig/src/os/unix/ngx_files.h nginx-1.2.7/src/os/unix/ngx_files.h
--- nginx-1.2.7.orig/src/os/unix/ngx_files.h	2012-03-27 20:42:34.000000000 +0400
+++ nginx-1.2.7/src/os/unix/ngx_files.h	2013-02-22 15:41:22.000000000 +0400
@@ -98,6 +98,7 @@ typedef struct {
 #endif /* NGX_HAVE_OPENAT */
 
 #define NGX_FILE_DEFAULT_ACCESS  0644
+#define NGX_FILE_USR_GRP_ACCESS  0640
 #define NGX_FILE_OWNER_ACCESS    0600



-- 
Alexey V. Vissarionov aka Gremlin from Kremlin <gremlin ПРИ gremlin ТЧК ru>
GPG key ID: 0xEF3B1FA8, keyserver: hkp://subkeys.pgp.net
GPG key fingerprint: 8832 FE9F A791 F796 8AC9 6E4E 909D AC45 EF3B 1FA8

Powered by blists - more mailing lists

Please check out the Open Source Software Security Wiki, which is counterpart to this mailing list.

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.