On Tuesday, February 4, 2020 3:10:14 AM EST Burn Alting wrote:
 On Mon, 2020-02-03 at 11:35 -0500, Steve Grubb wrote:
 > Hello,
 > 
 > On Friday, January 31, 2020 4:58:18 PM EST Burn Alting wrote:
 > > Currently when the USB management framework, usbguard (
 > > 
https://github.com/USBGuard/usbguard),  is building it's key-value
 > > pairsprior to calling audit_log_user_message() with a
 > > AUDIT_USER_DEVICE type,it looks at each value  and decides to hex
 > > encode the value if anycharacter  in the value matches the expression
 > > (str[i] == '"' || str[i] <0x21 || str[i] == 0x7F).> 
 > It should be calling audit_value_needs_encoding().
 > 
 > > This can be found in
 > > 
https://github.com/USBGuard/usbguard/blob/master/src/Daemon/LinuxAuditB
 > > ack
 > > end.cpp where it makes the call
 > > 
 > > 	audit_log_user_message(_audit_fd, AUDIT_USER_DEVICE,
 > > 
 > > message.c_str(),      /*hostname=*/nullptr, /*addr=*/nullptr,
 > > /*tty=*/nullptr, result);
 > > As a result, one sees audit events such as
 >  
 >  <snip>
 >  
 > > I have a number of questions- What is the best recommendation I can
 > > make in a bug report I'd like toraise so that the auparse library can
 > > reliably interpret all their key'svalues?
 > 
 > If its a field that is knowingly going to be user controlled, then it has
 > to follow the convention shown here:
 > 
https://github.com/linux-audit/audit-userspace/blob/master/lib/
 > audit_logging.c#L196
 > Notably, the "else" branch includes double quotes.
 
 I believe their code does that. I should have been a little clearer ... if
 they have a msg value with multiple key value pairs, some escaped with
 double quotes and other hex encoded, how do I get ausearch to reliably
 decode the hex encoded value? 
It should decode hex-encoded fields.
 Do we need to add usbguard specific keys to
 auparse/typetab.h? 
Possibly. They may have did their own thing without coordination. Wouldn't be 
the first time nor the last.
 > > - Should I also request they actually provide hostname and
addrvalues
 > > to audit_log_user_message()?
 > 
 > This should be covered by auditd.conf, name_format.
 > 
 > > - If one want them to identify the user who participates in the
 > > activitywhat is the best recommendation to make in terms of keys in
 > > the message?
 > 
 > There is no way to associate a user to a device being plugged in. What if
 > no one is logged in? For example a "janitor" walks by a system at night
 > and plugs in a usb cactus or evil crow. And then sometimes a system
 > permanently has a usb device connected and the event is seen during boot
 > before people log in.
 Agreed, but the USBguard daemon accepts commands from authorised users and
 acts on those commands. For example, blocking or unblocking access for a
 device just inserted. What key should be given in their msg string given
 the initiating user is not root (or unset). At the moment, they don't log
 this detail but I will ask them to, so want to advise the key to use. 
sauid is used for second-hand information. It is not considered trustworthy 
since the kernel isn't the source of the identity. We need their subject 
label as well.
And if you are talking to them, I do not believe it is proper to log the 
actual rule that they are triggering on. This causes a lot of hex-encoded 
text that is meaningless.
-Steve