OpenBMC Learning Series - security

Joseph Reynolds jrey at linux.ibm.com
Sat Oct 10 04:33:17 AEDT 2020


On 7/24/20 7:13 PM, Sai Dasari wrote:
>
> Team,
>
> Thanks to all volunteer speakers stepping up to share their expertise 
> with community. For speaker convenience, the sessions will be held on 
> two *TimeZones* (USA/PDT and INDIA/IST) on *Thursdays at 10AM* starting 
> from 8/20 onwards.
>
> I encourage you to take a look at the shared doc @ 
> https://docs.google.com/spreadsheets/d/1RRO5cgutKE7zRPcjcFjrNn-GI5AYoW0FivEZJe_EyWs/edit?usp=sharing 
> for more information regarding this series. If you would like to see 
> more topics (either as speakers or new community members), please feel 
> free to add them for extending the topics in future sessions.
>
...snip...


Sai and the OpenBMC community,

Here is my big-picture idea to organize OpenBMC's security effort. I 
hope this material will guide the project's overall security effort, 
including the learning series.

I want to take this process one step at a time to help build consensus 
for my approach.

My big idea is to apply the world's best publicly available security 
schemes to the OpenBMC project.  Schemes like Microsoft Security 
Engineering, IBM Secure Engineering, and the Common Criteria evaluation 
have been developed over decades of experience and give us the most 
complete guidance for the OpenBMC project and its users.  We should use 
them.

Does this seem like the right approach?  See discussion in footnote 1.

These schemes have a lot in common.  For example, they all advocate for 
threat modeling, security testing, and development process steps like 
design and code reviews.  I am trying to get at that common portion and 
I would like to hear your ideas.

The elements of each scheme are listed in footnote 2 below.  Which of 
these seem most important?  It is so easy (and fun) to focus on security 
functions like authentication and transport layer security algorithms.  
But we might be served better by documenting BMC's architecture to 
understand where its weaknesses are, or making better security tests.  I 
would like to hear your ideas, and I can help sort them into the 
big-picture.


For the learning series presentation, I suggest picking up a dozen or so 
categories from below, including authentication and user management, 
testing and coding, documentation and threat models, incident response, 
etc.  Does that sound right?

- Joseph

## Footnote 1 - How we can use the world's best security schemes

I foresee several difficulties in trying to apply the schemes:
1. The project has not agreed to any particular security scheme and is 
unlikely to choose one, because...
2. Performing any security evaluation is expensive in terms of 
person-hours investment by subject matter experts and we have limited 
resources, and...
3. The big-picture security schemes apply to an entire IT project (like 
a server) while OpenBMC is only source code for one part of any such 
project, so we cannot apply the full methodology.

Why a big-picture scheme?  Security schemes that have a smaller scope 
will not take the project security to the highest levels.  The OpenBMC 
project itself should perform security work needed by various 
big-picture security schemes (such as listed above).  This includes not 
only features like transport security and authentication, but also 
documentation, evidence of design and code reviews, testing, and bug 
fixes, as required by big-picture secure engineering mandates.  Yes, the 
project does all that already, but that work does not have a security 
context.  I would like to help define that context.

Would it be helpful to show how more targeted guidelines from OWASP, 
OCP, and CSIS fit into the big-picture schemes?
[OWASP]: https://www.owasp.org/
[OCP]: https://www.opencompute.org/wiki/Security
[CSIS]: 
https://github.com/opencomputeproject/Security/blob/master/SecureFirmwareDevelopmentBestPractices.md

NOTE: This is a refresh of the effort started in the [security working 
group][] under the headings of "security assurance workflow" and 
"applicable standards".
[security working group]: 
https://github.com/openbmc/openbmc/wiki/Security-working-group

## Footnote 2 - Elements of high-level security schemes

Here are three high-level security schemes.  Is this the right set of 
schemes?
I've started to break these down.

==> Microsoft Security Engineering
https://www.microsoft.com/en-us/securityengineering
Security Development Lifecycle (SDL)
Operational Security Assurance (OSA)
Open Source Security
(Will someone help articulate which elements apply to OpenBMC?)

==> Common Criteria
https://www.commoncriteriaportal.org/cc/
Functional requirements:
- Security Audit (audit logs)
- Communication
- Cryptographic Support
- User data protection
- Authentication
- Security Management
- Privacy
- Protection of the BMC
- Resource Utilization
- BMC access, Trusted paths
Assurance requirements:
- Document BMC architecture and configuration
- Development (architecture, functions spec, implementation)
- Internal representation (source code)
- Guidance documentation
- Life-cycle support
- Tests
- Vulnerability Assessment.
Note: I've annotated and substituted some terminology to make this more 
readable (for example, TOE means BMC).  Also, I've skipped over some 
topics and grossly oversimplified others.  My goal is to make this list 
understandable to the BMC community and the organize OpenBMC work so it 
can be understood by security folks who do not have a BMC background.

==> IBM Secure Engineering
ibm.com/redbooks: Security in Development, The IBM Secure Engineering 
Framework
Development process: protect source code, planing, testing
Product lifecycle management: vulnerabilities, fixes
Secure Engineering Framework:
- Education and awareness
- Project Planning
- Risk assessment and threat modeling
- Security requirements
- Secure coding
- Test and vulnerability assessment
- Documentation
- Incident response
- Supply chain

Includes https://www.ibm.com/trust/security-spbd
- Assessment
- Threat Model
- Code Scan
- Security Tests
- Penetration Test
- Vulnerability Management



More information about the openbmc mailing list