Skip to content

Commit 81a193b

Browse files
committed
Reduced bold text
1 parent 9a9770c commit 81a193b

124 files changed

Lines changed: 3141 additions & 3141 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

modules/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Modules
22

3-
This directory contains the **source content** for each delivery session module. The build script (`docs/build.js`) reads from here — never from `docs/` directly.
3+
This directory contains the source content for each delivery session module. The build script (`docs/build.js`) reads from here — never from `docs/` directly.
44

55
## Layout
66

modules/_TEMPLATE/challenge/COACH.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Delivery Assurance Guide — Work Package Title
22

3-
> **For delivery leads only.** This guide contains expected evidence, risk controls, and progressive support. Do not share with customer delivery team members before they attempt the work package.
3+
> For delivery leads only. This guide contains expected evidence, risk controls, and progressive support. Do not share with customer delivery team members before they attempt the work package.
44
55
## Delivery intent
66

@@ -13,7 +13,7 @@ REPLACE: One paragraph on the customer outcome, approved change boundary, eviden
1313
| Scope, ownership, and approval | ~10 min |
1414
| Implementation and evidence | ~40 min |
1515
| Assurance, handover, and next action | ~10 min |
16-
| **Total** | ~60 min |
16+
| Total | ~60 min |
1717

1818
## Expected evidence
1919

@@ -26,20 +26,20 @@ At the end of this work package, verify:
2626
## Delivery risks and recovery
2727

2828
### REPLACE: Pitfall title
29-
**Symptom:** REPLACE
30-
**Fix:** REPLACE
29+
Symptom: REPLACE
30+
Fix: REPLACE
3131

3232
### REPLACE: Another pitfall
33-
**Symptom:** REPLACE
34-
**Fix:** REPLACE
33+
Symptom: REPLACE
34+
Fix: REPLACE
3535

3636
## Progressive support
3737

3838
Use these in order. Preserve customer ownership: give the first prompt, wait, then increase specificity only if the delivery team is blocked.
3939

40-
1. **Hint 1 (gentle):** REPLACE — a nudge in the right direction without revealing the answer.
41-
2. **Hint 2 (medium):** REPLACE — more specific guidance.
42-
3. **Hint 3 (specific):** REPLACE — points almost directly to the solution.
40+
1. Hint 1 (gentle): REPLACE — a nudge in the right direction without revealing the answer.
41+
2. Hint 2 (medium): REPLACE — more specific guidance.
42+
3. Hint 3 (specific): REPLACE — points almost directly to the solution.
4343

4444
## Handover questions
4545

modules/_TEMPLATE/challenge/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
# Delivery Work Package Title
22

3-
> **Module:** REPLACE | **Track:** REPLACE | **Complexity:** beginner | **Delivery time:** ~60 min
3+
> Module: REPLACE | Track: REPLACE | Complexity: beginner | Delivery time: ~60 min
44
55
## Customer outcome
66

77
REPLACE: One sentence describing the customer-owned capability, guardrail, or workflow this work package will establish.
88

99
## Prerequisites
1010

11-
**Prior work packages:** _(none — this work package is self-contained)_
11+
Prior work packages: _(none — this work package is self-contained)_
1212

13-
**Delivery readiness:**
13+
Delivery readiness:
1414
- GitHub account with organization access
1515
- Basic Git knowledge
1616
- Customer owner approval for the intended tenant change, where applicable

modules/ghas/challenges/00-environment-setup/COACH.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@
1414

1515
## Facilitation Hints
1616

17-
- **Push Codespaces first.** If local setup consumes more than 10 minutes, redirect to Codespaces.
17+
- Push Codespaces first. If local setup consumes more than 10 minutes, redirect to Codespaces.
1818
- Start with the GHAS configuration and ownership record. Ask which real repository or service is in scope, why its criticality matters, and whether Juice Shop is only the fallback practice target.
1919
- Ask for a show-of-hands check after the first 10 minutes: successful commands and a completed record with named owners.
2020
- Pair any blocked participant with a working neighbor; one blocker should not stall the group.
2121
- Start by having the responsible participant, team lead, or organizer run:
2222
`./setup.sh provision ghas-00 --org <org>` or `./setup.ps1 provision ghas-00 -Org <org>`.
23-
- Verify that **Codespaces is enabled for the org** before the event starts (org Settings → Codespaces → Allow for all members). If not enabled, participants see no Codespace option.
23+
- Verify that Codespaces is enabled for the org before the event starts (org Settings → Codespaces → Allow for all members). If not enabled, participants see no Codespace option.
2424
- If Copilot is not yet licensed for all participants, pair them so every team still practices the Copilot-assisted review loop in S01–S06.
25-
- Confirm **GHAS is enabled** on the provisioned org repo (Settings → Code security and analysis). CodeQL, secret scanning, Dependabot alerts, and push protection must all be on — S01–S06 depend on them.
25+
- Confirm GHAS is enabled on the provisioned org repo (Settings → Code security and analysis). CodeQL, secret scanning, Dependabot alerts, and push protection must all be on — S01–S06 depend on them.
2626
- Confirm the repository access list includes every participant or team that needs to push a branch. The script creates/configures the repo; it does not guess workshop roster membership.
2727
- Do not accept a feature toggle or a running storefront as completion by itself. Validate that enabled and missing GHAS capabilities, accountable roles, agentic delivery principles, and blocker ownership and dates are recorded in the baseline.
2828
- When discussing agentic delivery, keep the scope to the documented principles: least privilege; humans remain accountable for approval and merge; and agent-originated changes receive normal GHAS and PR validation.
@@ -65,13 +65,13 @@ delivery team:
6565

6666
If a participant cannot reach the full environment, apply the smallest unblock:
6767

68-
1. **Codespaces quota:** Use a local clone with Node.js installed, or request org Codespaces billing before the event.
69-
2. **Org access:** Coach adds participant to the repo or org team, or provides a pre-cloned repo baseline branch via `git bundle`.
70-
3. **Juice Shop unavailable (Docker blocked locally, Codespace quota exhausted):**
68+
1. Codespaces quota: Use a local clone with Node.js installed, or request org Codespaces billing before the event.
69+
2. Org access: Coach adds participant to the repo or org team, or provides a pre-cloned repo baseline branch via `git bundle`.
70+
3. Juice Shop unavailable (Docker blocked locally, Codespace quota exhausted):
7171
- Participants can still complete S01–S06 review steps by reading the pre-populated alert corpus in the Security tab — no live app required for the code-review loop.
72-
- Coach provides a **pre-scanned results packet**: export of CodeQL SARIF results + Dependabot alert JSON + secret scanning summary so participants can proceed with the analysis tasks even without a running app.
72+
- Coach provides a pre-scanned results packet: export of CodeQL SARIF results + Dependabot alert JSON + secret scanning summary so participants can proceed with the analysis tasks even without a running app.
7373
- For fixes: participants write and submit PRs; CodeQL runs on the PR branch in GitHub Actions and validates the fix without needing a local running instance.
74-
4. **GitHub Actions / CodeQL not running:** Coach triggers a manual workflow run (`gh workflow run codeql.yml`) or shares pre-generated SARIF results for the alert-reading portion.
74+
4. GitHub Actions / CodeQL not running: Coach triggers a manual workflow run (`gh workflow run codeql.yml`) or shares pre-generated SARIF results for the alert-reading portion.
7575

7676
## Useful references for coaching
7777

modules/ghas/challenges/00-environment-setup/README.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ By the end of this activity, the delivery team will have:
2828
- GitHub Advanced Security available for the repository visibility you choose
2929
- GitHub Copilot license assigned
3030

31-
> **Own-org workflow:** Do not rely on a preconfigured Microsoft or instructor repo.
31+
> Own-org workflow: Do not rely on a preconfigured Microsoft or instructor repo.
3232
> A participant, team lead, or organizer pushes Juice Shop into an org they control,
3333
> enables GHAS features there, then manually adds any participants or teams that need
3434
> repo access.
@@ -90,15 +90,15 @@ The default repository name is:
9090

9191
If a feature cannot be enabled by automation because the org lacks the license or the
9292
authenticated user lacks permission, the script prints a warning. In that case, an org
93-
owner or repo admin must enable it manually in **Settings → Code security and analysis**.
93+
owner or repo admin must enable it manually in Settings → Code security and analysis.
9494

9595
After provisioning, manually add any participants who need access:
9696

9797
1. Open `https://github.com/<your-org>/ghec-ghas-00-juice-shop/settings/access`.
9898
2. Add the participant, team, or outside collaborator with the access level your event needs.
9999
3. Ask each participant to clone this org repo directly and work on a personal or team branch.
100100

101-
> **Branch workflow (not fork):** This module uses the org repo you just created. Do **not** fork.
101+
> Branch workflow (not fork): This module uses the org repo you just created. Do not fork.
102102
> Clone directly and work on a personal branch. Use `team-{your-team-name}/challenge-work`
103103
> for teams, or `participant/{your-name}` for individual participants.
104104
@@ -109,9 +109,9 @@ After provisioning, manually add any participants who need access:
109109
The fastest path — nothing to install locally.
110110

111111
1. Open the org repository created above on github.com.
112-
2. Click **Code → Codespaces → Create codespace on main**.
112+
2. Click Code → Codespaces → Create codespace on main.
113113
3. Wait ~30–60 seconds for the dev container to build and dependencies to install.
114-
4. When the terminal appears, continue to **Create your branch** below.
114+
4. When the terminal appears, continue to Create your branch below.
115115

116116
---
117117

@@ -120,7 +120,7 @@ The fastest path — nothing to install locally.
120120
If you prefer working locally, use Git and Node.js directly.
121121

122122
1. Install [Git](https://git-scm.com/), [GitHub CLI](https://cli.github.com/), and Node.js 20 or later.
123-
2. Clone the org repo (do **not** fork it):
123+
2. Clone the org repo (do not fork it):
124124
```bash
125125
git clone https://github.com/<your-org>/ghec-ghas-00-juice-shop.git
126126
cd ghec-ghas-00-juice-shop
@@ -137,7 +137,7 @@ Your container does not have your GitHub credentials pre-loaded. Run:
137137
gh auth login
138138
```
139139

140-
Choose **HTTPS**, follow the device-code prompt in your browser, and grant the requested
140+
Choose HTTPS, follow the device-code prompt in your browser, and grant the requested
141141
permissions.
142142

143143
Verify:
@@ -164,15 +164,15 @@ git push -u origin participant/{your-github-handle}
164164

165165
## Start Juice Shop (Local Runtime)
166166

167-
All GHAS activities work with OWASP Juice Shop for **manual exploit testing**. Because the setup script imports Juice Shop into your org repo, run the app from the repository root:
167+
All GHAS activities work with OWASP Juice Shop for manual exploit testing. Because the setup script imports Juice Shop into your org repo, run the app from the repository root:
168168

169169
```bash
170170
npm install
171171
npm start
172172
```
173173

174-
Juice Shop will be available at **port 3000**. In Codespaces, GitHub automatically
175-
port-forwards it — click the **Ports** tab and open the forwarded URL. Locally, open
174+
Juice Shop will be available at port 3000. In Codespaces, GitHub automatically
175+
port-forwards it — click the Ports tab and open the forwarded URL. Locally, open
176176
`http://localhost:3000` in your browser.
177177

178178
Confirm you see the Juice Shop storefront before moving on.
@@ -181,9 +181,9 @@ Confirm you see the Juice Shop storefront before moving on.
181181

182182
## Important: GHAS Alerts vs. Local Runtime
183183

184-
**Your local Juice Shop instance** is for manual testing and learning the app — it has **no GHAS alerts**.
184+
Your local Juice Shop instance is for manual testing and learning the app — it has no GHAS alerts.
185185

186-
**GHAS alerts** (CodeQL, Dependabot, secret scanning) run on the **org repository you provisioned in this activity**. All activities reference alerts from that repo, not your local Juice Shop runtime.
186+
GHAS alerts (CodeQL, Dependabot, secret scanning) run on the org repository you provisioned in this activity. All activities reference alerts from that repo, not your local Juice Shop runtime.
187187

188188
See [`modules/ghas/setup.md`](../../setup.md) for details on how these two environments work together.
189189

@@ -214,7 +214,7 @@ Juice Shop homepage loads.
214214
> Successful commands alone do not complete this activity. Before moving on, confirm the
215215
> GHAS configuration and ownership record names the target and criticality, captures GHAS capability status
216216
> and accountable roles, records the agentic delivery principles, and assigns every
217-
> access or licensing blocker an owner and target date. See **Common Blockers** in the
217+
> access or licensing blocker an owner and target date. See Common Blockers in the
218218
> coach guide when setup cannot yet be completed.
219219
220220
## Success Criteria

modules/ghas/challenges/01-explore-attack-surface/COACH.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
55
## Required coach check-in
66

7-
**Required coach check-in:** before completion, ask the customer practitioner to connect the exercise to work they actually own.
7+
Required coach check-in: before completion, ask the customer practitioner to connect the exercise to work they actually own.
88

9-
**Their question:** Coach conversation — which inventory item creates the most important
9+
Their question: Coach conversation — which inventory item creates the most important
1010
business or security risk for the real project, who is accountable for it, and what
1111
should its next action and target date be?
1212

modules/ghas/challenges/01-explore-attack-surface/README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,26 @@ This is your reconnaissance phase. Turn the alerts into an owned security-debt
1010
findings register that the delivery team can operate after the session, rather than a
1111
temporary mental model.
1212

13-
> **Before this activity:** Make sure S00 is complete, the org repo exists, required participants have been added, GHAS features are enabled, and you've created your team branch. The Security tab is default-branch oriented. Your branch fixes will be validated later through PR CodeQL checks and code scanning annotations.
13+
> Before this activity: Make sure S00 is complete, the org repo exists, required participants have been added, GHAS features are enabled, and you've created your team branch. The Security tab is default-branch oriented. Your branch fixes will be validated later through PR CodeQL checks and code scanning annotations.
1414
1515
## Objectives
1616

1717
- Use your own application repository or service first; use the Juice Shop fallback only when no suitable delivery target is available
18-
- Navigate to the relevant GHAS alerts, including **Security → Code scanning alerts**, and review the open default-branch alerts
18+
- Navigate to the relevant GHAS alerts, including Security → Code scanning alerts, and review the open default-branch alerts
1919
- Review at least 5 alerts in full — location, description, and the code path that triggers each finding
2020
- For each reviewed alert, open the affected file in your editor, ask Copilot Chat: *"What does this code do wrong, and how could an attacker exploit it?"*, and verify the explanation against the alert and code path
2121
- Create a security findings register with named owners in `modules/ghas/resources/ghas-governance-practice.template.md`
2222
- For every inventory item, record the alert category or class, affected repository, service, or component, business or security impact, remediation route, accountable owner or team, target date, current disposition (open, in progress, or accepted risk), and prioritization rationale
2323
- Use the five alert reviews as evidence supporting the inventory and its prioritization
24-
- Check **Security → Dependabot alerts** and record any critical or high-severity dependency vulnerabilities in the inventory
24+
- Check Security → Dependabot alerts and record any critical or high-severity dependency vulnerabilities in the inventory
2525

2626
> [!IMPORTANT]
27-
> **Bring your own application (do this first)**
27+
> Bring your own application (do this first)
2828
>
2929
> This activity is most valuable when the attack-surface picture *outlives the delivery session*. Use a real application repository you want to secure so the CodeQL, Dependabot, and secret scanning results you review become evidence your team can keep acting on after today.
3030
>
31-
> - **Have a candidate?** If you have an application repo in an organization you control with GHAS enabled, use it everywhere this guide references Juice Shop or `ghec-ghas-00-juice-shop`. Skip the Juice-Shop-specific setup from S00 and review the Security tab for your own repo instead.
32-
> - **No suitable one?** Use the fallback from S00: OWASP Juice Shop as a safe practice target for learning how to inspect alerts.
31+
> - Have a candidate? If you have an application repo in an organization you control with GHAS enabled, use it everywhere this guide references Juice Shop or `ghec-ghas-00-juice-shop`. Skip the Juice-Shop-specific setup from S00 and review the Security tab for your own repo instead.
32+
> - No suitable one? Use the fallback from S00: OWASP Juice Shop as a safe practice target for learning how to inspect alerts.
3333
>
3434
> Tell your coach which path you took — bringing your own is the goal; Juice Shop is the fallback.
3535
>

modules/ghas/challenges/02-fix-injection/COACH.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
55
## Required coach check-in
66

7-
**Required coach check-in:** before completion, ask the delivery team member to connect the work to a service and review practice they own.
7+
Required coach check-in: before completion, ask the delivery team member to connect the work to a service and review practice they own.
88

9-
**Their question:** Coach conversation — where in your own codebase is user-controlled input most likely reaching a database query without parameterization, and what data could an attacker extract or modify if they found that path before your team did? Talk it through with your coach and connect it to a real project, task, or workflow you own.
9+
Their question: Coach conversation — where in your own codebase is user-controlled input most likely reaching a database query without parameterization, and what data could an attacker extract or modify if they found that path before your team did? Talk it through with your coach and connect it to a real project, task, or workflow you own.
1010

1111
Use these follow-ups to steer the conversation:
1212
- Name a specific API endpoint or query in your own codebase where dynamic data flows into a database call — how confident are you that it uses parameterization, and when did you last verify it?

0 commit comments

Comments
 (0)