Skip to content

Commit 76dbaf4

Browse files
Add more lab instructions (#501)
* Add more lab instructions Signed-off-by: David A. Wheeler <[email protected]> * Add UNASSIGNED markers Signed-off-by: David A. Wheeler <[email protected]> --------- Signed-off-by: David A. Wheeler <[email protected]>
1 parent b46a512 commit 76dbaf4

File tree

2 files changed

+44
-31
lines changed

2 files changed

+44
-31
lines changed

docs/labs/README.md

Lines changed: 34 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ We also have a [template](template.html) available.
2525

2626
## Please contribute labs
2727

28-
[Please us create labs!](https://docs.google.com/document/d/1wNoNjLpdkgoXkRDvDBI32tm62rbASlfF6gxwyEkyTYs/edit)
28+
Please us create labs! See "[Please us create labs!](https://docs.google.com/document/d/1wNoNjLpdkgoXkRDvDBI32tm62rbASlfF6gxwyEkyTYs/edit)" for why it's
29+
important to help us create labs.
2930

3031
We would love to have people contribute relevant labs to help
3132
people learn how to develop secure software.
@@ -43,8 +44,10 @@ In particular, that page will link to how to
4344
We suggest using the [template](template.html) as a start.
4445

4546
To submit new or updated labs, create a pull request on the
46-
[OpenSSF Best Practices WG](https://github.com/ossf/wg-best-practices-os-developers/)
47+
[OpenSSF Best Practices Working Group (WG) repository](https://github.com/ossf/wg-best-practices-os-developers/)
4748
under the `docs/labs` directory.
49+
Simply fork the repository, add your proposed lab in the `docs/labs` directory,
50+
and create a pull request.
4851

4952
## Lab Roadmap
5053

@@ -56,6 +59,8 @@ Below are the sections where we plan to create labs, along with
5659
mappings to existing labs or people who have agreed to work on one.
5760
The items marked "PLANNED-1" are those we intend to do first;
5861
"PLANNED-2" are planned in a second pass.
62+
The ones marked "UNASSIGNED" are ones where no one has (yet) agreed to
63+
work on.
5964

6065
* Input Validation
6166
* Input Validation Basics
@@ -67,55 +72,55 @@ The items marked "PLANNED-1" are those we intend to do first;
6772
* [Validating Text](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#validating-text)
6873
* Introduction to Regular Expressions - [regex0](regex0.html)
6974
* Using Regular Expressions for Text Input Validation - [regex1](regex1.html), [input2](input2.html)
70-
* [Countering ReDoS Attacks on Regular Expressions](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#countering-redos-attacks-on-regular-expressions) - PLANNED-2
75+
* [Countering ReDoS Attacks on Regular Expressions](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#countering-redos-attacks-on-regular-expressions) - PLANNED-2 UNASSIGNED
7176
* Input Validation: Beyond Numbers and Text
7277
* [Insecure Deserialization](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#insecure-deserialization) - PLANNED-2 (Tepas Jena)
73-
* [Input Validation: Beyond Numbers and Text](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#input-validation-beyond-numbers-and-text) - PLANNED-2
74-
* [Minimizing Attack Surface, Identification, Authentication, and Authorization](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#minimizing-attack-surface-identification-authentication-and-authorization) - PLANNED-2
75-
* [Search Paths and Environment Variables (including setuid/setgid Programs)](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#search-paths-and-environment-variables-including-setuidsetgid-programs) - PLANNED-2
76-
* [Special Inputs: Secure Defaults and Secure Startup](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#special-inputs-secure-defaults-and-secure-startup) - PLANNED-2
78+
* [Input Validation: Beyond Numbers and Text](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#input-validation-beyond-numbers-and-text) - PLANNED-2 UNASSIGNED
79+
* [Minimizing Attack Surface, Identification, Authentication, and Authorization](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#minimizing-attack-surface-identification-authentication-and-authorization) - PLANNED-2 UNASSIGNED
80+
* [Search Paths and Environment Variables (including setuid/setgid Programs)](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#search-paths-and-environment-variables-including-setuidsetgid-programs) - PLANNED-2 UNASSIGNED
81+
* [Special Inputs: Secure Defaults and Secure Startup](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#special-inputs-secure-defaults-and-secure-startup) - PLANNED-2 UNASSIGNED
7782
* Consider Availability on All Inputs
78-
* [Consider Availability on All Inputs Introduction](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#consider-availability-on-all-inputs-introduction) - PLANNED-2
83+
* [Consider Availability on All Inputs Introduction](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#consider-availability-on-all-inputs-introduction) - PLANNED-2 UNASSIGNED
7984
* Processing Data Securely
8085
* Processing Data Securely: General Issues
81-
* [Prefer Trusted Data. Treat Untrusted Data as Dangerous](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#prefer-trusted-data-treat-untrusted-data-as-dangerous) - PLANNED-2
86+
* [Prefer Trusted Data. Treat Untrusted Data as Dangerous](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#prefer-trusted-data-treat-untrusted-data-as-dangerous) - PLANNED-2 UNASSIGNED
8287
* [Avoid Default & Hardcoded Credentials](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#avoid-default--hardcoded-credentials) - PLANNED-1 (Tepas Jena)
83-
* [Avoid Incorrect Conversion or Cast](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#avoid-incorrect-conversion-or-cast) - PLANNED-2
88+
* [Avoid Incorrect Conversion or Cast](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#avoid-incorrect-conversion-or-cast) - PLANNED-2 UNASSIGNED
8489
* Processing Data Securely: Undefined Behavior / Memory Safety
8590
* Countering Out-of-Bounds Reads and Writes (Buffer Overflow) - [oob1](oob1.html)
8691
* [Double-free, Use-after-free, and Missing Release](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#double-free-use-after-free-and-missing-release) - PLANNED-1 (Bennett Pursell)
87-
* [Avoid Undefined Behavior](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#avoid-undefined-behavior) - PLANNED-2
92+
* [Avoid Undefined Behavior](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#avoid-undefined-behavior) - PLANNED-2 UNASSIGNED
8893
* Processing Data Securely: Calculate Correctly
89-
* [Avoid Integer Overflow, Wraparound, and Underflow](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#avoid-integer-overflow-wraparound-and-underflow) - PLANNED-2
94+
* [Avoid Integer Overflow, Wraparound, and Underflow](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#avoid-integer-overflow-wraparound-and-underflow) - PLANNED-2 UNASSIGNED
9095
* Calling Other Programs
9196
* Introduction to Securely Calling Programs
9297
* Introduction to Securely Calling Programs - The Basics
9398
* Calling Other Programs: Injection and Filenames
9499
* [SQL Injection](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#sql-injection) - PLANNED-1 (Tepas Jena)
95100
* OS Command (Shell) injection - PLANNED-1 (Marta Rybczynska)
96-
* [Other Injection Attacks](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#other-injection-attacks) - PLANNED-2
97-
* Filenames (Including Path Traversal and Link Following) - PLANNED-2
101+
* [Other Injection Attacks](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#other-injection-attacks) - PLANNED-2 UNASSIGNED
102+
* Filenames (Including Path Traversal and Link Following) - PLANNED-2 UNASSIGNED
98103
* Calling Other Programs: Other Issues
99-
* [Call APIs for Programs and Check What Is Returned](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#call-apis-for-programs-and-check-what-is-returned) - PLANNED-2
100-
* [Handling Errors](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#handling-errors) - PLANNED-2
101-
* [Logging](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#logging) - PLANNED-2
104+
* [Call APIs for Programs and Check What Is Returned](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#call-apis-for-programs-and-check-what-is-returned) - PLANNED-2 UNASSIGNED
105+
* [Handling Errors](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#handling-errors) - PLANNED-2 UNASSIGNED
106+
* [Logging](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#logging) - PLANNED-2 UNASSIGNED
102107
* [Debug and Assertion Code](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#debug-and-assertion-code) - PLANNED-1 (Jason Shepherd)
103-
* Countering Denial-of-Service (DoS) Attacks - PLANNED-2
108+
* Countering Denial-of-Service (DoS) Attacks - PLANNED-2 UNASSIGNED
104109
* Sending Output
105-
* [Introduction to Sending Output](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#introduction-to-sending-output) - PLANNED-2
110+
* [Introduction to Sending Output](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#introduction-to-sending-output) - PLANNED-2 UNASSIGNED
106111
* Countering Cross-Site Scripting (XSS) - PLANNED-1 (Tepas Jena)
107112
* Content Security Policy (CSP) - [csp1](csp1.html)
108-
* Other HTTP Hardening Headers - (probably continue csp1) PLANNED-2
109-
* [Cookies Cookies & Login Sessions Login Sessions](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#cookies--login-sessions) - PLANNED-2
110-
* [CSRF / XSRF](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#csrf--xsrf) - PLANNED-2
111-
* [Open Redirects and Forwards](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#open-redirects-and-forwards) - PLANNED-2
112-
* HTML **target** and JavaScript **window.open()** - PLANNED-2
113-
* Using Inadequately Checked URLs / Server-Side Request Forgery (SSRF) - PLANNED-2
114-
* Same-Origin Policy and Cross-Origin Resource Sharing (CORS) - PLANNED-2
113+
* Other HTTP Hardening Headers - (probably continue csp1) PLANNED-2 UNASSIGNED
114+
* [Cookies Cookies & Login Sessions Login Sessions](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#cookies--login-sessions) - PLANNED-2 UNASSIGNED
115+
* [CSRF / XSRF](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#csrf--xsrf) - PLANNED-2 UNASSIGNED
116+
* [Open Redirects and Forwards](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#open-redirects-and-forwards) - PLANNED-2 UNASSIGNED
117+
* HTML **target** and JavaScript **window.open()** - PLANNED-2 UNASSIGNED
118+
* Using Inadequately Checked URLs / Server-Side Request Forgery (SSRF) - PLANNED-2 UNASSIGNED
119+
* Same-Origin Policy and Cross-Origin Resource Sharing (CORS) - PLANNED-2 UNASSIGNED
115120
* [Format Strings and Templates](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#format-strings-and-templates) - PLANNED-1 (Jason Shepherd)
116-
* [Minimize Feedback / Information Exposure](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#minimize-feedback--information-exposure) - PLANNED-2
117-
* [Avoid caching sensitive information](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#avoid-caching-sensitive-information) - PLANNED-2
118-
* [Side-Channel Attacks](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#side-channel-attacks) - PLANNED-2
121+
* [Minimize Feedback / Information Exposure](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#minimize-feedback--information-exposure) - PLANNED-2 UNASSIGNED
122+
* [Avoid caching sensitive information](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#avoid-caching-sensitive-information) - PLANNED-2 UNASSIGNED
123+
* [Side-Channel Attacks](https://github.com/ossf/secure-sw-dev-fundamentals/blob/main/secure_software_development_fundamentals.md#side-channel-attacks) - PLANNED-2 UNASSIGNED
119124

120125
## Our thanks
121126

docs/labs/create_checker.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ You can also provide patterns for various hints.
1818
There are three basic tasks, which can be done by different people:
1919

2020
1. Identifying the next lab to do.
21-
See the [README](./README.md) for the list of labs.
21+
See the [README](./README.md) for the list of labs (pick an unassigned one).
22+
Tell [David A. Wheeler](mailto:dwheele&#114;&#64;linuxfoundation&#46;org).
23+
which one you want to do; he'll also be happy to answer
24+
any questions.
2225
2. [Creating the lab instructions and correct answer](#creating-the-lab-instructions-and-correct-answer).
2326
This is done by a subject matter expert. See below.
2427
3. [Creating the lab HTML file](#creating-the-lab-html-file).
@@ -79,11 +82,16 @@ Whenever a lab is loaded it automatically runs all embedded self-tests.
7982
At the least, it checks that the initial attempted answer does
8083
*not* satisfy the correct answer pattern, while the example expected answer
8184
*does* satisfy the correct answer pattern.
82-
8385
We suggest including the buttons (Hint, Reset, and Give up)
8486
as shown in the examples.
8587
The code will automatically set up the buttons if they are present.
8688

89+
To submit new or updated labs, create a pull request on the
90+
[OpenSSF Best Practices Working Group (WG) repository](https://github.com/ossf/wg-best-practices-os-developers/)
91+
under the `docs/labs` directory.
92+
Simply fork the repository, add your proposed lab in the `docs/labs` directory,
93+
and create a pull request.
94+
8795
### Quick aside: script tag requirements
8896

8997
Data about the lab is embedded in the HTML in a

0 commit comments

Comments
 (0)