Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Wed, 31 Mar 2021 16:27:54 -0300
From: Adhemerval Zanella <adhemerval.zanella@...aro.org>
To: Dan Raymond <draymond@...valley.net>, libc-alpha@...rceware.org,
 Rich Felker <dalias@...c.org>, libc-coord@...ts.openwall.com
Subject: syslog and LOG_KERN - Re: [PATCH] Bug 3604: fix calls to openlog()
 with LOG_KERN facility



On 27/03/2021 17:07, Dan Raymond wrote:
> From 93683928886a563a4740e2b42b53752a4a7d431f Mon Sep 17 00:00:00 2001
> From: Dan Raymond <draymond@...valley.net>
> Date: Sat, 27 Mar 2021 13:51:16 -0600
> Subject: [PATCH] Bug 3604: fix calls to openlog() with LOG_KERN facility
> 

Not allowing LOG_KERN by any user process seems to be de facto behavior
on all systems I am aware of:

  * FreeBSD and MUSL explicit set to previous log facility (they check
    if the priority against a mask and since on both LOG_KERN is 0 is
    set to the previous/default value).

  * Solaris 11.4 man page explicit says:

       LOG_KERN      Messages generated by the kernel. These cannot be  gener-
                     ated by any user processes.

  * AIX 7.2 is similar, but it seems to provide a special symbol for that
    (which seems to not have a man page):

       LOG_KERN      Logs messages generated by the kernel. Kernel processes 
                     should use the bsdlog routine to generate syslog messages. 
                     The syntax of bsdlog is identical to syslog. The bsdlog 
                     messages can only be created by kernel processes and must
                     be of LOG_KERN priority. The syslog subroutine cannot log 
                     LOG_KERN facility messages. Instead it will log LOG_USER 
                     facility messages.

So before to make glibc an outlier here to fix a very specific issue, I
would like to check with other implementation the possible security
implication and whether it make sense to change it.

Reference: https://sourceware.org/bugzilla/show_bug.cgi?id=3604

> ---
>  misc/syslog.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/misc/syslog.c b/misc/syslog.c
> index 2cc63ef287..bb30cd963a 100644
> --- a/misc/syslog.c
> +++ b/misc/syslog.c
> @@ -285,7 +285,7 @@ __vsyslog_internal(int pri, const char *fmt, va_list ap,
> 
>      /* Get connected, output the message to the local logger. */
>      if (!connected)
> -        openlog_internal(LogTag, LogStat | LOG_NDELAY, 0);
> +        openlog_internal(NULL, LogStat | LOG_NDELAY, LogFacility);
> 
>      /* If we have a SOCK_STREAM connection, also send ASCII NUL as
>         a record terminator.  */
> @@ -299,7 +299,7 @@ __vsyslog_internal(int pri, const char *fmt, va_list ap,
>          /* Try to reopen the syslog connection.  Maybe it went
>             down.  */
>          closelog_internal ();
> -        openlog_internal(LogTag, LogStat | LOG_NDELAY, 0);
> +        openlog_internal(NULL, LogStat | LOG_NDELAY, LogFacility);
>            }
> 
>          if (!connected || __send(LogFile, buf, bufsize, send_flags) < 0)
> @@ -343,7 +343,7 @@ openlog_internal(const char *ident, int logstat, int logfac)
>      if (ident != NULL)
>          LogTag = ident;
>      LogStat = logstat;
> -    if (logfac != 0 && (logfac &~ LOG_FACMASK) == 0)
> +    if ((logfac &~ LOG_FACMASK) == 0)
>          LogFacility = logfac;
> 
>      int retry = 0;

Powered by blists - more mailing lists

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