From: Mimi Zohar <zohar@linux.ibm.com>
To: Prakhar Srivastava <prsriva02@gmail.com>,
linux-integrity@vger.kernel.org,
linux-security-module@vger.kernel.org,
linux-kernel@vger.kernel.org
Cc: roberto.sassu@huawei.com
Subject: Re: [PATCH 1/3] IMA:Define a new hook to measure the kexec boot command line arguments
Date: Wed, 19 Jun 2019 15:21:40 -0400 [thread overview]
Message-ID: <1560972100.3975.72.camel@linux.ibm.com> (raw)
In-Reply-To: <20190617183507.14160-2-prsriva02@gmail.com>
On Mon, 2019-06-17 at 11:35 -0700, Prakhar Srivastava wrote:
> Currently during soft reboot(kexec_file_load) boot command line
> arguments are not measured. Define hooks needed to measure kexec
> command line arguments during soft reboot(kexec_file_load).
>
> - A new ima hook ima_kexec_cmdline is defined to be called by the
> kexec code.
> - A new function process_buffer_measurement is defined to measure
> the buffer hash into the IMA measurement list.
> - A new func policy KEXEC_CMDLINE is defined to control the
> measurement.[Suggested by Mimi]
>
> Signed-off-by: Prakhar Srivastava <prsriva02@gmail.com>
With minor changes below,
Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
> ---
> diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c
> index af341a80118f..1e233417a7af 100644
> --- a/security/integrity/ima/ima_main.c
> +++ b/security/integrity/ima/ima_main.c
> @@ -605,6 +605,80 @@ int ima_load_data(enum kernel_load_data_id id)
> return 0;
> }
>
> +/*
> + * process_buffer_measurement - Measure the buffer to ima log.
> + * @buf: pointer to the buffer that needs to be added to the log.
> + * @size: size of buffer(in bytes).
> + * @eventname: event name to be used for the buffer entry.
> + * @cred: a pointer to a credentials structure for user validation.
> + * @secid: the secid of the task to be validated.
> + *
> + * Based on policy, the buffer is measured into the ima log.
> + */
> +static void process_buffer_measurement(const void *buf, int size,
> + const char *eventname,
> + const struct cred *cred, u32 secid)
> +{
> + int ret = 0;
> + struct ima_template_entry *entry = NULL;
> + struct integrity_iint_cache iint = {};
> + struct ima_event_data event_data = {.iint = &iint };
> + struct ima_template_desc *template_desc = NULL;
> + struct {
> + struct ima_digest_data hdr;
> + char digest[IMA_MAX_DIGEST_SIZE];
> + } hash = {};
> + int violation = 0;
> + int pcr = CONFIG_IMA_MEASURE_PCR_IDX;
> + int action = 0;
> +
> + action = ima_get_action(NULL, cred, secid, 0, KEXEC_CMDLINE, &pcr,
> + &template_desc);
> + if (!(action & IMA_MEASURE))
> + goto out;
"out:" is a simple return, no freeing memory. Just return here.
> +
> + event_data.filename = eventname;
No need to initialize even_data.filename, here initialize it when it
is defined.
> +
> + iint.ima_hash = &hash.hdr;
> + iint.ima_hash->algo = ima_hash_algo;
> + iint.ima_hash->length = hash_digest_size[ima_hash_algo];
> +
> + ret = ima_calc_buffer_hash(buf, size, iint.ima_hash);
> + if (ret < 0)
> + goto out;
> +
> + ret = ima_alloc_init_template(&event_data, &entry, template_desc);
> + if (ret < 0)
> + goto out;
> +
> + if (action & IMA_MEASURE)
Why is this test needed again?
Mimi
> + ret = ima_store_template(entry, violation, NULL, buf, pcr);
> +
> + if (ret < 0)
> + ima_free_template_entry(entry);
> +
> +out:
> + return;
> +}
> +
> +/**
> + * ima_kexec_cmdline - measure kexec cmdline boot args
> + * @buf: pointer to buffer
> + * @size: size of buffer
> + *
> + * Buffers can only be measured, not appraised.
> + */
> +void ima_kexec_cmdline(const void *buf, int size)
> +{
> + u32 secid;
> +
> + if (buf && size != 0) {
> + security_task_getsecid(current, &secid);
> + process_buffer_measurement(buf, size, "kexec-cmdline",
> + current_cred(), secid);
> + }
> +}
> +
> static int __init init_ima(void)
> {
> int error;
>
next prev parent reply other threads:[~2019-06-19 19:21 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-17 18:35 [PATCH V8 0/3] Add support for measuring the boot command line during kexec_file_load Prakhar Srivastava
2019-06-17 18:35 ` [PATCH 1/3] IMA:Define a new hook to measure the kexec boot command line arguments Prakhar Srivastava
2019-06-19 19:21 ` Mimi Zohar [this message]
2019-06-17 18:35 ` [PATCH 2/3] IMA:Define a new template field buf Prakhar Srivastava
2019-06-19 13:54 ` Mimi Zohar
2019-06-19 18:08 ` prakhar srivastava
2019-06-19 18:37 ` Mimi Zohar
2019-06-17 18:35 ` [PATCH 3/3] KEXEC:Call ima_kexec_cmdline to measure the boot command line args Prakhar Srivastava
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1560972100.3975.72.camel@linux.ibm.com \
--to=zohar@linux.ibm.com \
--cc=linux-integrity@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=prsriva02@gmail.com \
--cc=roberto.sassu@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.