Skip to content

Commit dcd21e4

Browse files
Add better concistency to the MCP rule
1 parent 457fdf8 commit dcd21e4

4 files changed

Lines changed: 104 additions & 14 deletions

File tree

skills/software-security/SKILL.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: software-security
33
description: A software security skill that integrates with Project CodeGuard to help AI coding agents write secure code and prevent common vulnerabilities. Use this skill when writing, reviewing, or modifying code to ensure secure-by-default practices are followed.
4-
codeguard-version: "1.0.1"
4+
codeguard-version: "1.1.0"
55
framework: "Project CodeGuard"
66
purpose: "Embed secure-by-default practices into AI coding workflows"
77
---
@@ -34,21 +34,22 @@ When writing or reviewing code:
3434
| cpp | codeguard-0-safe-c-functions.md |
3535
| d | codeguard-0-iac-security.md |
3636
| docker | codeguard-0-devops-ci-cd-containers.md, codeguard-0-supply-chain-security.md |
37-
| go | codeguard-0-additional-cryptography.md, codeguard-0-api-web-services.md, codeguard-0-authentication-mfa.md, codeguard-0-authorization-access-control.md, codeguard-0-file-handling-and-uploads.md, codeguard-0-input-validation-injection.md, codeguard-0-session-management-and-cookies.md, codeguard-0-xml-and-serialization.md |
37+
| go | codeguard-0-additional-cryptography.md, codeguard-0-api-web-services.md, codeguard-0-authentication-mfa.md, codeguard-0-authorization-access-control.md, codeguard-0-file-handling-and-uploads.md, codeguard-0-input-validation-injection.md, codeguard-0-mcp-security.md, codeguard-0-session-management-and-cookies.md, codeguard-0-xml-and-serialization.md |
3838
| html | codeguard-0-client-side-web-security.md, codeguard-0-input-validation-injection.md, codeguard-0-session-management-and-cookies.md |
39-
| java | codeguard-0-additional-cryptography.md, codeguard-0-api-web-services.md, codeguard-0-authentication-mfa.md, codeguard-0-authorization-access-control.md, codeguard-0-file-handling-and-uploads.md, codeguard-0-framework-and-languages.md, codeguard-0-input-validation-injection.md, codeguard-0-mobile-apps.md, codeguard-0-session-management-and-cookies.md, codeguard-0-xml-and-serialization.md |
40-
| javascript | codeguard-0-additional-cryptography.md, codeguard-0-api-web-services.md, codeguard-0-authentication-mfa.md, codeguard-0-authorization-access-control.md, codeguard-0-client-side-web-security.md, codeguard-0-cloud-orchestration-kubernetes.md, codeguard-0-data-storage.md, codeguard-0-devops-ci-cd-containers.md, codeguard-0-file-handling-and-uploads.md, codeguard-0-framework-and-languages.md, codeguard-0-iac-security.md, codeguard-0-input-validation-injection.md, codeguard-0-logging.md, codeguard-0-mobile-apps.md, codeguard-0-privacy-data-protection.md, codeguard-0-session-management-and-cookies.md, codeguard-0-supply-chain-security.md |
39+
| java | codeguard-0-additional-cryptography.md, codeguard-0-api-web-services.md, codeguard-0-authentication-mfa.md, codeguard-0-authorization-access-control.md, codeguard-0-file-handling-and-uploads.md, codeguard-0-framework-and-languages.md, codeguard-0-input-validation-injection.md, codeguard-0-mcp-security.md, codeguard-0-mobile-apps.md, codeguard-0-session-management-and-cookies.md, codeguard-0-xml-and-serialization.md |
40+
| javascript | codeguard-0-additional-cryptography.md, codeguard-0-api-web-services.md, codeguard-0-authentication-mfa.md, codeguard-0-authorization-access-control.md, codeguard-0-client-side-web-security.md, codeguard-0-cloud-orchestration-kubernetes.md, codeguard-0-data-storage.md, codeguard-0-devops-ci-cd-containers.md, codeguard-0-file-handling-and-uploads.md, codeguard-0-framework-and-languages.md, codeguard-0-iac-security.md, codeguard-0-input-validation-injection.md, codeguard-0-logging.md, codeguard-0-mcp-security.md, codeguard-0-mobile-apps.md, codeguard-0-privacy-data-protection.md, codeguard-0-session-management-and-cookies.md, codeguard-0-supply-chain-security.md |
4141
| kotlin | codeguard-0-additional-cryptography.md, codeguard-0-authentication-mfa.md, codeguard-0-framework-and-languages.md, codeguard-0-mobile-apps.md |
4242
| matlab | codeguard-0-additional-cryptography.md, codeguard-0-authentication-mfa.md, codeguard-0-mobile-apps.md, codeguard-0-privacy-data-protection.md |
4343
| perl | codeguard-0-mobile-apps.md |
4444
| php | codeguard-0-additional-cryptography.md, codeguard-0-api-web-services.md, codeguard-0-authentication-mfa.md, codeguard-0-authorization-access-control.md, codeguard-0-client-side-web-security.md, codeguard-0-file-handling-and-uploads.md, codeguard-0-framework-and-languages.md, codeguard-0-input-validation-injection.md, codeguard-0-session-management-and-cookies.md, codeguard-0-xml-and-serialization.md |
4545
| powershell | codeguard-0-devops-ci-cd-containers.md, codeguard-0-iac-security.md, codeguard-0-input-validation-injection.md |
46-
| python | codeguard-0-additional-cryptography.md, codeguard-0-api-web-services.md, codeguard-0-authentication-mfa.md, codeguard-0-authorization-access-control.md, codeguard-0-file-handling-and-uploads.md, codeguard-0-framework-and-languages.md, codeguard-0-input-validation-injection.md, codeguard-0-session-management-and-cookies.md, codeguard-0-xml-and-serialization.md |
46+
| python | codeguard-0-additional-cryptography.md, codeguard-0-api-web-services.md, codeguard-0-authentication-mfa.md, codeguard-0-authorization-access-control.md, codeguard-0-file-handling-and-uploads.md, codeguard-0-framework-and-languages.md, codeguard-0-input-validation-injection.md, codeguard-0-mcp-security.md, codeguard-0-session-management-and-cookies.md, codeguard-0-xml-and-serialization.md |
4747
| ruby | codeguard-0-additional-cryptography.md, codeguard-0-api-web-services.md, codeguard-0-authentication-mfa.md, codeguard-0-authorization-access-control.md, codeguard-0-file-handling-and-uploads.md, codeguard-0-framework-and-languages.md, codeguard-0-iac-security.md, codeguard-0-input-validation-injection.md, codeguard-0-session-management-and-cookies.md, codeguard-0-xml-and-serialization.md |
48+
| rust | codeguard-0-mcp-security.md |
4849
| shell | codeguard-0-devops-ci-cd-containers.md, codeguard-0-iac-security.md, codeguard-0-input-validation-injection.md |
4950
| sql | codeguard-0-data-storage.md, codeguard-0-input-validation-injection.md |
5051
| swift | codeguard-0-additional-cryptography.md, codeguard-0-authentication-mfa.md, codeguard-0-mobile-apps.md |
51-
| typescript | codeguard-0-additional-cryptography.md, codeguard-0-api-web-services.md, codeguard-0-authentication-mfa.md, codeguard-0-authorization-access-control.md, codeguard-0-client-side-web-security.md, codeguard-0-file-handling-and-uploads.md, codeguard-0-framework-and-languages.md, codeguard-0-input-validation-injection.md, codeguard-0-session-management-and-cookies.md |
52+
| typescript | codeguard-0-additional-cryptography.md, codeguard-0-api-web-services.md, codeguard-0-authentication-mfa.md, codeguard-0-authorization-access-control.md, codeguard-0-client-side-web-security.md, codeguard-0-file-handling-and-uploads.md, codeguard-0-framework-and-languages.md, codeguard-0-input-validation-injection.md, codeguard-0-mcp-security.md, codeguard-0-session-management-and-cookies.md |
5253
| vlang | codeguard-0-client-side-web-security.md |
5354
| xml | codeguard-0-additional-cryptography.md, codeguard-0-api-web-services.md, codeguard-0-devops-ci-cd-containers.md, codeguard-0-framework-and-languages.md, codeguard-0-mobile-apps.md, codeguard-0-xml-and-serialization.md |
5455
| yaml | codeguard-0-additional-cryptography.md, codeguard-0-api-web-services.md, codeguard-0-authorization-access-control.md, codeguard-0-cloud-orchestration-kubernetes.md, codeguard-0-data-storage.md, codeguard-0-devops-ci-cd-containers.md, codeguard-0-framework-and-languages.md, codeguard-0-iac-security.md, codeguard-0-logging.md, codeguard-0-privacy-data-protection.md, codeguard-0-supply-chain-security.md |
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
---
2+
description: MCP (Model Context Protocol) Security based on CoSAI MCP Security guidelines
3+
languages:
4+
- python
5+
- javascript
6+
- typescript
7+
- go
8+
- rust
9+
- java
10+
alwaysApply: false
11+
---
12+
13+
rule_id: codeguard-0-mcp-security
14+
15+
# MCP (Model Context Protocol) Security Guidelines
16+
17+
NEVER deploy MCP servers or clients without implementing proper security controls.
18+
19+
### Workload Identity and Authentication
20+
- Use SPIFFE/SPIRE for cryptographic workload identities
21+
- SPIFFE (Secure Production Identity Framework For Everyone) provides a standard for service identity
22+
- SPIRE (SPIFFE Runtime Environment) issues and rotates short-lived cryptographic identities (SVIDs)
23+
24+
### Input and Data Sanitization
25+
- Validate ALL inputs using allowlists at every trust boundary
26+
- Sanitize file paths through canonicalization
27+
- Use parameterized queries for database operations
28+
- Apply context-aware output encoding (SQL, shell, HTML)
29+
- Treat ALL AI-generated content as untrusted input
30+
- Deploy prompt injection detection systems
31+
- Use strict JSON schemas to maintain boundaries between instructions and data
32+
33+
### Sandboxing and Isolation
34+
- Design MCP servers to execute with least privilege
35+
- MCP servers interacting with host environment (files, commands, network) MUST implement sandboxing controls
36+
- LLM-generated code MUST NOT run with full user privileges
37+
- Implement additional sandboxing layers: gVisor, Kata Containers, SELinux sandboxes
38+
39+
### Cryptographic Verification of Resources
40+
- Provide cryptographic signatures and SBOMs for all server code
41+
- Implement signature verification in your MCP client before loading servers
42+
- Use TLS for ALL data in transit
43+
- Implement remote attestation capabilities to verify servers are running expected code
44+
45+
### Transport Layer Security
46+
47+
#### stdio Transport (Local Servers)
48+
- STRONGLY RECOMMENDED for local MCP to eliminate DNS rebinding risks
49+
- Direct pipe-based stream communication
50+
- Implement sandbox to prevent privilege escalation
51+
52+
#### HTTP Streaming Transport (Remote Servers)
53+
Required security controls to implement:
54+
- Payload Limits (prevent large payload and recursive payload DoS)
55+
- Client-Server Authentication/Authorization
56+
- Mutual TLS Authentication
57+
- TLS Encryption
58+
- CORS Protection
59+
- CSRF Protection
60+
- Integrity Checks (prevent replay, spoofing, poisoned responses)
61+
62+
### Human-in-the-Loop
63+
- Implement confirmation prompts for risky operations in your MCP server
64+
- Use elicitation on MCP server side to request user confirmation of risky actions
65+
- Security-relevant messages MUST clearly indicate implications
66+
- Do NOT rely solely on human approval (users can become fatigued)
67+
68+
### Logging and Observability
69+
- Implement logging in your MCP servers and clients
70+
- Log: tools that were used, parameters, originating prompt
71+
- Use OpenTelemetry for end-to-end linkability of actions
72+
- Maintain immutable records of actions and authorizations
73+
74+
---
75+
76+
## Deployment Pattern Security
77+
78+
### All-Local (stdio or http)
79+
- Security depends entirely on host system posture
80+
- Use `stdio` transport to avoid DNS rebinding risks
81+
- Use sandboxing to limit privilege escalation attacks
82+
- Appropriate for development and personal use
83+
84+
### Single-Tenant Remote (http)
85+
- Authentication between client and server is REQUIRED
86+
- Use secure credential storage (OS keychains, secret managers)
87+
- Communication MUST be authenticated and encrypted
88+
- Enterprise clients should enforce authenticated server discovery with explicit allowlists
89+
90+
### Multi-Tenant Remote (http)
91+
- Require robust tenant isolation, identity, and access control
92+
- Implement strong multi-tenancy controls (per-tenant encryption, role-based access control)
93+
- Prefer MCP servers hosted directly by service provider
94+
- Provide remote attestation when possible

sources/core/codeguard-0-mcp-security.md

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,19 @@ languages:
66
- typescript
77
- go
88
- rust
9+
- java
910
alwaysApply: false
1011
---
1112

12-
rule_id: codeguard-0-mcp-security
13-
1413
# MCP (Model Context Protocol) Security Guidelines
1514

1615
NEVER deploy MCP servers or clients without implementing proper security controls.
1716

18-
1917
### Workload Identity and Authentication
2018
- Use SPIFFE/SPIRE for cryptographic workload identities
2119
- SPIFFE (Secure Production Identity Framework For Everyone) provides a standard for service identity
2220
- SPIRE (SPIFFE Runtime Environment) issues and rotates short-lived cryptographic identities (SVIDs)
2321

24-
2522
### Input and Data Sanitization
2623
- Validate ALL inputs using allowlists at every trust boundary
2724
- Sanitize file paths through canonicalization
@@ -93,5 +90,3 @@ Required security controls to implement:
9390
- Implement strong multi-tenancy controls (per-tenant encryption, role-based access control)
9491
- Prefer MCP servers hosted directly by service provider
9592
- Provide remote attestation when possible
96-
97-
You must always explain how this rule was applied and why it was applied.

uv.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)