[PATCH 4/6] kexec: A new system call, kexec_file_load, for in kernel kexec
Eric W. Biederman
ebiederm at xmission.com
Fri Nov 22 22:39:14 EST 2013
Vivek Goyal <vgoyal at redhat.com> writes:
> On Thu, Nov 21, 2013 at 07:19:07PM +0000, Matthew Garrett wrote:
>> On Thu, Nov 21, 2013 at 02:13:05PM -0500, Vivek Goyal wrote:
>> > On Thu, Nov 21, 2013 at 07:06:20PM +0000, Matthew Garrett wrote:
>> > > That would require a certain degree of massaging from userspace if we
>> > > want to be able to use the existing Authenticode signatures. Otherwise
>> > > we need to sign kernels twice.
>> > I was thinking oof signing the same kernel twice. Can I sign authenticode
>> > signed kernel again (using RSA signature as we do for modules) and append
>> > the signature to bzImage.
>> No, you'd need to do it the other way around.
> Hmm..., I am running out of ideas here. This is what I understand.
> - If I sign the bzImage (using PKCS1.5 signature), and later it is signed
> with authenticode format signatures, then PKCS1.5 signatures will not be
> valid as PE/COFF signing will do some modification to PE/COFF header in
> bzImage. And another problem is that then I don't have a way to find
> PKCS1.5 signature.
> - If bzImage is first signed with authenticode format signature and then
> signed using PKCS1.5 signature, then authenticode format signature
> will become invalid as it will also hash the data appened at the end
> of file.
> So looks like both signatures can't co-exist on same file. That means
> one signature has to be detached.
> I am beginning to think that create a kernel option which allows to choose
> between attached and detached signatures. Extend kexec syscall to allow
> a parameter to pass in detached signatures. If detached signatures are
> not passed, then look for signatures at the end of file. That way, those
> who are signing kernels using platform specific format (authenticode) in
> this case, they can generate detached signature while others can just
> use attached signatures.
> Any thoughts on how this should be handled?
Inside of a modern bzImage there is an embedded ELF image. How about in
userspace we just strip out the embedded ELF image and write that to a
file. Then we can use the same signature checking scheme as we do for
kernel modules. And you only have to support one file format.
As I recall there are already some platforms on x86 like Xen that
already need to strip out the embedded ELF image for their loaders to
have all of the information they need to load the image.
More information about the kexec