Re: [PATCH 2/3 v5] add a new template field buf to contain the buffer

From: prakhar srivastava
Date: Fri May 17 2019 - 19:35:29 EST


On Tue, May 14, 2019 at 6:22 AM Roberto Sassu <roberto.sassu@xxxxxxxxxx> wrote:
>
> On 5/14/2019 7:07 AM, prakhar srivastava wrote:
> > On Mon, May 13, 2019 at 6:48 AM Roberto Sassu <roberto.sassu@xxxxxxxxxx> wrote:
> >>
> >> On 5/11/2019 12:37 AM, Prakhar Srivastava wrote:
> >>> From: Prakhar Srivastava <prsriva02@xxxxxxxxx>
> >>>
> >>> The buffer(cmdline args) added to the ima log cannot be attested
> >>> without having the actual buffer. Thus to make the measured buffer
> >>> available to store/read a new ima template (buf) is added.
> >>
> >> Hi Prakhar
> >>
> >> please fix the typos. More comments below.
> >>
> >>
> >>> + buffer_event_data->type = IMA_XATTR_BUFFER;
> >>> + buffer_event_data->buf_length = size;
> >>> + memcpy(buffer_event_data->buf, buf, size);
> >>> +
> >>> + event_data.xattr_value = (struct evm_ima_xattr_data *)buffer_event_data;
> >>> + event_data.xattr_len = alloc_length;
> >>
> >> I would prefer that you introduce two new fields in the ima_event_data
> >> structure. You can initialize them directly with the parameters of
> >> process_buffer_measurement().
> > I will make the edits, this will definitely save the kzalloc in this code
> > path.
> >>
> >> ima_write_template_field_data() will make
> >> a copy.
> >>
> > Since event_data->type is used to distinguish what the template field
> > should contain.
> > Removing the type and subsequent check in the template_init,
> > buf template fmt will result in the whole event_Data structure
> > being added to the log, which is not the expected output.
> > For buffer entries, the buf template fmt will contains the buffer itself.

>
> The purpose of ima_event_data is to pass data to the init method of
> template fields. Each method takes the data it needs.
>
> If you pass event_data->buf and event_data->buf_len to
> ima_write_template_field_data() this should be fine.

Hi Roberto,
I did some testing after making the needed code changes,
the output is as expected the buf template field only contains
the buf when the ima_event_data.buf is set.

However i just want to double check if adding two new fields to
the struct ima_event_data is approach you want me to take?
Mimi any concerns?

what all tests do i need to run to confirm i am not
in-inadvertently breaking some thing else?

Thanks,
Prakhar Srivastava
>
> Roberto
>
>
> >>> + .field_show = ima_show_template_buf},
> >>
> >> Please update Documentation/security/IMA-templates.rst
> > Will update the documentation.
> >
> > Thanks,
> > Prakhar Srivastava
> >>
> >> Thanks
> >>
> >> Roberto
>
> --
> HUAWEI TECHNOLOGIES Duesseldorf GmbH, HRB 56063
> Managing Director: Bo PENG, Jian LI, Yanli SHI