diff mbox

[5/8] integrity: Add exe= and tty= before res= to integrity audits

Message ID 20180524201105.3179904-6-stefanb@linux.vnet.ibm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Stefan Berger May 24, 2018, 8:11 p.m. UTC
Use the new public audit functions to add the exe= and tty=
parts to the integrity audit records. We place them before
res=.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Suggested-by: Steve Grubb <sgrubb@redhat.com>
---
 security/integrity/integrity_audit.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Paul Moore May 29, 2018, 9:19 p.m. UTC | #1
On Thu, May 24, 2018 at 4:11 PM, Stefan Berger
<stefanb@linux.vnet.ibm.com> wrote:
> Use the new public audit functions to add the exe= and tty=
> parts to the integrity audit records. We place them before
> res=.
>
> Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
> Suggested-by: Steve Grubb <sgrubb@redhat.com>
> ---
>  security/integrity/integrity_audit.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/security/integrity/integrity_audit.c b/security/integrity/integrity_audit.c
> index db30763d5525..8d25d3c4dcca 100644
> --- a/security/integrity/integrity_audit.c
> +++ b/security/integrity/integrity_audit.c
> @@ -56,6 +56,8 @@ void integrity_audit_msg(int audit_msgno, struct inode *inode,
>                 audit_log_untrustedstring(ab, inode->i_sb->s_id);
>                 audit_log_format(ab, " ino=%lu", inode->i_ino);
>         }
> +       audit_log_d_path_exe(ab, current->mm);
> +       audit_log_tty(ab, current);

NACK

Please add the new fields to the end of the audit record, thank you.

>         audit_log_format(ab, " res=%d", !result);
>         audit_log_end(ab);
>  }
Steve Grubb May 29, 2018, 9:35 p.m. UTC | #2
On Tuesday, May 29, 2018 5:19:39 PM EDT Paul Moore wrote:
> On Thu, May 24, 2018 at 4:11 PM, Stefan Berger
> 
> <stefanb@linux.vnet.ibm.com> wrote:
> > Use the new public audit functions to add the exe= and tty=
> > parts to the integrity audit records. We place them before
> > res=.
> > 
> > Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
> > Suggested-by: Steve Grubb <sgrubb@redhat.com>
> > ---
> > 
> >  security/integrity/integrity_audit.c | 2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/security/integrity/integrity_audit.c
> > b/security/integrity/integrity_audit.c index db30763d5525..8d25d3c4dcca
> > 100644
> > --- a/security/integrity/integrity_audit.c
> > +++ b/security/integrity/integrity_audit.c
> > @@ -56,6 +56,8 @@ void integrity_audit_msg(int audit_msgno, struct inode
> > *inode,> 
> >                 audit_log_untrustedstring(ab, inode->i_sb->s_id);
> >                 audit_log_format(ab, " ino=%lu", inode->i_ino);
> >         
> >         }
> > 
> > +       audit_log_d_path_exe(ab, current->mm);
> > +       audit_log_tty(ab, current);
> 
> NACK
> 
> Please add the new fields to the end of the audit record, thank you.

Let's see what an example event looks like before NACK'ing this. Way back in 
2013 the IMA events were good. I think this is repairing the event after some 
drift.

Thanks,
-Steve
 
> >         audit_log_format(ab, " res=%d", !result);
> >         audit_log_end(ab);
> >  
> >  }
Paul Moore May 29, 2018, 9:47 p.m. UTC | #3
On Tue, May 29, 2018 at 5:35 PM, Steve Grubb <sgrubb@redhat.com> wrote:
> On Tuesday, May 29, 2018 5:19:39 PM EDT Paul Moore wrote:
>> On Thu, May 24, 2018 at 4:11 PM, Stefan Berger
>>
>> <stefanb@linux.vnet.ibm.com> wrote:
>> > Use the new public audit functions to add the exe= and tty=
>> > parts to the integrity audit records. We place them before
>> > res=.
>> >
>> > Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
>> > Suggested-by: Steve Grubb <sgrubb@redhat.com>
>> > ---
>> >
>> >  security/integrity/integrity_audit.c | 2 ++
>> >  1 file changed, 2 insertions(+)
>> >
>> > diff --git a/security/integrity/integrity_audit.c
>> > b/security/integrity/integrity_audit.c index db30763d5525..8d25d3c4dcca
>> > 100644
>> > --- a/security/integrity/integrity_audit.c
>> > +++ b/security/integrity/integrity_audit.c
>> > @@ -56,6 +56,8 @@ void integrity_audit_msg(int audit_msgno, struct inode
>> > *inode,>
>> >                 audit_log_untrustedstring(ab, inode->i_sb->s_id);
>> >                 audit_log_format(ab, " ino=%lu", inode->i_ino);
>> >
>> >         }
>> >
>> > +       audit_log_d_path_exe(ab, current->mm);
>> > +       audit_log_tty(ab, current);
>>
>> NACK
>>
>> Please add the new fields to the end of the audit record, thank you.
>
> Let's see what an example event looks like before NACK'ing this. Way back in
> 2013 the IMA events were good. I think this is repairing the event after some
> drift.

Can you reference a specific commit, or point in time during 2013?
Looking at the git log quickly, if I go back to commit d726d8d719b6
("integrity: move integrity_audit_msg()") from March 18, 2013 (the
commit that created integrity_audit.c) the field ordering appears to
be the same as it today.

My NACK still stands.
Mimi Zohar May 29, 2018, 10:58 p.m. UTC | #4
On Tue, 2018-05-29 at 17:47 -0400, Paul Moore wrote:
> On Tue, May 29, 2018 at 5:35 PM, Steve Grubb <sgrubb@redhat.com> wrote:
> > On Tuesday, May 29, 2018 5:19:39 PM EDT Paul Moore wrote:
> >> On Thu, May 24, 2018 at 4:11 PM, Stefan Berger
> >>
> >> <stefanb@linux.vnet.ibm.com> wrote:
> >> > Use the new public audit functions to add the exe= and tty=
> >> > parts to the integrity audit records. We place them before
> >> > res=.
> >> >
> >> > Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
> >> > Suggested-by: Steve Grubb <sgrubb@redhat.com>
> >> > ---
> >> >
> >> >  security/integrity/integrity_audit.c | 2 ++
> >> >  1 file changed, 2 insertions(+)
> >> >
> >> > diff --git a/security/integrity/integrity_audit.c
> >> > b/security/integrity/integrity_audit.c index db30763d5525..8d25d3c4dcca
> >> > 100644
> >> > --- a/security/integrity/integrity_audit.c
> >> > +++ b/security/integrity/integrity_audit.c
> >> > @@ -56,6 +56,8 @@ void integrity_audit_msg(int audit_msgno, struct inode
> >> > *inode,>
> >> >                 audit_log_untrustedstring(ab, inode->i_sb->s_id);
> >> >                 audit_log_format(ab, " ino=%lu", inode->i_ino);
> >> >
> >> >         }
> >> >
> >> > +       audit_log_d_path_exe(ab, current->mm);
> >> > +       audit_log_tty(ab, current);
> >>
> >> NACK
> >>
> >> Please add the new fields to the end of the audit record, thank you.
> >
> > Let's see what an example event looks like before NACK'ing this. Way back in
> > 2013 the IMA events were good. I think this is repairing the event after some
> > drift.
> 
> Can you reference a specific commit, or point in time during 2013?
> Looking at the git log quickly, if I go back to commit d726d8d719b6
> ("integrity: move integrity_audit_msg()") from March 18, 2013 (the
> commit that created integrity_audit.c) the field ordering appears to
> be the same as it today.
> 
> My NACK still stands.

There hasn't been any changes up to now.  This patch set refactors
integrity_audit_msg(), creating integrity_audit_msg_common(), which
will be called from both ima_audit_measurement() and
ima_parse_rule(). 

Previously the audit record generated by ima_parse_rule() did not
include this info.  The change in this patch will affect both the
existing and the new INTEGRITY_AUDIT_POLICY_RULE audit records.

Mimi
Stefan Berger May 30, 2018, 12:17 p.m. UTC | #5
On 05/29/2018 05:19 PM, Paul Moore wrote:
> On Thu, May 24, 2018 at 4:11 PM, Stefan Berger
> <stefanb@linux.vnet.ibm.com> wrote:
>> Use the new public audit functions to add the exe= and tty=
>> parts to the integrity audit records. We place them before
>> res=.
>>
>> Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
>> Suggested-by: Steve Grubb <sgrubb@redhat.com>
>> ---
>>   security/integrity/integrity_audit.c | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/security/integrity/integrity_audit.c b/security/integrity/integrity_audit.c
>> index db30763d5525..8d25d3c4dcca 100644
>> --- a/security/integrity/integrity_audit.c
>> +++ b/security/integrity/integrity_audit.c
>> @@ -56,6 +56,8 @@ void integrity_audit_msg(int audit_msgno, struct inode *inode,
>>                  audit_log_untrustedstring(ab, inode->i_sb->s_id);
>>                  audit_log_format(ab, " ino=%lu", inode->i_ino);
>>          }
>> +       audit_log_d_path_exe(ab, current->mm);
>> +       audit_log_tty(ab, current);
> NACK
>
> Please add the new fields to the end of the audit record, thank you.

I put it there since Steve said '"res" is traditionally the last field 
in any event' (https://lkml.org/lkml/2018/5/22/539). I don't mind 
breaking with this tradition...

>
>>          audit_log_format(ab, " res=%d", !result);
>>          audit_log_end(ab);
>>   }
Mimi Zohar May 30, 2018, 1:04 p.m. UTC | #6
On Tue, 2018-05-29 at 18:58 -0400, Mimi Zohar wrote:
> On Tue, 2018-05-29 at 17:47 -0400, Paul Moore wrote:
> > On Tue, May 29, 2018 at 5:35 PM, Steve Grubb <sgrubb@redhat.com> wrote:
> > > On Tuesday, May 29, 2018 5:19:39 PM EDT Paul Moore wrote:
> > >> On Thu, May 24, 2018 at 4:11 PM, Stefan Berger
> > >>
> > >> <stefanb@linux.vnet.ibm.com> wrote:
> > >> > Use the new public audit functions to add the exe= and tty=
> > >> > parts to the integrity audit records. We place them before
> > >> > res=.
> > >> >
> > >> > Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
> > >> > Suggested-by: Steve Grubb <sgrubb@redhat.com>
> > >> > ---
> > >> >
> > >> >  security/integrity/integrity_audit.c | 2 ++
> > >> >  1 file changed, 2 insertions(+)
> > >> >
> > >> > diff --git a/security/integrity/integrity_audit.c
> > >> > b/security/integrity/integrity_audit.c index db30763d5525..8d25d3c4dcca
> > >> > 100644
> > >> > --- a/security/integrity/integrity_audit.c
> > >> > +++ b/security/integrity/integrity_audit.c
> > >> > @@ -56,6 +56,8 @@ void integrity_audit_msg(int audit_msgno, struct inode
> > >> > *inode,>
> > >> >                 audit_log_untrustedstring(ab, inode->i_sb->s_id);
> > >> >                 audit_log_format(ab, " ino=%lu", inode->i_ino);
> > >> >
> > >> >         }
> > >> >
> > >> > +       audit_log_d_path_exe(ab, current->mm);
> > >> > +       audit_log_tty(ab, current);
> > >>
> > >> NACK
> > >>
> > >> Please add the new fields to the end of the audit record, thank you.
> > >
> > > Let's see what an example event looks like before NACK'ing this. Way back in
> > > 2013 the IMA events were good. I think this is repairing the event after some
> > > drift.
> > 
> > Can you reference a specific commit, or point in time during 2013?
> > Looking at the git log quickly, if I go back to commit d726d8d719b6
> > ("integrity: move integrity_audit_msg()") from March 18, 2013 (the
> > commit that created integrity_audit.c) the field ordering appears to
> > be the same as it today.
> > 
> > My NACK still stands.
> 
> There hasn't been any changes up to now.  This patch set refactors
> integrity_audit_msg(), creating integrity_audit_msg_common(), which
> will be called from both ima_audit_measurement() and
> ima_parse_rule().

That should have been "from integrity_audit_msg() and
ima_parse_rule()", not ima_audit_measurement().

> Previously the audit record generated by ima_parse_rule() did not
> include this info.  The change in this patch will affect both the
> existing and the new INTEGRITY_AUDIT_POLICY_RULE audit records.
Paul Moore May 30, 2018, 9:14 p.m. UTC | #7
On Wed, May 30, 2018 at 8:17 AM, Stefan Berger
<stefanb@linux.vnet.ibm.com> wrote:
> On 05/29/2018 05:19 PM, Paul Moore wrote:
>>
>> On Thu, May 24, 2018 at 4:11 PM, Stefan Berger
>> <stefanb@linux.vnet.ibm.com> wrote:
>>>
>>> Use the new public audit functions to add the exe= and tty=
>>> parts to the integrity audit records. We place them before
>>> res=.
>>>
>>> Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
>>> Suggested-by: Steve Grubb <sgrubb@redhat.com>
>>> ---
>>>   security/integrity/integrity_audit.c | 2 ++
>>>   1 file changed, 2 insertions(+)
>>>
>>> diff --git a/security/integrity/integrity_audit.c
>>> b/security/integrity/integrity_audit.c
>>> index db30763d5525..8d25d3c4dcca 100644
>>> --- a/security/integrity/integrity_audit.c
>>> +++ b/security/integrity/integrity_audit.c
>>> @@ -56,6 +56,8 @@ void integrity_audit_msg(int audit_msgno, struct inode
>>> *inode,
>>>                  audit_log_untrustedstring(ab, inode->i_sb->s_id);
>>>                  audit_log_format(ab, " ino=%lu", inode->i_ino);
>>>          }
>>> +       audit_log_d_path_exe(ab, current->mm);
>>> +       audit_log_tty(ab, current);
>>
>> NACK
>>
>> Please add the new fields to the end of the audit record, thank you.
>
> I put it there since Steve said '"res" is traditionally the last field in
> any event' (https://lkml.org/lkml/2018/5/22/539). I don't mind breaking with
> this tradition...

Unfortunately Steve and I don't see eye-to-eye on everything, and this
is perhaps one of the more prominent issues.

I'll save you several years of arguments, on and off-list, and simply
say that the "safe" option, and the only option I'm likely to ACK,
would be to add new fields at the end of existing records.  We have
made exceptions in the past, but those were pretty extreme cases.
Paul Moore May 30, 2018, 9:15 p.m. UTC | #8
On Wed, May 30, 2018 at 9:04 AM, Mimi Zohar <zohar@linux.vnet.ibm.com> wrote:
> On Tue, 2018-05-29 at 18:58 -0400, Mimi Zohar wrote:
>> On Tue, 2018-05-29 at 17:47 -0400, Paul Moore wrote:
>> > On Tue, May 29, 2018 at 5:35 PM, Steve Grubb <sgrubb@redhat.com> wrote:
>> > > On Tuesday, May 29, 2018 5:19:39 PM EDT Paul Moore wrote:
>> > >> On Thu, May 24, 2018 at 4:11 PM, Stefan Berger
>> > >>
>> > >> <stefanb@linux.vnet.ibm.com> wrote:
>> > >> > Use the new public audit functions to add the exe= and tty=
>> > >> > parts to the integrity audit records. We place them before
>> > >> > res=.
>> > >> >
>> > >> > Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
>> > >> > Suggested-by: Steve Grubb <sgrubb@redhat.com>
>> > >> > ---
>> > >> >
>> > >> >  security/integrity/integrity_audit.c | 2 ++
>> > >> >  1 file changed, 2 insertions(+)
>> > >> >
>> > >> > diff --git a/security/integrity/integrity_audit.c
>> > >> > b/security/integrity/integrity_audit.c index db30763d5525..8d25d3c4dcca
>> > >> > 100644
>> > >> > --- a/security/integrity/integrity_audit.c
>> > >> > +++ b/security/integrity/integrity_audit.c
>> > >> > @@ -56,6 +56,8 @@ void integrity_audit_msg(int audit_msgno, struct inode
>> > >> > *inode,>
>> > >> >                 audit_log_untrustedstring(ab, inode->i_sb->s_id);
>> > >> >                 audit_log_format(ab, " ino=%lu", inode->i_ino);
>> > >> >
>> > >> >         }
>> > >> >
>> > >> > +       audit_log_d_path_exe(ab, current->mm);
>> > >> > +       audit_log_tty(ab, current);
>> > >>
>> > >> NACK
>> > >>
>> > >> Please add the new fields to the end of the audit record, thank you.
>> > >
>> > > Let's see what an example event looks like before NACK'ing this. Way back in
>> > > 2013 the IMA events were good. I think this is repairing the event after some
>> > > drift.
>> >
>> > Can you reference a specific commit, or point in time during 2013?
>> > Looking at the git log quickly, if I go back to commit d726d8d719b6
>> > ("integrity: move integrity_audit_msg()") from March 18, 2013 (the
>> > commit that created integrity_audit.c) the field ordering appears to
>> > be the same as it today.
>> >
>> > My NACK still stands.
>>
>> There hasn't been any changes up to now.  This patch set refactors
>> integrity_audit_msg(), creating integrity_audit_msg_common(), which
>> will be called from both ima_audit_measurement() and
>> ima_parse_rule().
>
> That should have been "from integrity_audit_msg() and
> ima_parse_rule()", not ima_audit_measurement().

No worries, the important part is that the record format really hasn't
changed from 2013 as far as I can tell.

>> Previously the audit record generated by ima_parse_rule() did not
>> include this info.  The change in this patch will affect both the
>> existing and the new INTEGRITY_AUDIT_POLICY_RULE audit records.
diff mbox

Patch

diff --git a/security/integrity/integrity_audit.c b/security/integrity/integrity_audit.c
index db30763d5525..8d25d3c4dcca 100644
--- a/security/integrity/integrity_audit.c
+++ b/security/integrity/integrity_audit.c
@@ -56,6 +56,8 @@  void integrity_audit_msg(int audit_msgno, struct inode *inode,
 		audit_log_untrustedstring(ab, inode->i_sb->s_id);
 		audit_log_format(ab, " ino=%lu", inode->i_ino);
 	}
+	audit_log_d_path_exe(ab, current->mm);
+	audit_log_tty(ab, current);
 	audit_log_format(ab, " res=%d", !result);
 	audit_log_end(ab);
 }