Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
1c93134
feat(mcsb): add Microsoft Cloud Security Benchmark control domains an…
nguyena2 Jul 23, 2026
bc3cafb
Merge remote-tracking branch 'origin/main' into feat/mcsb-security-skill
nguyena2 Jul 23, 2026
d1f8b48
Merge branch 'main' into feat/mcsb-security-skill
jkim323 Jul 24, 2026
e3feb7d
Merge remote-tracking branch 'origin/main' into feat/mcsb-security-skill
nguyena2 Jul 28, 2026
88f285c
docs(security): clarify attribution for MCSB v2 documentation sources
nguyena2 Jul 28, 2026
271cbd9
feat(docs): add Microsoft Cloud Security Benchmark (MCSB) documentati…
nguyena2 Jul 28, 2026
203af3c
docs(mcsb): update references to Microsoft Cloud Security Benchmark URLs
nguyena2 Jul 28, 2026
53b3fa8
Merge remote-tracking branch 'origin/feat/mcsb-security-skill' into f…
nguyena2 Jul 28, 2026
ba44c69
Merge remote-tracking branch 'origin/main' into feat/mcsb-security-skill
nguyena2 Jul 28, 2026
f0637b7
fix(agents): enhance output pattern to include additional report terms
nguyena2 Jul 28, 2026
5810365
Merge remote-tracking branch 'origin/main' into feat/mcsb-security-skill
nguyena2 Jul 28, 2026
13c0814
fix(agents): enhance findings pattern to include additional report terms
nguyena2 Jul 28, 2026
13e9671
fix(agents): enhance findings pattern to include additional security …
nguyena2 Jul 29, 2026
62adef0
Merge remote-tracking branch 'origin/main' into feat/mcsb-security-skill
nguyena2 Jul 29, 2026
8041871
fix(docs): update documentation dates and skill count for accuracy
nguyena2 Jul 29, 2026
5681b61
fix(security-reviewer): enhance findings pattern to include severity …
nguyena2 Jul 29, 2026
84a20a5
fix(cspell): add missing words to the spell checker dictionary
nguyena2 Jul 29, 2026
4a4d723
Merge remote-tracking branch 'origin/main' into feat/mcsb-security-skill
nguyena2 Jul 30, 2026
d426fb4
Merge branch 'main' into feat/mcsb-security-skill
rezatnoMsirhC Jul 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -76,16 +76,19 @@
"ASEC",
"atheris",
"ation",
"azuredeploy",
"BABOK",
"backlinked",
"behaviour",
"behavioural",
"beval",
"blazor",
"bmve",
"boostsecurityio",
"brainwriting",
"calledprocesserror",
"capabilit",
"chakra",
"clarif",
"clusterfuzzlite",
"cmdletbinding",
Expand All @@ -108,6 +111,7 @@
"fetchone",
"figjam",
"filenotfounderror",
"fluentui",
"gcrm",
"graphify",
"graphifyy",
Expand All @@ -118,6 +122,7 @@
"IIBA",
"Infima",
"ISTQB",
"langchain",
"learning",
"Linkified",
"linkify",
Expand All @@ -143,7 +148,9 @@
"poutine",
"profanit",
"prval",
"pubspec",
"pylint",
"reakit",
"refus",
"revalidat",
"scal",
Expand All @@ -161,13 +168,16 @@
"subdirs",
"terroris",
"thiserror",
"treeviews",
"trustworthi",
"uncited",
"underspecified",
"unremediated",
"vally",
"validat",
"viab",
"violen",
"vulnerab",
"vulnerabilit",
"vyta",
"watchlist",
Expand Down
15 changes: 8 additions & 7 deletions .github/agents/security/security-planner.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,13 @@ Each phase entry begins with a mandatory `read_file` of the indicated skill refe

Beyond the always-load references above, load these specialized security skills only when the corresponding surface is present. Read them on entry to the phase noted, after the mandatory references. Skip any whose trigger is absent.

| Trigger (from Phase 1 scoping / Phase 2 buckets) | Load on entry | Skill(s) to `read_file` |
|--------------------------------------------------|---------------|-------------------------------------------------------|
| AI/ML components detected (`raiEnabled` true) | Phase 3 & 4 | `owasp-agentic`; `owasp-mcp` when MCP tooling is used |
| `infrastructure` bucket present | Phase 3 & 4 | `owasp-infrastructure` |
| `build` or `devops/platform-ops` bucket present | Phase 3 & 4 | `owasp-cicd`, `supply-chain-security` |
| Any project (cross-cutting GS overlay) | Phase 4 | `secure-by-design` |
| Trigger (from Phase 1 scoping / Phase 2 buckets) | Load on entry | Skill(s) to `read_file` |
|--------------------------------------------------|---------------|--------------------------------------------------------|
| AI/ML components detected (`raiEnabled` true) | Phase 3 & 4 | `owasp-agentic`; `owasp-mcp` when MCP tooling is used |
| `infrastructure` bucket present | Phase 3 & 4 | `owasp-infrastructure` |
| Azure cloud resources present | Phase 3 & 4 | `mcsb` (stable taxonomy; delegate per-service lookups) |
| `build` or `devops/platform-ops` bucket present | Phase 3 & 4 | `owasp-cicd`, `supply-chain-security` |
| Any project (cross-cutting GS overlay) | Phase 4 | `secure-by-design` |

If a conditional skill fails to load, note the gap and continue rather than halting. Activate `rpi-research` only for standards with no matching skill.

Expand Down Expand Up @@ -99,7 +100,7 @@ Gate: summary-and-advance — surface a brief phase summary and proceed unless t

### Phase 3: Standards Mapping

Map controls from OWASP Top 10, NIST 800-53, and CIS Benchmarks to each bucket. Activate `rpi-research` for WAF and CAF lookups at runtime rather than embedding those standards directly.
Map controls from OWASP Top 10, NIST 800-53, and CIS Benchmarks to each bucket. For Azure cloud resources, load the `mcsb` skill for the stable MCSB control-domain taxonomy and crosswalk, and delegate volatile per-service control lookups to the Researcher Subagent. Activate `rpi-research` for WAF and CAF lookups at runtime rather than embedding those standards directly.

Human-review exit reminder: a qualified security reviewer confirms the standards-to-bucket mappings and any deferred lookups before advancing to Phase 4.

Expand Down
3 changes: 2 additions & 1 deletion .github/agents/security/security-reviewer.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ Report path pattern (plan): `.copilot-tracking/security/{{YYYY-MM-DD}}/plan-risk

Sequence number resolution: Determine `{{NNN}}` by listing existing reports in the date directory, extracting the highest sequence number, incrementing by one, and zero-padding to three digits. Start at `001` when no reports exist.

Skill resolution: Read the applicable security skill (e.g., `owasp-top-10`, `owasp-llm`, `owasp-agentic`, `owasp-mcp`, `owasp-infrastructure`, `owasp-cicd`, `secure-by-design`) to access vulnerability references. Follow the skill's normative reference links to load vulnerability reference documents.
Skill resolution: Read the applicable security skill (e.g., `owasp-top-10`, `owasp-llm`, `owasp-agentic`, `owasp-mcp`, `owasp-infrastructure`, `owasp-cicd`, `secure-by-design`, `mcsb`) to access vulnerability references. Follow the skill's normative reference links to load vulnerability reference documents.

### Subagents

Expand All @@ -116,6 +116,7 @@ Skill resolution: Read the applicable security skill (e.g., `owasp-top-10`, `owa
* owasp-infrastructure
* owasp-cicd
* secure-by-design
* mcsb

## Subagent Prompt Templates

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Scan the repository to identify its technology stack and determine which securit

## Constants

Skill resolution: Read the applicable security skill by name (e.g., `owasp-top-10`, `owasp-llm`, `owasp-agentic`, `owasp-mcp`, `owasp-infrastructure`, `owasp-cicd`, `secure-by-design`). Resolve accessibility guidance through the consolidated Accessibility skill contract and use the matching framework guidance when needed.
Skill resolution: Read the applicable security skill by name (e.g., `owasp-top-10`, `owasp-llm`, `owasp-agentic`, `owasp-mcp`, `owasp-infrastructure`, `owasp-cicd`, `secure-by-design`, `mcsb`). Resolve accessibility guidance through the consolidated Accessibility skill contract and use the matching framework guidance when needed.

### Technology Signals

Expand Down Expand Up @@ -75,6 +75,12 @@ owasp-cicd:
- "Jenkinsfile"
- ".gitlab-ci.yml"
- "azure-pipelines.yml"
mcsb:
- "Azure Bicep files (.bicep)"
- "Azure Resource Manager (ARM) templates (azuredeploy.json)"
- "Terraform using the azurerm provider (.tf)"
- "azure-pipelines.yml targeting Azure resources"
Comment on lines 77 to +82

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Potential concern: the "azure-pipelines.yml targeting Azure resources" signal overlaps with the existing owasp-cicd trigger (azure-pipelines.yml is already a named signal there). Because the profiler errs on the side of inclusion, this may cause the mcsb skill to load for repos that use Azure Pipelines as a CI runner without deploying Azure cloud resources.

The other four mcsb signals (.bicep, azuredeploy.json, Terraform with azurerm, and Azure service references) are unambiguous deployment artifacts. Worth considering whether the pipeline file entry adds enough signal quality to justify the overlap, or whether removing it and relying on the remaining four is safer for non-Azure-infrastructure repos.

- "Azure service references (Storage, Key Vault, AKS, SQL, App Service)"
secure-by-design:
- "SECURITY.md or security policy files"
- "Threat model documents"
Expand Down
6 changes: 3 additions & 3 deletions .github/agents/security/subagents/skill-assessor.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Assess exactly one security knowledge skill per invocation. Read all vulnerabili

## Constants

Skill resolution: Read the applicable security skill by name (e.g., `owasp-top-10`, `owasp-llm`, `owasp-agentic`, `owasp-mcp`, `owasp-infrastructure`, `owasp-cicd`, `secure-by-design`). Follow the skill's normative reference links to access the vulnerability index and individual vulnerability references.
Skill resolution: Read the applicable security skill by name (e.g., `owasp-top-10`, `owasp-llm`, `owasp-agentic`, `owasp-mcp`, `owasp-infrastructure`, `owasp-cicd`, `secure-by-design`, `mcsb`). Follow the skill's normative reference links to access the vulnerability index and individual vulnerability references.

### Status Values

Expand Down Expand Up @@ -141,8 +141,8 @@ Make all guidance specific to the plan content rather than generic boilerplate.
### Step 1: Gather All Vulnerability References

1. Read the located skill entry file and capture framework metadata (name, version, reference URL).
2. Follow the entry file's normative reference links to read the vulnerability index (`references/00-vulnerability-index.md`) and extract the full list of vulnerability IDs.
3. For each vulnerability ID in the index, read the corresponding reference file from the skill's `references/` directory and store its full content.
2. Follow the entry file's normative reference links to read the skill's index file (for example `references/00-vulnerability-index.md` for vulnerability skills, `references/00-principle-index.md` for principle skills, or `references/00-control-index.md` for control or benchmark skills such as `mcsb`) and extract the full list of assessable items (vulnerability identifiers, principle identifiers, or control-domain identifiers). For benchmark skills, the control-domain identifiers in the index are the assessable grain; finer per-service control identifiers are volatile and retrieved separately per the skill's lookup playbook.
3. For each item in the index, read the corresponding reference file from the skill's `references/` directory and store its full content.
4. Do not proceed to Step 2 until every reference file has been read and stored.

### Step 2: Analyze Against References
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ The following standards are also delegated for runtime lookup due to version sen
| Standard | Rationale for Delegation |
|---------------------------------------------------|------------------------------------------------------------|
| WAF / CAF | Cloud-specific, frequently updated, extensive content |
| MCSB (Microsoft Cloud Security Benchmark) | Azure-specific, frequently updated control mappings |
| MCSB per-service control mappings | Azure-specific, frequently updated per-service baselines |
| PCI-DSS | Domain-specific, version-dependent compliance requirements |
| S2C2F (Secure Supply Chain Consumption Framework) | Emerging standard, evolving maturity levels |
| SLSA (Supply Chain Levels for Software Artifacts) | Version-dependent build integrity requirements |
Expand All @@ -35,10 +35,11 @@ When buckets or AI components from Phases 1–2 match, prefer the matching speci

* AI/ML components → `owasp-agentic`, and `owasp-mcp` when MCP tooling is used (alongside the always-loaded `owasp-llm`)
* `infrastructure` bucket → `owasp-infrastructure`
* Azure cloud resources → `mcsb` (stable MCSB control-domain taxonomy and crosswalk; delegate volatile per-service control lookups)
* `build` / `devops-platform-ops` buckets → `owasp-cicd`, `supply-chain-security`
* Cross-cutting GS overlay → `secure-by-design`

These skills are loaded by the Security Planner's Conditional Skill Map. Activate `rpi-research` only for standards with no matching skill (WAF, CAF, MCSB, PCI-DSS, and the others listed above).
These skills are loaded by the Security Planner's Conditional Skill Map. Activate `rpi-research` only for standards with no matching skill (WAF, CAF, PCI-DSS, and the others listed above) and for the volatile per-service layer of MCSB.

### When to Activate Research

Expand Down
52 changes: 52 additions & 0 deletions .github/skills/security/mcsb/SKILL.md
Comment thread
nguyena2 marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
name: mcsb
description: Microsoft Cloud Security Benchmark (MCSB v2) control-domain taxonomy and NIST 800-53 / CIS Controls crosswalk for planning and reviewing Azure cloud resources.
license: MIT
user-invocable: false
metadata:
authors: "Microsoft"
spec_version: "1.0"
framework_revision: "MCSB v2 (preview)"
last_updated: "2026-07-21"
content_based_on: "https://learn.microsoft.com/security/benchmark/azure/overview"
---

# Microsoft Cloud Security Benchmark — Skill Entry

This `SKILL.md` is the entrypoint for the Microsoft Cloud Security Benchmark (MCSB) skill.

The skill encodes the durable, structurally stable layer of MCSB — the control-domain taxonomy and a domain-grain crosswalk to NIST SP 800-53 and CIS Controls — so the Security Planner and Security Reviewer can map and assess Azure cloud resources against a consistent control vocabulary.

The skill deliberately does not embed the volatile layer of MCSB (per-Azure-service security baselines, per-service control IDs, Azure Policy mappings, and Defender for Cloud assessment specifics). That content changes on Microsoft's release cadence and is retrieved at runtime through the Researcher Subagent per [references/lookup-playbook.md](references/lookup-playbook.md).
## Version and stability

This skill targets **MCSB v2**, which Microsoft marks as preview and which supersedes MCSB v1. Content is version-pinned and retrieval-dated (2026-07-21). MCSB v2 replaces v1's Governance and Strategy (`GS`) domain with an Artificial Intelligence Security (`AI`) domain, and maps to NIST SP 800-53 Rev. 5 and CIS Controls v8.1 (v1 mapped to Rev. 4 and CIS v8). Re-verify the taxonomy and mappings against the official source before relying on them for a compliance decision.

## Normative references

1. [00 Control Index](references/00-control-index.md)
2. [01 Network Security](references/01-network-security.md)
3. [02 Identity Management](references/02-identity-management.md)
4. [03 Privileged Access](references/03-privileged-access.md)
5. [04 Data Protection](references/04-data-protection.md)
6. [05 Asset Management](references/05-asset-management.md)
7. [06 Logging and Threat Detection](references/06-logging-threat-detection.md)
8. [07 Incident Response](references/07-incident-response.md)
9. [08 Posture and Vulnerability Management](references/08-posture-vulnerability-management.md)
10. [09 Endpoint Security](references/09-endpoint-security.md)
11. [10 Backup and Recovery](references/10-backup-recovery.md)
12. [11 DevOps Security](references/11-devops-security.md)
13. [12 Artificial Intelligence Security](references/12-ai-security.md)
14. [Lookup Playbook](references/lookup-playbook.md) — delegation guardrail for volatile per-service lookups.

## Skill layout

* `SKILL.md` — this file (skill entrypoint).
* `references/` — the MCSB durable reference documents.
* `00-control-index.md` — control-domain catalog, consolidated crosswalk, and attribution.
* `01` through `12` — one document per MCSB v2 control domain with assessment checklists.
* `lookup-playbook.md` — delegation guardrail for volatile per-service content.

## Attribution
Comment thread
nguyena2 marked this conversation as resolved.

Reference content in this skill is original prose that paraphrases publicly documented MCSB structure. The MCSB v2 (preview) documentation this skill cites is published on Microsoft Learn from a non-public source repository and is governed by the Microsoft Learn Terms of Use, not a public Creative Commons license. The separate, older MicrosoftDocs/SecurityBenchmarks repository is CC BY 4.0, but its benchmark spreadsheets stop at Azure Security Benchmark v3 (the pre-rename lineage) and Microsoft Cloud Security Benchmark v1; it does not contain the MCSB v2 (preview) content this skill cites. Because this skill paraphrases rather than reproduces upstream text, no verbatim-reproduction license grant applies; it cites the canonical source in each reference file. See [references/00-control-index.md](references/00-control-index.md) for the consolidated attribution.
Loading
Loading