Security Working Group - Wednesday April 14 - results

Joseph Reynolds jrey at linux.ibm.com
Fri Apr 16 01:49:19 AEST 2021


On 4/13/21 5:08 PM, Joseph Reynolds wrote:
> This is a reminder of the OpenBMC Security Working Group meeting 
> scheduled for this Wednesday April 14 at 10:00am PDT.
>
> We'll discuss the following items on the agenda 
> <https://docs.google.com/document/d/1b7x9BaxsfcukQDqbvZsU2ehMq4xoJRQvLxxsDUWmAOI/edit>, 
> and anything else that comes up:
>
> 1. (no topics)
>
> It should be a lively discussion.

The discussion was less lively and more cerebral.

We continued (or restarted) the “physical interface” discussion from  
2021-03-17.

Why focus on BMC interfaces?  Shouldn’t we focus on threats?

  *

    Agreed we should focus on threats.  But the threats come from the
    BMCs interfaces, so we need a clear model of the BMC interfaces
    first to help organize and talk about threats.

  *

    Many organizations have tried threat modeling, and they all say to
    start with modeling the architecture of the thing you want to
    protect.  For OpenBMC, that’s the BMC.

  *

    The high level security schemes used by OpenBMC contributors (see
    https://github.com/openbmc/openbmc/wiki/Security-working-group
    <https://github.com/openbmc/openbmc/wiki/Security-working-group>)
    all say the same thing:

      o

        Create a threat model

      o

        Describe the interfaces as the first part of the threat model


Should we focus on the BMC or focus on the overall system?

Spoiler alert: The focus is on the BMC itself.


This is a tricky issue.  Discussion:

The BMC is a component in its host and the BMC operates various host 
components outside of itself.  This makes it hard to understand the 
BMC’s security boundary.  Both the BMC and the overall host system need 
to be protected.


The trust model for using BMCs in computer servers (OpenBMC’s initial 
model) is:

  *

    The BMC does not trust its host system.

  *

    The host system (for example, the host hypervisor) does not trust
    its BMC.

  *

    Various host elements effectively trust everyone, that is, they take
    no steps to protect themselves.  They may be operated by either BMC
    or host.  (See examples below.)


Expect the host system to protect itself from the BMC.  How it does so 
is outside the scope of the OpenBMC project.  It is expected that host 
security experts will review the shared host-BMC access to host 
components and their complex interactions as carefully as the BMC 
security experts.


In summary, the BMC’s threat model’s focus is on protecting itself.  
When the BMC is integrated into a host system, the BMC’s threat model is 
integrated into the host system’s threat model.


Scope of the BMC architectural model:

The model needs to be sufficient to show allBMC interfaces.  This 
includes host components outside the BMC which the BMC interacts with.  
A rule of thumb: if the OpenBMC project has code to interact with 
something, the BMC’s architectural model should have a place for that 
something.


The model begins with physical architecture: the physical BMC device (as 
a card or board builtin), continues with its physical interfaces to its 
host, and physical host elements the BMC connects with (as outlined 
below).  [This is intended to be descriptive and should not be 
interpreted to exclude virtual BMCs like QEMU].


Examples of items in scope:

  *

    All inband and all host-BMC interfaces.

  *

    All out of band interfaces.

  *

    All management interfaces (such as IPMI and Redfish).

  *

    All physical presence interfaces (like power buttons, physical USB
    ports, and intrusion detection switches).


The model then builds layer by layer.  For example, each layer needed to 
describe:

  *

    PLDM over MCTP over {LPC, PCIe, UART}

  *

    Virtual media is USB over IP over {the BMC’s network}


Some of these items are merely used by OpenBMC and are not very 
interesting.  (Example: i2c).  The BMC’s threat model will likely not 
say much about them, but they need to be present in the architectural 
description.


Each item ought to be described separately so a system integrator who 
mix&match protocols (example: MCTP over PCIe -vs- MCTP over LPC) can 
cleanly refer to the items they need.


Examples of physical elements shared between BMC & host:

  *

    Physical USB ports (BMC-attached and host-attached)

  *

    Physical network port (NC-SI)

  *

    Access to host processors

  *

    Access to cooling fans

  *

    Watchdog timers(?)


Additional examples of complex BMC / host interactions:

  *

    BMC handling host firmware.  The BMC provides firmware to the host,
    and the host may validate its firmware before using it, such as via
    digital signatures.

  *

    Virtual media aka USB over IP

  *

    BMC control of host BIOS settings.  For example, BMC can disable
    host USB ports.

  *

    BMC access to host serial, typically host console



-Joseph

>
>
> Access, agenda and notes are in the wiki:
> https://github.com/openbmc/openbmc/wiki/Security-working-group 
> <https://github.com/openbmc/openbmc/wiki/Security-working-group>
>
> - Joseph
>



More information about the openbmc mailing list