ossf / wg-best-practices-os-developers

The Best Practices for OSS Developers working group is dedicated to raising awareness and education of secure code best practices for open source developers.
https://openssf.org
Apache License 2.0
763 stars 130 forks source link

Developer knowledge/education - comments on draft outline? #4

Closed david-a-wheeler closed 4 years ago

david-a-wheeler commented 4 years ago

All: I've been developing some educational materials to help teach software developers the basics on how to develop secure software. Presumably best practices should be included, and I think having software developers know how to develop secure software is itself a best practice. This not intended to be a graduate course, but it is intended to cover the basics for many different kinds of software.

Here's my current draft outline. I'd love to hear feedback. Thanks!

david-a-wheeler commented 4 years ago

Thanks for the thumbs-up!

Oh, a quick clarification: The intended audience is software developers for both closed & open source software. How to develop secure software is mostly the same for both, so I didn't think it made sense to split it like that. However, I definitely intend to include specific information on how to use OSS in a more secure manner. That definitely affects developers of both closed & open source software! For example, a brief discussion about how to avoid typosquatting won't take a lot of space, but it might prevent a lot of problems.

mayakacz commented 4 years ago

This not intended to be a graduate course, but it is intended to cover the basics for many different kinds of software.

Where are you thinking of hosting/ publishing/ offering this?

Some thoughts:

I'd be interested in particular to see what content you have for "Selecting" software in the supply chain section!

david-a-wheeler commented 4 years ago

Where are you thinking of hosting/ publishing/ offering this?

I'm planning to use EdX, for a variety of reasons:

The intent is to make the instructional material available under the Creative Commons Attribution (CC-BY) license, so it will be open content.

Some thoughts: This looks great!

Thanks so much!

Under Design, possibly under "Other Design Principles", I would suggest adding something about privacy as well - e.g., don't collect data you don't need.

I agree that privacy is vital! I would put it even earlier than design. I think privacy is really a requirement that flows down to design & implementation. That said, I'll definitely make sure to cover it.

I don't see anything here about compliance, and how that relates to security. That may be on purpose, just calling out.

If it's required, again, I would call those requirements. But yes, that should get a mention.

That may be a little tricky, because there are so many specific compliance requirements for different industries. Also, if you have a compliance requirement, you often already know about it & don't need a course to tell you that :-). But I agree that compliance should be discussed somewhere.

One challenge: Sometimes people confuse compliance with security. You can comply with some checklist and be hideously insecure. If someone's goal is to make a secure system, and they view compliance as a tool to help make it secure (e.g., by not forgetting something important), that can work well. If their goal is to maliciously comply, then they can easily make a system comply while also being hideously secure. I want the course to focus on actual & practical security, not security theater.

Somewhere (under "Vulnerabilities"?) it would be worth explaining how vulnerability disclosure 'typically' works.

I agree!

I'd be interested in particular to see what content you have for "Selecting" software in the supply chain section!

I'm very concerned about that topic, I hope we agree it's important!

I have no special magic. Instead, I think we can offer a set of reasonable tips/recommendations on how to manage risk. Here's kind of tips I had in mind, additional suggestions welcome!:

MarcinHoppe commented 4 years ago

Somewhere (under "Vulnerabilities"?) it would be worth explaining how vulnerability disclosure 'typically' works.

I think it would be great to explain this both to OSS maintainers and to OSS consumers.

SecurityCRob commented 4 years ago

This is a simple thing to put together. I've got internal materials as well as some from FIRST (Forum of Incident Response and Product Security Teams) based off of the Coordinated Vulnerability Disclosure framework that are available to refer to.

david-a-wheeler commented 4 years ago

100% agree that the course needs to discuss vulnerability disclosure, I will definitely add it. If there are URLs people recommend referring to, please reply here!

There's also an OpenSSF working group forming on vulnerability disclosures; once I have something I intend to post an issue there for their comments. Their WG is here: https://github.com/ossf/wg-vulnerability-disclosures

MarcinHoppe commented 4 years ago

I am a leader of that WG and I'll keep an eye on areas where we could collaborate.

SecurityCRob commented 4 years ago

This is a simple thing to put together. I've got internal materials as well as some from FIRST (Forum of Incident Response and Product Security Teams) based off of the Coordinated Vulnerability Disclosure framework that are available to refer to.

https://www.first.org/global/sigs/vulnerability-coordination/multiparty/guidelines-v1.1

dlorenc commented 4 years ago

100% agree that the course needs to discuss vulnerability disclosure, I will definitely add it. If there are URLs people recommend referring to, please reply here!

Yes! Something like "Life of a CVE", that covers the research, disclosure, reservation of the CVE, publication, embargoes, patching, resolution, etc. process would be useful probably by itself.

SecurityCRob commented 4 years ago

Yes! Something like "Life of a CVE", that covers the research, disclosure, reservation of the CVE, publication, embargoes, patching, resolution, etc. process would be useful probably by itself.

Ironically enough I'm in the middle of writing something like this up for our internal engineering teams. The beginning piece upstream would marry very well with that effort to tell 2/3 of the story (with downstream/end-users being the last leg)

david-a-wheeler commented 4 years ago

ALL: If you're interested in seeing or reviewing the draft contents of this course, please send me an email with a subject line like "Request early access to secure software development course". My email address:

dwheeler AT linuxfoundation DOT org.

I would love to have your feedback/suggestions/etc.

The draft course material is a Google docs document. My plan is to provide "Suggestion" access to people, so that you can directly suggest specific changes (my preference!). If you have broader suggestions that aren't easy to capture that way, create comments.

Thanks for all the comments above! Here are a few notes.

Our educational folks have asked me to divide up the course. I've divided it into 3 parts:

Don't take the estimates too seriously, I'm sure things will change anyway.

Thank you!

david-a-wheeler commented 4 years ago

Thank you everyone for your feedback! We got that feedback & incorporated it, so I'm closing this issue.