You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: modules/README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Modules
2
2
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.
Copy file name to clipboardExpand all lines: modules/_TEMPLATE/challenge/COACH.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Delivery Assurance Guide — Work Package Title
2
2
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.
4
4
5
5
## Delivery intent
6
6
@@ -13,7 +13,7 @@ REPLACE: One paragraph on the customer outcome, approved change boundary, eviden
13
13
| Scope, ownership, and approval |~10 min |
14
14
| Implementation and evidence |~40 min |
15
15
| Assurance, handover, and next action |~10 min |
16
-
|**Total**|~60 min |
16
+
| Total |~60 min |
17
17
18
18
## Expected evidence
19
19
@@ -26,20 +26,20 @@ At the end of this work package, verify:
26
26
## Delivery risks and recovery
27
27
28
28
### REPLACE: Pitfall title
29
-
**Symptom:** REPLACE
30
-
**Fix:** REPLACE
29
+
Symptom: REPLACE
30
+
Fix: REPLACE
31
31
32
32
### REPLACE: Another pitfall
33
-
**Symptom:** REPLACE
34
-
**Fix:** REPLACE
33
+
Symptom: REPLACE
34
+
Fix: REPLACE
35
35
36
36
## Progressive support
37
37
38
38
Use these in order. Preserve customer ownership: give the first prompt, wait, then increase specificity only if the delivery team is blocked.
39
39
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.
Copy file name to clipboardExpand all lines: modules/ghas/challenges/00-environment-setup/COACH.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,15 +14,15 @@
14
14
15
15
## Facilitation Hints
16
16
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.
18
18
- 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.
19
19
- Ask for a show-of-hands check after the first 10 minutes: successful commands and a completed record with named owners.
20
20
- Pair any blocked participant with a working neighbor; one blocker should not stall the group.
21
21
- Start by having the responsible participant, team lead, or organizer run:
- 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.
24
24
- 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.
26
26
- 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.
27
27
- 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.
28
28
- 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:
65
65
66
66
If a participant cannot reach the full environment, apply the smallest unblock:
67
67
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`.
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):
71
71
- 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.
73
73
- 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.
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:
168
168
169
169
```bash
170
170
npm install
171
171
npm start
172
172
```
173
173
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
176
176
`http://localhost:3000` in your browser.
177
177
178
178
Confirm you see the Juice Shop storefront before moving on.
@@ -181,9 +181,9 @@ Confirm you see the Juice Shop storefront before moving on.
181
181
182
182
## Important: GHAS Alerts vs. Local Runtime
183
183
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.
185
185
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.
187
187
188
188
See [`modules/ghas/setup.md`](../../setup.md) for details on how these two environments work together.
189
189
@@ -214,7 +214,7 @@ Juice Shop homepage loads.
214
214
> Successful commands alone do not complete this activity. Before moving on, confirm the
215
215
> GHAS configuration and ownership record names the target and criticality, captures GHAS capability status
216
216
> 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
Copy file name to clipboardExpand all lines: modules/ghas/challenges/01-explore-attack-surface/README.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,26 +10,26 @@ This is your reconnaissance phase. Turn the alerts into an owned security-debt
10
10
findings register that the delivery team can operate after the session, rather than a
11
11
temporary mental model.
12
12
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.
14
14
15
15
## Objectives
16
16
17
17
- 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
19
19
- Review at least 5 alerts in full — location, description, and the code path that triggers each finding
20
20
- 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
21
21
- Create a security findings register with named owners in `modules/ghas/resources/ghas-governance-practice.template.md`
22
22
- 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
23
23
- 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
25
25
26
26
> [!IMPORTANT]
27
-
> **Bring your own application (do this first)**
27
+
> Bring your own application (do this first)
28
28
>
29
29
> 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.
30
30
>
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.
33
33
>
34
34
> Tell your coach which path you took — bringing your own is the goal; Juice Shop is the fallback.
Copy file name to clipboardExpand all lines: modules/ghas/challenges/02-fix-injection/COACH.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,9 @@
4
4
5
5
## Required coach check-in
6
6
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.
8
8
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.
10
10
11
11
Use these follow-ups to steer the conversation:
12
12
- 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