All of lore.kernel.org
 help / color / mirror / Atom feed
* IMA appraisal against xz-compressed modules
@ 2017-10-12 14:55 Bruno E. O. Meneguele
  2017-10-15  3:11 ` Mimi Zohar
  0 siblings, 1 reply; 7+ messages in thread
From: Bruno E. O. Meneguele @ 2017-10-12 14:55 UTC (permalink / raw)
  To: linux-integrity; +Cc: lwang

[-- Attachment #1: Type: multipart/signed, Size: 2149 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: IMA appraisal against xz-compressed modules
  2017-10-12 14:55 IMA appraisal against xz-compressed modules Bruno E. O. Meneguele
@ 2017-10-15  3:11 ` Mimi Zohar
  2017-10-18 19:49   ` Bruno E. O. Meneguele
  0 siblings, 1 reply; 7+ messages in thread
From: Mimi Zohar @ 2017-10-15  3:11 UTC (permalink / raw)
  To: Bruno E. O. Meneguele, linux-integrity; +Cc: lwang

On Thu, 2017-10-12 at 10:55 -0400, Bruno E. O. Meneguele wrote:
> Hi, 
> 
> recently, while playing around with IMA modules check support, I notice
> that when the kernel was compiled/installed with XZ-compressed modules
> the IMA kernel infra returns -EACCESS on modules initialization. Let me
> detail a bit more:
> 
> I created the policy file (/etc/ima/ima-policy) with
> 
> measure func=MODULE_CHECK uid=0
> (... and more, policy file is attached)
> 
> then rebooted the kernel (that was built with XZ-compressed modules) and
> a bunch of modules didn't load, e.g.:
> 
> without ima-policy:
> # lsmod | wc -l
> 32
> 
> with it:
> # lsmod | wc -l
> 14
> 
> these 14 modules were all loaded during initram booting phase, but if I
> rmmod some of them and try to modprobe (strace output):
> 
> init_module(0x55b9bcc9bba0, 17763, "") = -1 EACCES (Permission denied)
> 
> The point is that there is no violation, because the error occurs right
> after kmod calls init_module() and the call follows to ima_read_file()
> (kernel tree: security/integrity/ima/ima_main.c) which returns -EACCES,
> since there is no 'file' structure available (init_module uses memory
> region only and not file descriptor).

IMA hashes/signatures are stored as xattrs, which requires a file
descriptor.  IMA only supports the new kernel module syscall, which
provides the file descriptor.

> I notice this behavior using Fedora 26 (using SELinux as sec framework)
> and up-to-date kernel, the question is: should IMA kernel mechanism
> support memory regions integrity measurements, maybe following the steps
> that MODULE_SIGNATURE takes (that check for module signature through its
> mmap region), allowing compressed modules to be loaded? Or kernels built
> with XZ/GZ-compressed modules was never meant to be supported? Is it a
> bug or a possible enhancement?

If the IMA policy requires kernel modules to be signed, an appended
signature is permitted as long as the kernel is configured with
CONFIG_MODULE_SIG_FORCE enabled.

Mimi

> Well, thank you guys in advance.
> 
> /etc/ima/ima-policy:
> 
> # PROC_SUPER_MAGIC
> dont_measure fsmagic=0x9fa0
> # SYSFS_MAGIC
> dont_measure fsmagic=0x62656572
> # DEBUGFS_MAGIC
> dont_measure fsmagic=0x64626720
> # TMPFS_MAGIC
> dont_measure fsmagic=0x01021994
> # RAMFS_MAGIC
> dont_measure fsmagic=0x858458f6
> # SECURITYFS_MAGIC
> dont_measure fsmagic=0x73636673
> # MEASUREMENTS
> measure func=BPRM_CHECK
> measure func=FILE_MMAP mask=MAY_EXEC
> measure func=MODULE_CHECK uid=0
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: IMA appraisal against xz-compressed modules
  2017-10-15  3:11 ` Mimi Zohar
@ 2017-10-18 19:49   ` Bruno E. O. Meneguele
  2017-10-19 14:20     ` Mimi Zohar
  0 siblings, 1 reply; 7+ messages in thread
From: Bruno E. O. Meneguele @ 2017-10-18 19:49 UTC (permalink / raw)
  To: Mimi Zohar; +Cc: linux-integrity, lwang

[-- Attachment #1: Type: multipart/signed, Size: 3470 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: IMA appraisal against xz-compressed modules
  2017-10-18 19:49   ` Bruno E. O. Meneguele
@ 2017-10-19 14:20     ` Mimi Zohar
  2017-10-19 19:31       ` Bruno E. O. Meneguele
  0 siblings, 1 reply; 7+ messages in thread
From: Mimi Zohar @ 2017-10-19 14:20 UTC (permalink / raw)
  To: Bruno E. O. Meneguele; +Cc: linux-integrity, lwang

On Wed, 2017-10-18 at 17:49 -0200, Bruno E. O. Meneguele wrote:
> On 14-10, Mimi Zohar wrote:
> > On Thu, 2017-10-12 at 10:55 -0400, Bruno E. O. Meneguele wrote:
> > > Hi, 
> > > 
> > > recently, while playing around with IMA modules check support, I notice
> > > that when the kernel was compiled/installed with XZ-compressed modules
> > > the IMA kernel infra returns -EACCESS on modules initialization. Let me
> > > detail a bit more:
> > > 
> > > I created the policy file (/etc/ima/ima-policy) with
> > > 
> > > measure func=MODULE_CHECK uid=0
> > > (... and more, policy file is attached)
> > > 
> > > then rebooted the kernel (that was built with XZ-compressed modules) and
> > > a bunch of modules didn't load, e.g.:
> > > 
> > > without ima-policy:
> > > # lsmod | wc -l
> > > 32
> > > 
> > > with it:
> > > # lsmod | wc -l
> > > 14
> > > 
> > > these 14 modules were all loaded during initram booting phase, but if I
> > > rmmod some of them and try to modprobe (strace output):
> > > 
> > > init_module(0x55b9bcc9bba0, 17763, "") = -1 EACCES (Permission denied)
> > > 
> > > The point is that there is no violation, because the error occurs right
> > > after kmod calls init_module() and the call follows to ima_read_file()
> > > (kernel tree: security/integrity/ima/ima_main.c) which returns -EACCES,
> > > since there is no 'file' structure available (init_module uses memory
> > > region only and not file descriptor).
> > 
> > IMA hashes/signatures are stored as xattrs, which requires a file
> > descriptor.  IMA only supports the new kernel module syscall, which
> > provides the file descriptor.
> > 
> 
> Patches from Thiago Bauerman
> (http://www.spinics.net/lists/linux-integrity/msg00243.html) could help
> to solve this, don't they?

True.  Initially we're introducing appended signature support for
kernel images.  Afterwards, perhaps we'll be able to use it to close
other appraisal gaps (e.g bpf).

> > > I notice this behavior using Fedora 26 (using SELinux as sec framework)
> > > and up-to-date kernel, the question is: should IMA kernel mechanism
> > > support memory regions integrity measurements, maybe following the steps
> > > that MODULE_SIGNATURE takes (that check for module signature through its
> > > mmap region), allowing compressed modules to be loaded? Or kernels built
> > > with XZ/GZ-compressed modules was never meant to be supported? Is it a
> > > bug or a possible enhancement?
> > 
> > If the IMA policy requires kernel modules to be signed, an appended
> > signature is permitted as long as the kernel is configured with
> > CONFIG_MODULE_SIG_FORCE enabled.
> > 
> 
> Right, but it's also possible to note that CONFIG_MODULE_SIG_FORCE is
> handled on kernel/module.c and has a kernel cmdline param,
> module.sig_enforce, that is read in case CONFIG_MODULE_SIG_FORCE is not
> set. Wouldn't be better ima_read_file depend on this cmdline param
> instead directly on the CONFIG? That way kernels compiled without
> CONFIG_MODULE_SIG_FORCE set as default would have the option to enable
> the kernel param and use their normal policy (MODULE_CHECK).
> 
> What do you think?

I wasn't aware of the module_param.  Thank you for pointing it out.
 "sig_enforce" is currently defined as static.  Should it be defined
as __initdata?

Mimi

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: IMA appraisal against xz-compressed modules
  2017-10-19 14:20     ` Mimi Zohar
@ 2017-10-19 19:31       ` Bruno E. O. Meneguele
  2017-10-19 20:13         ` Mimi Zohar
  0 siblings, 1 reply; 7+ messages in thread
From: Bruno E. O. Meneguele @ 2017-10-19 19:31 UTC (permalink / raw)
  To: Mimi Zohar; +Cc: linux-integrity, lwang

[-- Attachment #1: Type: multipart/signed, Size: 3987 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: IMA appraisal against xz-compressed modules
  2017-10-19 19:31       ` Bruno E. O. Meneguele
@ 2017-10-19 20:13         ` Mimi Zohar
  2017-10-20 19:36           ` Bruno E. O. Meneguele
  0 siblings, 1 reply; 7+ messages in thread
From: Mimi Zohar @ 2017-10-19 20:13 UTC (permalink / raw)
  To: Bruno E. O. Meneguele; +Cc: linux-integrity, lwang

On Thu, 2017-10-19 at 17:31 -0200, Bruno E. O. Meneguele wrote:
> On 19-10, Mimi Zohar wrote:
 
> > > Right, but it's also possible to note that CONFIG_MODULE_SIG_FORCE is
> > > handled on kernel/module.c and has a kernel cmdline param,
> > > module.sig_enforce, that is read in case CONFIG_MODULE_SIG_FORCE is not
> > > set. Wouldn't be better ima_read_file depend on this cmdline param
> > > instead directly on the CONFIG? That way kernels compiled without
> > > CONFIG_MODULE_SIG_FORCE set as default would have the option to enable
> > > the kernel param and use their normal policy (MODULE_CHECK).
> > > 
> > > What do you think?
> > 
> > I wasn't aware of the module_param.  Thank you for pointing it out.
> >  "sig_enforce" is currently defined as static.  Should it be defined
> > as __initdata?
> > 
> 
> Well, at first I thought it could stay as it is and just create a
> "getter" function, like "is_module_sig_enforced()", and use it on
> ima_main.c through module.h, since this code would be called to every
> module loaded in runtime.
> 
> If it's ok to you I can try to write a patch against integrity-next and
> see how it behaves.

Thanks!

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: IMA appraisal against xz-compressed modules
  2017-10-19 20:13         ` Mimi Zohar
@ 2017-10-20 19:36           ` Bruno E. O. Meneguele
  0 siblings, 0 replies; 7+ messages in thread
From: Bruno E. O. Meneguele @ 2017-10-20 19:36 UTC (permalink / raw)
  To: Mimi Zohar; +Cc: linux-integrity, lwang

[-- Attachment #1: Type: multipart/signed, Size: 1526 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2017-10-20 19:36 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-12 14:55 IMA appraisal against xz-compressed modules Bruno E. O. Meneguele
2017-10-15  3:11 ` Mimi Zohar
2017-10-18 19:49   ` Bruno E. O. Meneguele
2017-10-19 14:20     ` Mimi Zohar
2017-10-19 19:31       ` Bruno E. O. Meneguele
2017-10-19 20:13         ` Mimi Zohar
2017-10-20 19:36           ` Bruno E. O. Meneguele

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.