Re: [RESEND][PATCH] Documentation: added order requirement for ima_hash=

From: Mimi Zohar
Date: Tue Jan 25 2022 - 23:37:17 EST


On Wed, 2022-01-26 at 10:28 +0800, Guozihua (Scott) wrote:
>
> On 2022/1/26 9:07, Mimi Zohar wrote:
> > On Tue, 2022-01-25 at 17:02 +0800, GUO Zihua wrote:
> >> From: Guo Zihua <guozihua@xxxxxxxxxx>
> >>
> >> Commandline parameter ima_hash= and ima_template= has order requirement
> >> for them to work correctly together. Namely ima_hash= must be
> >> specified after ima_template=, otherwise ima_template= will be ignored.
> >>
> >> The reason is that when handling ima_hash=, ima template would be set to
> >> the default value if it has not been initialized already, and that value
> >> cannot be changed afterwards by ima_template=.
> >>
> >> This patch adds this limitation to the documentation.
> >>
> >> Reviewed-by: Roberto Sassu <roberto.sassu@xxxxxxxxxx>
> >> Signed-off-by: Guo Zihua <guozihua@xxxxxxxxxx>
> >
> > This issue should be limited to the original "ima" template format,
> > which only supports hash algorithms of 20 bytes or less. The "ima_ng"
> > template has been the default since larger digests and templates were
> > upstreamed back in Linux 3.13[1]. Do you really still have kernels
> > built with the original "ima" template?
> >
> > [1] Refer to commit 4286587dccd4 ("ima: add Kconfig default measurement
> > list template").
>
> Hi Mimi,
>
> The issue is that if ima_hash is specified before ima_template,
> ima_template will not work. Built-in default only affects which template
> will be loaded eventually.
>
> For example, if the built-in default template is ima-ng and user would
> like to change it to ima-sig with sha512 by specifying "ima_hash=sha512
> ima_template=ima-sig" in command line, the result will be ima-ng with
> sha512, not ima-sig with sha512.

Ok. Once the template name is set, ima_template_setup() doesn't allow
it to be reset. This was probably done to set the template name to the
first occurance of "ima_template=" on the boot command line. This
concern could be addressed by defining a static local variable in
ima_template_setup().

So either documenting the ordering requirement, as you've done, or
allowing the template_name to be reset are fine.

thanks,

Mimi