All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thiago Jung Bauermann <bauerman@linux.vnet.ibm.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Mark Rutland <mark.rutland@arm.com>,
	Stewart Smith <stewart@linux.vnet.ibm.com>,
	bhe@redhat.com, linuxppc-dev@lists.ozlabs.org,
	Dave Young <dyoung@redhat.com>,
	kexec@lists.infradead.org,
	Russell King - ARM Linux <linux@armlinux.org.uk>,
	linux-kernel@vger.kernel.org,
	AKASHI Takahiro <takahiro.akashi@linaro.org>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	Samuel Mendoza-Jonas <sam@mendozajonas.com>,
	Mimi Zohar <zohar@linux.vnet.ibm.com>,
	Vivek Goyal <vgoyal@redhat.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [RFC 0/3] extend kexec_file_load system call
Date: Fri, 15 Jul 2016 18:03:35 -0300	[thread overview]
Message-ID: <1808359.GMbkTHC4O6@hactar> (raw)
In-Reply-To: <3489461.zQnV5C1bXR@wuerfel>

Am Freitag, 15 Juli 2016, 22:26:09 schrieb Arnd Bergmann:
> On Friday, July 15, 2016 2:42:10 PM CEST Russell King - ARM Linux wrote:
> > On other architectures, DT can also contain open-firmware "functions"
> > but I don't think there's much support in the kernel for that - maybe
> > the PPC folk can reply on that point.
> 
> The open firmware runtime interface are shut down by the time we have
> a flattened device tree, so those are not accessible any more. IIRC
> SPARC leaves the open firmware interface live, but it doesn't use
> fdt, so that's not relevant here.
> 
> However, the powerpc specific RTAS runtime services provide a similar
> interface to the UEFI runtime support and allow to call into
> binary code from the kernel, which gets mapped from a physical
> address in the "linux,rtas-base" property in the rtas device node.
> 
> Modifying the /rtas node will definitely give you a backdoor into
> priviledged code, but modifying only /chosen should not let you get
> in through that specific method.

Except that arch/powerpc/kernel/rtas.c looks for any node in the tree called 
"rtas", so it will try to use /chosen/rtas, or /chosen/foo/rtas.

We can forbid subnodes in /chosen in the dtb passed to kexec_file_load, 
though that means userspace can't use the simple-framebuffer binding via 
this mechanism.

We also have to blacklist the device_type and compatible properties in 
/chosen to avoid the problem Mark mentioned.

Still doable, but not ideal. :-/

-- 
[]'s
Thiago Jung Bauermann
IBM Linux Technology Center


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

WARNING: multiple messages have this Message-ID (diff)
From: Thiago Jung Bauermann <bauerman@linux.vnet.ibm.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Russell King - ARM Linux <linux@armlinux.org.uk>,
	Vivek Goyal <vgoyal@redhat.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Stewart Smith <stewart@linux.vnet.ibm.com>,
	Mimi Zohar <zohar@linux.vnet.ibm.com>,
	bhe@redhat.com, linuxppc-dev@lists.ozlabs.org,
	kexec@lists.infradead.org, linux-kernel@vger.kernel.org,
	AKASHI Takahiro <takahiro.akashi@linaro.org>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	Samuel Mendoza-Jonas <sam@mendozajonas.com>,
	Dave Young <dyoung@redhat.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [RFC 0/3] extend kexec_file_load system call
Date: Fri, 15 Jul 2016 18:03:35 -0300	[thread overview]
Message-ID: <1808359.GMbkTHC4O6@hactar> (raw)
In-Reply-To: <3489461.zQnV5C1bXR@wuerfel>

Am Freitag, 15 Juli 2016, 22:26:09 schrieb Arnd Bergmann:
> On Friday, July 15, 2016 2:42:10 PM CEST Russell King - ARM Linux wrote:
> > On other architectures, DT can also contain open-firmware "functions"
> > but I don't think there's much support in the kernel for that - maybe
> > the PPC folk can reply on that point.
> 
> The open firmware runtime interface are shut down by the time we have
> a flattened device tree, so those are not accessible any more. IIRC
> SPARC leaves the open firmware interface live, but it doesn't use
> fdt, so that's not relevant here.
> 
> However, the powerpc specific RTAS runtime services provide a similar
> interface to the UEFI runtime support and allow to call into
> binary code from the kernel, which gets mapped from a physical
> address in the "linux,rtas-base" property in the rtas device node.
> 
> Modifying the /rtas node will definitely give you a backdoor into
> priviledged code, but modifying only /chosen should not let you get
> in through that specific method.

Except that arch/powerpc/kernel/rtas.c looks for any node in the tree called 
"rtas", so it will try to use /chosen/rtas, or /chosen/foo/rtas.

We can forbid subnodes in /chosen in the dtb passed to kexec_file_load, 
though that means userspace can't use the simple-framebuffer binding via 
this mechanism.

We also have to blacklist the device_type and compatible properties in 
/chosen to avoid the problem Mark mentioned.

Still doable, but not ideal. :-/

-- 
[]'s
Thiago Jung Bauermann
IBM Linux Technology Center

WARNING: multiple messages have this Message-ID (diff)
From: bauerman@linux.vnet.ibm.com (Thiago Jung Bauermann)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC 0/3] extend kexec_file_load system call
Date: Fri, 15 Jul 2016 18:03:35 -0300	[thread overview]
Message-ID: <1808359.GMbkTHC4O6@hactar> (raw)
In-Reply-To: <3489461.zQnV5C1bXR@wuerfel>

Am Freitag, 15 Juli 2016, 22:26:09 schrieb Arnd Bergmann:
> On Friday, July 15, 2016 2:42:10 PM CEST Russell King - ARM Linux wrote:
> > On other architectures, DT can also contain open-firmware "functions"
> > but I don't think there's much support in the kernel for that - maybe
> > the PPC folk can reply on that point.
> 
> The open firmware runtime interface are shut down by the time we have
> a flattened device tree, so those are not accessible any more. IIRC
> SPARC leaves the open firmware interface live, but it doesn't use
> fdt, so that's not relevant here.
> 
> However, the powerpc specific RTAS runtime services provide a similar
> interface to the UEFI runtime support and allow to call into
> binary code from the kernel, which gets mapped from a physical
> address in the "linux,rtas-base" property in the rtas device node.
> 
> Modifying the /rtas node will definitely give you a backdoor into
> priviledged code, but modifying only /chosen should not let you get
> in through that specific method.

Except that arch/powerpc/kernel/rtas.c looks for any node in the tree called 
"rtas", so it will try to use /chosen/rtas, or /chosen/foo/rtas.

We can forbid subnodes in /chosen in the dtb passed to kexec_file_load, 
though that means userspace can't use the simple-framebuffer binding via 
this mechanism.

We also have to blacklist the device_type and compatible properties in 
/chosen to avoid the problem Mark mentioned.

Still doable, but not ideal. :-/

-- 
[]'s
Thiago Jung Bauermann
IBM Linux Technology Center

  reply	other threads:[~2016-07-15 21:04 UTC|newest]

Thread overview: 265+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-12  1:41 [RFC 0/3] extend kexec_file_load system call AKASHI Takahiro
2016-07-12  1:41 ` AKASHI Takahiro
2016-07-12  1:41 ` AKASHI Takahiro
2016-07-12  1:41 ` [RFC 1/3] syscall: add kexec_file_load to generic unistd.h AKASHI Takahiro
2016-07-12  1:41   ` AKASHI Takahiro
2016-07-12  1:41   ` AKASHI Takahiro
2016-07-12  1:42 ` [RFC 2/3] kexec: add dtb info to struct kimage AKASHI Takahiro
2016-07-12  1:42   ` AKASHI Takahiro
2016-07-12  1:42   ` AKASHI Takahiro
2016-07-12  1:42 ` [RFC 3/3] kexec: extend kexec_file_load system call AKASHI Takahiro
2016-07-12  1:42   ` AKASHI Takahiro
2016-07-12  1:42   ` AKASHI Takahiro
2016-07-15 13:09   ` Vivek Goyal
2016-07-15 13:09     ` Vivek Goyal
2016-07-15 13:09     ` Vivek Goyal
2016-07-15 13:19     ` Mark Rutland
2016-07-15 13:19       ` Mark Rutland
2016-07-15 13:19       ` Mark Rutland
2016-07-18  2:30       ` Dave Young
2016-07-18  2:30         ` Dave Young
2016-07-18  2:30         ` Dave Young
2016-07-18 10:07         ` Mark Rutland
2016-07-18 10:07           ` Mark Rutland
2016-07-18 10:07           ` Mark Rutland
2016-07-19  0:55           ` Dave Young
2016-07-19  0:55             ` Dave Young
2016-07-19  0:55             ` Dave Young
2016-07-19 10:52             ` Mark Rutland
2016-07-19 10:52               ` Mark Rutland
2016-07-19 10:52               ` Mark Rutland
2016-07-19 12:24               ` Vivek Goyal
2016-07-19 12:24                 ` Vivek Goyal
2016-07-19 12:24                 ` Vivek Goyal
2016-07-19 12:47                 ` Mark Rutland
2016-07-19 12:47                   ` Mark Rutland
2016-07-19 12:47                   ` Mark Rutland
2016-07-19 13:26                   ` Vivek Goyal
2016-07-19 13:26                     ` Vivek Goyal
2016-07-19 13:26                     ` Vivek Goyal
2016-07-20 11:41         ` David Laight
2016-07-20 11:41           ` David Laight
2016-07-20 11:41           ` David Laight
2016-07-20 11:41           ` David Laight
2016-07-21  9:21           ` Russell King - ARM Linux
2016-07-21  9:21             ` Russell King - ARM Linux
2016-07-21  9:21             ` Russell King - ARM Linux
2016-07-18  2:33     ` Dave Young
2016-07-18  2:33       ` Dave Young
2016-07-18  2:33       ` Dave Young
2016-07-27  0:24   ` [PATCH v2 " Thiago Jung Bauermann
2016-07-27  0:24     ` Thiago Jung Bauermann
2016-07-27  0:24     ` Thiago Jung Bauermann
2016-08-05 20:46     ` Thiago Jung Bauermann
2016-08-05 20:46       ` Thiago Jung Bauermann
2016-08-05 20:46       ` Thiago Jung Bauermann
2016-07-12 13:25 ` [RFC 0/3] " Eric W. Biederman
2016-07-12 13:25   ` Eric W. Biederman
2016-07-12 13:25   ` Eric W. Biederman
2016-07-12 13:58   ` Thiago Jung Bauermann
2016-07-12 13:58     ` Thiago Jung Bauermann
2016-07-12 13:58     ` Thiago Jung Bauermann
2016-07-12 14:02     ` Vivek Goyal
2016-07-12 14:02       ` Vivek Goyal
2016-07-12 14:02       ` Vivek Goyal
2016-07-12 23:45       ` Stewart Smith
2016-07-12 23:45         ` Stewart Smith
2016-07-12 23:45         ` Stewart Smith
2016-07-13 13:27         ` Vivek Goyal
2016-07-13 13:27           ` Vivek Goyal
2016-07-13 13:27           ` Vivek Goyal
2016-07-12 14:02   ` Arnd Bergmann
2016-07-12 14:02     ` Arnd Bergmann
2016-07-12 14:02     ` Arnd Bergmann
2016-07-12 14:18     ` Vivek Goyal
2016-07-12 14:18       ` Vivek Goyal
2016-07-12 14:18       ` Vivek Goyal
2016-07-12 14:24       ` Arnd Bergmann
2016-07-12 14:24         ` Arnd Bergmann
2016-07-12 14:24         ` Arnd Bergmann
2016-07-12 14:50         ` Mark Rutland
2016-07-12 14:50           ` Mark Rutland
2016-07-12 14:50           ` Mark Rutland
2016-07-13  2:36           ` Dave Young
2016-07-13  2:36             ` Dave Young
2016-07-13  2:36             ` Dave Young
2016-07-13  8:01             ` Arnd Bergmann
2016-07-13  8:01               ` Arnd Bergmann
2016-07-13  8:01               ` Arnd Bergmann
2016-07-13  8:23               ` Stewart Smith
2016-07-13  8:23                 ` Stewart Smith
2016-07-13  8:23                 ` Stewart Smith
2016-07-13  9:41               ` Mark Rutland
2016-07-13  9:41                 ` Mark Rutland
2016-07-13  9:41                 ` Mark Rutland
2016-07-13 13:13                 ` Arnd Bergmann
2016-07-13 13:13                   ` Arnd Bergmann
2016-07-13 13:13                   ` Arnd Bergmann
2016-07-13 18:45                   ` Thiago Jung Bauermann
2016-07-13 18:45                     ` Thiago Jung Bauermann
2016-07-13 18:45                     ` Thiago Jung Bauermann
2016-07-13 19:59                     ` Arnd Bergmann
2016-07-13 19:59                       ` Arnd Bergmann
2016-07-13 19:59                       ` Arnd Bergmann
2016-07-14  2:18                       ` Thiago Jung Bauermann
2016-07-14  2:18                         ` Thiago Jung Bauermann
2016-07-14  2:18                         ` Thiago Jung Bauermann
2016-07-14  8:29                         ` Arnd Bergmann
2016-07-14  8:29                           ` Arnd Bergmann
2016-07-14  8:29                           ` Arnd Bergmann
2016-07-15  1:44                           ` Thiago Jung Bauermann
2016-07-15  1:44                             ` Thiago Jung Bauermann
2016-07-15  1:44                             ` Thiago Jung Bauermann
2016-07-15  7:31                             ` Arnd Bergmann
2016-07-15  7:31                               ` Arnd Bergmann
2016-07-15  7:31                               ` Arnd Bergmann
2016-07-15 13:26                               ` Vivek Goyal
2016-07-15 13:26                                 ` Vivek Goyal
2016-07-15 13:26                                 ` Vivek Goyal
2016-07-15 13:33                                 ` Mark Rutland
2016-07-15 13:33                                   ` Mark Rutland
2016-07-15 13:33                                   ` Mark Rutland
2016-07-15 15:29                                   ` Thiago Jung Bauermann
2016-07-15 15:29                                     ` Thiago Jung Bauermann
2016-07-15 15:29                                     ` Thiago Jung Bauermann
2016-07-15 15:47                                     ` Mark Rutland
2016-07-15 15:47                                       ` Mark Rutland
2016-07-15 15:47                                       ` Mark Rutland
2016-07-15 13:42                                 ` Russell King - ARM Linux
2016-07-15 13:42                                   ` Russell King - ARM Linux
2016-07-15 13:42                                   ` Russell King - ARM Linux
2016-07-15 20:26                                   ` Arnd Bergmann
2016-07-15 20:26                                     ` Arnd Bergmann
2016-07-15 20:26                                     ` Arnd Bergmann
2016-07-15 21:03                                     ` Thiago Jung Bauermann [this message]
2016-07-15 21:03                                       ` Thiago Jung Bauermann
2016-07-15 21:03                                       ` Thiago Jung Bauermann
2016-07-22  0:09                                       ` Thiago Jung Bauermann
2016-07-22  0:09                                         ` Thiago Jung Bauermann
2016-07-22  0:09                                         ` Thiago Jung Bauermann
2016-07-22  0:53                                         ` Jeremy Kerr
2016-07-22  0:53                                           ` Jeremy Kerr
2016-07-22  0:53                                           ` Jeremy Kerr
2016-07-22  2:54                                         ` Michael Ellerman
2016-07-22  2:54                                           ` Michael Ellerman
2016-07-22  2:54                                           ` Michael Ellerman
2016-07-22 20:41                                           ` Thiago Jung Bauermann
2016-07-22 20:41                                             ` Thiago Jung Bauermann
2016-07-22 20:41                                             ` Thiago Jung Bauermann
2016-07-15  8:49                   ` Russell King - ARM Linux
2016-07-15  8:49                     ` Russell King - ARM Linux
2016-07-15  8:49                     ` Russell King - ARM Linux
2016-07-15 13:03                     ` Vivek Goyal
2016-07-15 13:03                       ` Vivek Goyal
2016-07-15 13:03                       ` Vivek Goyal
2016-07-13  9:34             ` Mark Rutland
2016-07-13  9:34               ` Mark Rutland
2016-07-13  9:34               ` Mark Rutland
2016-07-13 17:38               ` AKASHI Takahiro
2016-07-13 17:38                 ` AKASHI Takahiro
2016-07-13 17:38                 ` AKASHI Takahiro
2016-07-13 17:58                 ` Mark Rutland
2016-07-13 17:58                   ` Mark Rutland
2016-07-13 17:58                   ` Mark Rutland
2016-07-13 19:57                   ` Arnd Bergmann
2016-07-13 19:57                     ` Arnd Bergmann
2016-07-13 19:57                     ` Arnd Bergmann
2016-07-14 12:42                     ` Mark Rutland
2016-07-14 12:42                       ` Mark Rutland
2016-07-14 12:42                       ` Mark Rutland
2016-07-14  1:54                 ` Dave Young
2016-07-14  1:54                   ` Dave Young
2016-07-14  1:54                   ` Dave Young
2016-07-14  1:50               ` Dave Young
2016-07-14  1:50                 ` Dave Young
2016-07-14  1:50                 ` Dave Young
2016-07-12 16:25   ` Thiago Jung Bauermann
2016-07-12 16:25     ` Thiago Jung Bauermann
2016-07-12 16:25     ` Thiago Jung Bauermann
2016-07-12 20:58     ` Petr Tesarik
2016-07-12 20:58       ` Petr Tesarik
2016-07-12 20:58       ` Petr Tesarik
2016-07-12 21:22       ` Eric W. Biederman
2016-07-12 21:22         ` Eric W. Biederman
2016-07-12 21:22         ` Eric W. Biederman
2016-07-12 21:36         ` Eric W. Biederman
2016-07-12 21:36           ` Eric W. Biederman
2016-07-12 21:36           ` Eric W. Biederman
2016-07-12 21:53         ` Petr Tesarik
2016-07-12 21:53           ` Petr Tesarik
2016-07-12 21:53           ` Petr Tesarik
2016-07-12 22:18       ` Russell King - ARM Linux
2016-07-12 22:18         ` Russell King - ARM Linux
2016-07-12 22:18         ` Russell King - ARM Linux
2016-07-13  4:59         ` Stewart Smith
2016-07-13  4:59           ` Stewart Smith
2016-07-13  4:59           ` Stewart Smith
2016-07-13  7:36           ` Russell King - ARM Linux
2016-07-13  7:36             ` Russell King - ARM Linux
2016-07-13  7:36             ` Russell King - ARM Linux
2016-07-13  7:47             ` Ard Biesheuvel
2016-07-13  7:47               ` Ard Biesheuvel
2016-07-13  7:47               ` Ard Biesheuvel
2016-07-13  8:09               ` Russell King - ARM Linux
2016-07-13  8:09                 ` Russell King - ARM Linux
2016-07-13  8:09                 ` Russell King - ARM Linux
2016-07-13  8:20               ` Stewart Smith
2016-07-13  8:20                 ` Stewart Smith
2016-07-13  8:20                 ` Stewart Smith
2016-07-13  7:55             ` Stewart Smith
2016-07-13  7:55               ` Stewart Smith
2016-07-13  7:55               ` Stewart Smith
2016-07-13  8:26               ` Russell King - ARM Linux
2016-07-13  8:26                 ` Russell King - ARM Linux
2016-07-13  8:26                 ` Russell King - ARM Linux
2016-07-13  8:36                 ` Dave Young
2016-07-13  8:36                   ` Dave Young
2016-07-13  8:36                   ` Dave Young
2016-07-13  8:57                 ` Petr Tesarik
2016-07-13  8:57                   ` Petr Tesarik
2016-07-13  8:57                   ` Petr Tesarik
2016-07-13 13:03                 ` Vivek Goyal
2016-07-13 13:03                   ` Vivek Goyal
2016-07-13 13:03                   ` Vivek Goyal
2016-07-13 17:40                   ` Russell King - ARM Linux
2016-07-13 17:40                     ` Russell King - ARM Linux
2016-07-13 17:40                     ` Russell King - ARM Linux
2016-07-13 18:22                     ` Vivek Goyal
2016-07-13 18:22                       ` Vivek Goyal
2016-07-13 18:22                       ` Vivek Goyal
2016-07-18 12:46                       ` Balbir Singh
2016-07-18 12:46                         ` Balbir Singh
2016-07-18 12:46                         ` Balbir Singh
2016-07-18 13:26                         ` Vivek Goyal
2016-07-18 13:26                           ` Vivek Goyal
2016-07-18 13:26                           ` Vivek Goyal
2016-07-18 13:38                           ` Vivek Goyal
2016-07-18 13:38                             ` Vivek Goyal
2016-07-18 13:38                             ` Vivek Goyal
2016-07-20  3:45                           ` Balbir Singh
2016-07-20  3:45                             ` Balbir Singh
2016-07-20  3:45                             ` Balbir Singh
2016-07-20  8:35                             ` Russell King - ARM Linux
2016-07-20  8:35                               ` Russell King - ARM Linux
2016-07-20  8:35                               ` Russell King - ARM Linux
2016-07-20 10:47                               ` Michael Ellerman
2016-07-20 10:47                                 ` Michael Ellerman
2016-07-20 10:47                                 ` Michael Ellerman
2016-07-20 11:12                               ` Arnd Bergmann
2016-07-20 11:12                                 ` Arnd Bergmann
2016-07-20 11:12                                 ` Arnd Bergmann
2016-07-20 15:50                                 ` Thiago Jung Bauermann
2016-07-20 15:50                                   ` Thiago Jung Bauermann
2016-07-20 15:50                                   ` Thiago Jung Bauermann
2016-07-20 12:46                               ` Vivek Goyal
2016-07-20 12:46                                 ` Vivek Goyal
2016-07-20 12:46                                 ` Vivek Goyal
2016-07-20 12:27                             ` Vivek Goyal
2016-07-20 12:27                               ` Vivek Goyal
2016-07-20 12:27                               ` Vivek Goyal
2016-07-12 23:41       ` Stewart Smith
2016-07-12 23:41         ` Stewart Smith
2016-07-12 23:41         ` Stewart Smith
2016-07-13 13:25         ` Vivek Goyal
2016-07-13 13:25           ` Vivek Goyal
2016-07-13 13:25           ` Vivek Goyal

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=1808359.GMbkTHC4O6@hactar \
    --to=bauerman@linux.vnet.ibm.com \
    --cc=arnd@arndb.de \
    --cc=bhe@redhat.com \
    --cc=dyoung@redhat.com \
    --cc=ebiederm@xmission.com \
    --cc=kexec@lists.infradead.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mark.rutland@arm.com \
    --cc=sam@mendozajonas.com \
    --cc=stewart@linux.vnet.ibm.com \
    --cc=takahiro.akashi@linaro.org \
    --cc=vgoyal@redhat.com \
    --cc=zohar@linux.vnet.ibm.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.