Re: selinux_set_callback() problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 6 Feb 2016 05:29:05 AM Stephen Smalley wrote:
> On 02/04/2016 04:32 PM, Russell Coker wrote:
> > type=USER_AVC msg=audit(1454447396.743:48359): pid=1 uid=0
> > auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0
> > msg='avc:  denied  { status } for auid=0 uid=0 gid=0
> > path="/lib/systemd/system/reboot.target"
> > cmdline="reboot"
> > scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
> > tcontext=system_u:object_r:systemd_unit_file_t:SystemLow tclass=service
> > exe="/lib/systemd/systemd" sauid=0 hostname=? addr=? terminal=?'
> > 
> > I'm seeing entries like the above from the Debian/Jessie systemd in
> > audit.log. Below is the relevant code from the systemd source:
> > 
> > _printf_(2, 3) static int log_callback(int type, const char *fmt, ...) {
> > 
> >          va_list ap;
> > 
> > #ifdef HAVE_AUDIT
> > 
> >          if (get_audit_fd() >= 0) {
> >          
> >                  _cleanup_free_ char *buf = NULL;
> >                  int r;
> >                  
> >                  va_start(ap, fmt);
> >                  r = vasprintf(&buf, fmt, ap);
> >                  va_end(ap);
> >                  
> >                  if (r >= 0) {
> >                  
> >                          audit_log_user_avc_message(get_audit_fd(),
> > 
> > AUDIT_USER_AVC, buf,
> > NULL, NULL, NULL, 0);
> > 
> >                          return 0;
> >                  
> >                  }
> >          
> >          }
> > 
> > #endif
> > 
> >          va_start(ap, fmt);
> >          log_metav(LOG_USER | LOG_INFO, __FILE__, __LINE__, __FUNCTION__,
> >          fmt,
> > 
> > ap);
> > 
> >          va_end(ap);
> >          
> >          return 0;
> > 
> > }
> > 
> > Then the following line is in the access_init() function to enable it:
> > 
> > selinux_set_callback(SELINUX_CB_LOG, (union selinux_callback)
> > log_callback);
> > 
> > Any suggestions as to where I should start working on this?
> > 
> > Sorry if it's a newbie question, I haven't worked on SE Linux library
> > code for a while.
> 
> What exactly is the problem?  Is it that the scontext has a raw context
> and the tcontext has a translated context?  Or is it that it was denied
> when it should have been allowed?
> 
> The callback itself is obviously being executed or you wouldn't have the
> audit message at all.

The problem is a translated context which breaks audit2allow.  Even if it 
didn't break audit2allow it wouldn't be a good thing to have as the text 
representations can (in theory at least) change.

# audit2allow -l < /var/log/audit/audit.log
libsepol.mls_from_string: invalid MLS context SystemLow
libsepol.mls_from_string: could not construct mls context structure
libsepol.context_from_record: could not create context structure
libsepol.context_from_string: could not create context structure
libsepol.sepol_context_to_sid: could not convert 
system_u:object_r:systemd_unit_file_t:SystemLow to sid


-- 
My Main Blog         http://etbe.coker.com.au/
My Documents Blog    http://doc.coker.com.au/
_______________________________________________
Selinux mailing list
Selinux@xxxxxxxxxxxxx
To unsubscribe, send email to Selinux-leave@xxxxxxxxxxxxx.
To get help, send an email containing "help" to Selinux-request@xxxxxxxxxxxxx.



[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux