From: Patrick Wildt <patrick@blueri.se>
To: u-boot@lists.denx.de
Subject: spl: allow board_spl_fit_post_load() to fail
Date: Sat, 9 May 2020 19:45:57 +0200 [thread overview]
Message-ID: <20200509174557.GA6261@nox.fritz.box> (raw)
In-Reply-To: <6fb21594-fd58-93f0-986b-7cb0d4eb11d2@gmx.de>
On Sat, May 09, 2020 at 06:38:33PM +0200, Heinrich Schuchardt wrote:
> On 5/9/20 6:13 PM, Patrick Wildt wrote:
> > On i.MX platforms board_spl_fit_post_load() can check the loaded
> > SPL image for authenticity using its HAB engine. U-Boot's SPL
> > mechanism allows booting images from other sources as well, but
> > in the current setup the SPL would just hang if it encounters an
> > image that does not pass scrutiny. Allowing the function to return
> > an error, allows the SPL to try booting from another source as a
> > fallback instead of ending up as a brick.
> >
> > Signed-off-by: Patrick Wildt <patrick@blueri.se>
>
> Could an intruder abuse this by destroying a signed image and providing
> an unsigned image on a source under his control?
>
> Best regards
>
> Heinrich
Sure, let's think about it here. Maybe you have some more thoughts to
add.
First of all, the SPL goes through all the boot devices, and if there's
none to find with an image, it will hang. It will hang like it does
before the diff. The only difference is that it tries additional
sources before hanging. Thus the attacker, unless he can exploit it
in his first trial, or is able to force a reset, must have some access
to reset the machine to have it boot and try again. This seems like he
must have some kind of local or remote phyiscal access.
Let's assume the image is on the network or on another remote medium.
Then I guess the attacker will just try to attack that medium, and the
alternate boot sources won't make a difference.
I guess that means we should focus on local sources. I think we can
also ignore a removable SD card, since he can just put in another one
and try again.
So maybe let's think about SPI flash and eMMC, soldered on, not directly
accessible. If he has physical access, I guess he could open up the box
and desolder a few pins, or add some voltage here and there to try and
disrupt the bootup. But, then maybe it's easier to just desolder the
whole SPI/eMMC and add his own.
But what if he doesn't have that access? If he's remote? Ok, he will
probably have to exploit the daemon (webserver or whatever) to gain some
code execution. Then he'll try and become root, so he can access the
disks. Then I figure he'll try and overwrite or remove the image.
With this, on the next reboot it will (hopefully) fail to boot, unless
he already has an exploit, then my patch won't make a difference.
I figure the real issue could be that when the attacker has physical
access, manages to remove/replace the image with a fallback to load from
a device like an SD card, that it's now easier for him to try and find
an exploit.
Am I missing something?
Best regards,
Patrick
next prev parent reply other threads:[~2020-05-09 17:45 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-09 16:13 spl: allow board_spl_fit_post_load() to fail Patrick Wildt
2020-05-09 16:38 ` Heinrich Schuchardt
2020-05-09 17:45 ` Patrick Wildt [this message]
2020-05-09 18:09 ` Heinrich Schuchardt
2020-05-09 18:34 ` Patrick Wildt
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=20200509174557.GA6261@nox.fritz.box \
--to=patrick@blueri.se \
--cc=u-boot@lists.denx.de \
/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.