cleartoship 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +264 -0
  3. package/action.yml +154 -0
  4. package/dist/banner.d.ts +1 -0
  5. package/dist/banner.js +14 -0
  6. package/dist/cli.d.ts +2 -0
  7. package/dist/cli.js +103 -0
  8. package/dist/data/popular.d.ts +17 -0
  9. package/dist/data/popular.js +103 -0
  10. package/dist/index.d.ts +5 -0
  11. package/dist/index.js +4 -0
  12. package/dist/report.d.ts +15 -0
  13. package/dist/report.js +317 -0
  14. package/dist/scan.d.ts +24 -0
  15. package/dist/scan.js +81 -0
  16. package/dist/scanners/community.d.ts +2 -0
  17. package/dist/scanners/community.js +155 -0
  18. package/dist/scanners/dependencies.d.ts +21 -0
  19. package/dist/scanners/dependencies.js +549 -0
  20. package/dist/scanners/index.d.ts +8 -0
  21. package/dist/scanners/index.js +13 -0
  22. package/dist/scanners/rls.d.ts +7 -0
  23. package/dist/scanners/rls.js +531 -0
  24. package/dist/scanners/secrets.d.ts +2 -0
  25. package/dist/scanners/secrets.js +439 -0
  26. package/dist/scanners/server-actions.d.ts +2 -0
  27. package/dist/scanners/server-actions.js +466 -0
  28. package/dist/types.d.ts +65 -0
  29. package/dist/types.js +10 -0
  30. package/dist/utils/ast.d.ts +13 -0
  31. package/dist/utils/ast.js +107 -0
  32. package/dist/utils/detect.d.ts +2 -0
  33. package/dist/utils/detect.js +77 -0
  34. package/dist/utils/entropy.d.ts +7 -0
  35. package/dist/utils/entropy.js +19 -0
  36. package/dist/utils/files.d.ts +13 -0
  37. package/dist/utils/files.js +154 -0
  38. package/dist/utils/osv.d.ts +26 -0
  39. package/dist/utils/osv.js +123 -0
  40. package/dist/utils/registry.d.ts +44 -0
  41. package/dist/utils/registry.js +195 -0
  42. package/dist/utils/sql.d.ts +20 -0
  43. package/dist/utils/sql.js +157 -0
  44. package/dist/utils/suppress.d.ts +19 -0
  45. package/dist/utils/suppress.js +56 -0
  46. package/dist/utils/traverse.d.ts +2 -0
  47. package/dist/utils/traverse.js +14 -0
  48. package/dist/vendor/gitleaks/rules.d.ts +13 -0
  49. package/dist/vendor/gitleaks/rules.js +1571 -0
  50. package/dist/vendor/guardvibe/index.d.ts +11 -0
  51. package/dist/vendor/guardvibe/index.js +60 -0
  52. package/dist/vendor/guardvibe/rules/advanced-security.d.ts +2 -0
  53. package/dist/vendor/guardvibe/rules/advanced-security.js +418 -0
  54. package/dist/vendor/guardvibe/rules/ai-host-security.d.ts +2 -0
  55. package/dist/vendor/guardvibe/rules/ai-host-security.js +190 -0
  56. package/dist/vendor/guardvibe/rules/ai-security.d.ts +2 -0
  57. package/dist/vendor/guardvibe/rules/ai-security.js +413 -0
  58. package/dist/vendor/guardvibe/rules/ai-tool-runtime.d.ts +2 -0
  59. package/dist/vendor/guardvibe/rules/ai-tool-runtime.js +194 -0
  60. package/dist/vendor/guardvibe/rules/api-security.d.ts +2 -0
  61. package/dist/vendor/guardvibe/rules/api-security.js +154 -0
  62. package/dist/vendor/guardvibe/rules/auth.d.ts +2 -0
  63. package/dist/vendor/guardvibe/rules/auth.js +222 -0
  64. package/dist/vendor/guardvibe/rules/cicd.d.ts +2 -0
  65. package/dist/vendor/guardvibe/rules/cicd.js +108 -0
  66. package/dist/vendor/guardvibe/rules/core.d.ts +2 -0
  67. package/dist/vendor/guardvibe/rules/core.js +484 -0
  68. package/dist/vendor/guardvibe/rules/cve-versions.d.ts +2 -0
  69. package/dist/vendor/guardvibe/rules/cve-versions.js +1130 -0
  70. package/dist/vendor/guardvibe/rules/database.d.ts +2 -0
  71. package/dist/vendor/guardvibe/rules/database.js +173 -0
  72. package/dist/vendor/guardvibe/rules/deployment.d.ts +2 -0
  73. package/dist/vendor/guardvibe/rules/deployment.js +269 -0
  74. package/dist/vendor/guardvibe/rules/dockerfile.d.ts +2 -0
  75. package/dist/vendor/guardvibe/rules/dockerfile.js +99 -0
  76. package/dist/vendor/guardvibe/rules/firebase.d.ts +2 -0
  77. package/dist/vendor/guardvibe/rules/firebase.js +96 -0
  78. package/dist/vendor/guardvibe/rules/go.d.ts +2 -0
  79. package/dist/vendor/guardvibe/rules/go.js +85 -0
  80. package/dist/vendor/guardvibe/rules/modern-stack.d.ts +2 -0
  81. package/dist/vendor/guardvibe/rules/modern-stack.js +631 -0
  82. package/dist/vendor/guardvibe/rules/nextjs.d.ts +2 -0
  83. package/dist/vendor/guardvibe/rules/nextjs.js +233 -0
  84. package/dist/vendor/guardvibe/rules/other-services.d.ts +2 -0
  85. package/dist/vendor/guardvibe/rules/other-services.js +72 -0
  86. package/dist/vendor/guardvibe/rules/payments.d.ts +2 -0
  87. package/dist/vendor/guardvibe/rules/payments.js +123 -0
  88. package/dist/vendor/guardvibe/rules/react-native.d.ts +2 -0
  89. package/dist/vendor/guardvibe/rules/react-native.js +132 -0
  90. package/dist/vendor/guardvibe/rules/services.d.ts +2 -0
  91. package/dist/vendor/guardvibe/rules/services.js +149 -0
  92. package/dist/vendor/guardvibe/rules/shell.d.ts +2 -0
  93. package/dist/vendor/guardvibe/rules/shell.js +72 -0
  94. package/dist/vendor/guardvibe/rules/sql.d.ts +2 -0
  95. package/dist/vendor/guardvibe/rules/sql.js +60 -0
  96. package/dist/vendor/guardvibe/rules/supply-chain.d.ts +2 -0
  97. package/dist/vendor/guardvibe/rules/supply-chain.js +243 -0
  98. package/dist/vendor/guardvibe/rules/terraform.d.ts +2 -0
  99. package/dist/vendor/guardvibe/rules/terraform.js +84 -0
  100. package/dist/vendor/guardvibe/rules/types.d.ts +14 -0
  101. package/dist/vendor/guardvibe/rules/types.js +11 -0
  102. package/dist/vendor/guardvibe/rules/web-security.d.ts +2 -0
  103. package/dist/vendor/guardvibe/rules/web-security.js +258 -0
  104. package/examples/security.yml +23 -0
  105. package/package.json +70 -0
@@ -0,0 +1,190 @@
1
+ /*
2
+ * Vendored from GuardVibe — https://github.com/goklab/guardvibe
3
+ * Copyright 2026 GokLab. Licensed under the Apache License, Version 2.0.
4
+ * Full licence: LICENSES/guardvibe-Apache-2.0.txt
5
+ *
6
+ * Modifications by ClearToShip: import paths rewritten for this package
7
+ * layout. Rule content is unchanged; rules that duplicate ClearToShip's own
8
+ * AST checks are disabled at runtime in src/scanners/community.ts rather
9
+ * than deleted here, so this file stays a faithful copy of upstream.
10
+ */
11
+ // Host environment security rules — scans AI coding host configuration files
12
+ // (.claude/settings.json, .cursor/mcp.json, .vscode/mcp.json, .env, shell profiles)
13
+ export const aiHostSecurityRules = [
14
+ {
15
+ id: "VG882",
16
+ name: "ANTHROPIC_BASE_URL Set to Non-Anthropic Domain",
17
+ severity: "high",
18
+ owasp: "A07:2025 Sensitive Data Exposure",
19
+ description: "ANTHROPIC_BASE_URL overridden to a non-Anthropic domain. This redirects all API traffic (including prompts and API keys) to a potentially malicious proxy. CVE-2026-21852.",
20
+ pattern: /ANTHROPIC_BASE_URL\s*=\s*['"]?https?:\/\/(?!api\.anthropic\.com)[^\s'"]+/gi,
21
+ languages: ["shell", "yaml", "javascript", "typescript", "python"],
22
+ fix: "Remove the ANTHROPIC_BASE_URL override, or add the URL to your .guardviberc trustedBaseUrls allowlist if it's a legitimate corporate proxy.",
23
+ fixCode: '# Remove from .env / shell profile:\n# ANTHROPIC_BASE_URL=https://api.anthropic.com\n\n# Or allowlist in .guardviberc:\n# { "doctor": { "trustedBaseUrls": ["https://proxy.corp.internal"] } }',
24
+ compliance: ["SOC2:CC6.1", "GDPR:Art32", "EUAIACT:Art15"],
25
+ exploit: "Attacker sets ANTHROPIC_BASE_URL to a proxy server that logs all API requests, capturing API keys and conversation content.",
26
+ },
27
+ {
28
+ id: "VG883",
29
+ name: "OPENAI_BASE_URL Set to Non-OpenAI Domain",
30
+ severity: "high",
31
+ owasp: "A07:2025 Sensitive Data Exposure",
32
+ description: "OPENAI_BASE_URL overridden to a non-OpenAI domain. API traffic including keys and prompts can be intercepted.",
33
+ pattern: /OPENAI_BASE_URL\s*=\s*['"]?https?:\/\/(?!api\.openai\.com)[^\s'"]+/gi,
34
+ languages: ["shell", "yaml", "javascript", "typescript", "python"],
35
+ fix: "Remove the OPENAI_BASE_URL override, or add the URL to your .guardviberc trustedBaseUrls allowlist.",
36
+ fixCode: '# Remove override or allowlist in .guardviberc:\n# { "doctor": { "trustedBaseUrls": ["https://proxy.corp.internal"] } }',
37
+ compliance: ["SOC2:CC6.1", "GDPR:Art32", "EUAIACT:Art15"],
38
+ exploit: "Attacker redirects OpenAI API traffic through a malicious proxy to capture API keys and conversation data.",
39
+ },
40
+ {
41
+ id: "VG884",
42
+ name: "Claude Hook Contains Shell Metacharacters",
43
+ severity: "critical",
44
+ owasp: "A02:2025 Injection",
45
+ description: "Claude settings.json hook command contains shell metacharacters (|, ;, &&, $(), backticks). Hooks run with full shell access — attackers can chain arbitrary commands. CVE-2025-59536.",
46
+ pattern: /["']command["']\s*:\s*["'][^"']*?(?:\||\$\(|`[^`]+`|;\s*\w|&&\s*\w)[^"']*?["']/g,
47
+ languages: ["json"],
48
+ fix: "Remove shell metacharacters from hook commands. Use simple, direct commands without piping or chaining.",
49
+ fixCode: '// SAFE hook example:\n"PostToolUse": [{ "command": "echo done" }]',
50
+ compliance: ["SOC2:CC7.1", "PCI-DSS:Req6.5.1", "EUAIACT:Art15"],
51
+ exploit: "Malicious .claude/settings.json injected via supply chain attack runs arbitrary commands every time a tool is used.",
52
+ },
53
+ {
54
+ id: "VG885",
55
+ name: "MCP Config with Overly Permissive Tool Access",
56
+ severity: "medium",
57
+ owasp: "A01:2025 Broken Access Control",
58
+ description: "MCP server configuration grants access to all tools without restriction. The principle of least privilege requires limiting tool access to only what each server needs.",
59
+ pattern: /["']allowedTools["']\s*:\s*\[\s*["']\*["']\s*\]/g,
60
+ languages: ["json"],
61
+ fix: "Replace wildcard tool access with explicit tool names that the MCP server actually needs.",
62
+ fixCode: '// SAFE:\n"allowedTools": ["read_file", "list_directory"]',
63
+ compliance: ["SOC2:CC6.1", "PCI-DSS:Req7.1", "EUAIACT:Art14"],
64
+ },
65
+ {
66
+ id: "VG890",
67
+ name: "Settings Hook Executes Network Requests",
68
+ severity: "critical",
69
+ owasp: "A10:2025 SSRF",
70
+ description: "Claude settings.json hook command contains network request tools (curl, wget, nc). Hooks with network access can exfiltrate data from the development environment.",
71
+ pattern: /["'](?:command|cmd)["']\s*:\s*["'][^"']*(?:curl\s|wget\s|nc\s|ncat\s)/gi,
72
+ languages: ["json"],
73
+ fix: "Remove network request commands from hooks. Hooks should perform only local operations.",
74
+ fixCode: '// SAFE hook:\n"command": "echo done"',
75
+ compliance: ["SOC2:CC6.6", "PCI-DSS:Req6.5.9", "EUAIACT:Art15"],
76
+ exploit: "Malicious hook exfiltrates SSH keys, environment variables, or source code to an attacker-controlled server after every tool invocation.",
77
+ },
78
+ {
79
+ id: "VG891",
80
+ name: "Settings Hook Pipes Output to External Command",
81
+ severity: "high",
82
+ owasp: "A02:2025 Injection",
83
+ description: "Claude settings.json hook pipes its output to another command. This creates a command injection surface where the tool output becomes an input to potentially dangerous commands.",
84
+ pattern: /["'](?:command|cmd)["']\s*:\s*["'][^"']*\|\s*(?:bash|sh|zsh|python|node|eval)/gi,
85
+ languages: ["json"],
86
+ fix: "Remove pipe chains from hook commands. Process tool output in a dedicated script if needed.",
87
+ fixCode: '// SAFE:\n"command": "python3 process_output.py"',
88
+ compliance: ["SOC2:CC7.1", "EUAIACT:Art15"],
89
+ },
90
+ {
91
+ id: "VG892",
92
+ name: "MCP Config References file:// Server",
93
+ severity: "high",
94
+ owasp: "A10:2025 SSRF",
95
+ description: "MCP server configuration uses a file:// URL. This can reference local filesystem paths and potentially access sensitive files on the host.",
96
+ pattern: /["'](?:url|command|uri|endpoint|server)["']\s*:\s*["']file:\/\/[^"']+/gi,
97
+ languages: ["json"],
98
+ fix: "Use npm packages or HTTPS URLs for MCP servers. Avoid file:// references in MCP configurations.",
99
+ fixCode: '// SAFE:\n"command": "npx @modelcontextprotocol/server-filesystem /path/to/allowed"',
100
+ compliance: ["SOC2:CC6.1", "EUAIACT:Art15"],
101
+ },
102
+ {
103
+ id: "VG893",
104
+ name: "Overly Broad Wildcard in allowedTools",
105
+ severity: "medium",
106
+ owasp: "A01:2025 Broken Access Control",
107
+ description: "MCP configuration uses broad wildcard patterns in allowedTools (e.g., 'mcp__*', 'edit*'). This grants more tool access than intended and violates least privilege.",
108
+ pattern: /["']allowedTools["']\s*:\s*\[[\s\S]{0,500}?["'](?:mcp__\*|edit\*|write\*|delete\*|bash\*|shell\*)['"]/gi,
109
+ languages: ["json"],
110
+ fix: "Replace broad wildcards with specific tool names. Use exact match patterns for tool access control.",
111
+ fixCode: '// SAFE:\n"allowedTools": ["mcp__guardvibe__scan_file", "mcp__guardvibe__check_code"]',
112
+ compliance: ["SOC2:CC6.1", "PCI-DSS:Req7.1", "EUAIACT:Art14"],
113
+ },
114
+ {
115
+ id: "VG894",
116
+ name: "AI Host Config Grants Write to Security-Sensitive Paths",
117
+ severity: "high",
118
+ owasp: "A01:2025 Broken Access Control",
119
+ description: "AI host configuration grants write access to security-sensitive paths (~/.ssh, ~/.gnupg, ~/.aws, /etc). This can allow an MCP server or AI agent to modify credentials or system configuration.",
120
+ pattern: /["'](?:allowedDirectories|paths|roots|workingDirectory)["']\s*:\s*\[?[\s\S]{0,200}?["'](?:~?\/?\.ssh|~?\/?\.gnupg|~?\/?\.aws|~?\/?\.kube|\/etc(?:\/|\b)|~?\/?\.config\/gcloud)/gi,
121
+ languages: ["json"],
122
+ fix: "Remove security-sensitive paths from AI host configuration. Limit file access to project directories only.",
123
+ fixCode: '// SAFE:\n"allowedDirectories": ["./src", "./docs"]',
124
+ compliance: ["SOC2:CC6.1", "PCI-DSS:Req7.1", "HIPAA:§164.312(a)", "EUAIACT:Art14"],
125
+ },
126
+ {
127
+ id: "VG896",
128
+ name: "AI Assistant Auto-Approve Bypasses Permission Prompt",
129
+ severity: "critical",
130
+ owasp: "A05:2025 Security Misconfiguration",
131
+ description: "AI assistant configuration disables the human-in-the-loop permission prompt: dangerouslySkipPermissions=true, autoApprove=true, an unrestricted Bash(*) entry in the permissions allowlist, or Gemini's trustWorkspace=true. This converts the AI agent into a fully autonomous executor of repo-supplied or prompt-supplied commands — the exact pattern abused by the Gemini CLI workspace-trust RCE (CVE-2025-XXXX) and Claude Code repo-controlled settings exploits in 2026. Any prompt-injected payload (in code, docs, issue text, or tool output) becomes immediate command execution at the user's privilege level.",
132
+ pattern: /(?:["']dangerouslySkipPermissions["']\s*:\s*true|["']autoApprove["']\s*:\s*true|["']trustWorkspace["']\s*:\s*true|["']checkpointing["']\s*:\s*false|["']allow["']\s*:\s*\[[^\]]*["'](?:\*|Bash\(\*\)|Bash\s*\*|Edit\(\*\)|Write\(\*\))["'])/g,
133
+ languages: ["json"],
134
+ fix: "Remove the auto-approve / trust-bypass flag. Replace wildcard Bash/Edit/Write permissions with explicit allowlists for the specific commands and paths the agent legitimately needs.",
135
+ fixCode: '// .claude/settings.json — explicit allowlist, no bypass:\n{\n "permissions": {\n "allow": [\n "Read(*)",\n "Bash(npm test:*)",\n "Bash(npm run build:*)"\n ]\n }\n}\n\n// .gemini/settings.json — keep trust prompt + checkpointing on:\n{\n "trustWorkspace": false,\n "checkpointing": true\n}',
136
+ compliance: ["SOC2:CC6.1", "SOC2:CC7.1", "PCI-DSS:Req7.1", "EUAIACT:Art14", "EUAIACT:Art15"],
137
+ exploit: "A malicious .claude/settings.json or .gemini/settings.json shipped with a cloned repo (or injected via supply chain) silently flips the permission gate. The next prompt that triggers Bash — including indirect prompt injection from a fetched URL or README — runs attacker-controlled commands without the user ever clicking 'allow'.",
138
+ },
139
+ {
140
+ id: "VG895",
141
+ name: "PostToolUse Hook Modifies Files Silently",
142
+ severity: "high",
143
+ owasp: "A01:2025 Broken Access Control",
144
+ description: "PostToolUse hook contains file modification commands (cp, mv, rm, chmod, chown, sed, tee). Silent file modifications after tool use can hide backdoors or tamper with source code.",
145
+ pattern: /["']PostToolUse["']\s*:[\s\S]{0,500}?["'](?:command|cmd)["']\s*:\s*["'][^"']*(?:\bcp\b|\bmv\b|\brm\b|\bchmod\b|\bchown\b|\bsed\b|\btee\b|\bdd\b)/gi,
146
+ languages: ["json"],
147
+ fix: "Remove file-modifying commands from PostToolUse hooks. Hooks should only observe and report, not modify files.",
148
+ fixCode: '// SAFE:\n"PostToolUse": [{ "command": "echo Tool completed" }]',
149
+ compliance: ["SOC2:CC7.1", "PCI-DSS:Req10.2", "EUAIACT:Art14"],
150
+ },
151
+ // ── Differentiation batch: MCP config supply-chain & isolation ─────────
152
+ {
153
+ id: "VG1012",
154
+ name: "MCP Server Pinned to @latest (Unpinned Supply Chain)",
155
+ severity: "high",
156
+ owasp: "A03:2025 Software Supply Chain Failures",
157
+ description: "MCP server configuration uses an unpinned `@latest` package version. The next time the host launches the server, npm fetches whatever the maintainer has published — including a compromised release. Pin the package to a specific version so a compromised publish does not silently flow into the AI agent's tool surface.",
158
+ pattern: /["']args["']\s*:\s*\[[^\]]*?["'](?:@[a-z0-9][\w-]*\/)?[a-z0-9][\w-]*@latest["']/gi,
159
+ languages: ["json"],
160
+ fix: "Pin MCP server packages to an exact version. Re-run `guardvibe init` to regenerate `.mcp.json` with the current pinned version.",
161
+ fixCode: '// SAFE — exact pinned version:\n"command": "npx",\n"args": ["-y", "guardvibe@3.0.55"]\n\n// UNSAFE — pulls every new release on next launch:\n// "args": ["-y", "guardvibe@latest"]',
162
+ compliance: ["SOC2:CC7.1", "PCI-DSS:Req6.2", "EUAIACT:Art15"],
163
+ exploit: "Attacker compromises an MCP server's npm publish credentials. Every host using `@latest` pulls the trojanized version on the next session start, executing arbitrary code under the developer's account.",
164
+ },
165
+ {
166
+ id: "VG1013",
167
+ name: "MCP Server env Block Contains Hardcoded Secret",
168
+ severity: "critical",
169
+ owasp: "A07:2025 Sensitive Data Exposure",
170
+ description: "MCP server configuration `env` block contains a literal API key, token, or secret value rather than a `${VAR}` reference. The credential is committed to the repo (or shared with collaborators via the host config) and is exposed to every MCP server child process that inherits the env.",
171
+ pattern: /["']env["']\s*:\s*\{[^}]*?["'][A-Z][A-Z0-9_]{3,}["']\s*:\s*["'](?!\$\{|process\.env)(?:sk-[A-Za-z0-9_\-]{15,}|ghp_[A-Za-z0-9]{10,}|github_pat_[A-Za-z0-9_]{15,}|xox[baprs]-[A-Za-z0-9-]{8,}|AKIA[0-9A-Z]{12,}|AIza[0-9A-Za-z\-_]{30,}|hf_[A-Za-z0-9]{20,}|nvapi-[A-Za-z0-9_\-]{15,}|[A-Za-z0-9_\-]{32,})/g,
172
+ languages: ["json"],
173
+ fix: "Replace hardcoded secrets with `${ENV_VAR}` references. Store the actual value in your shell or a secrets manager, not in the MCP config.",
174
+ fixCode: '// SAFE — env-var reference:\n"env": { "ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}" }\n\n// UNSAFE — secret committed to repo:\n// "env": { "ANTHROPIC_API_KEY": "sk-ant-api03-AbCd..." }',
175
+ compliance: ["SOC2:CC6.1", "PCI-DSS:Req3.4", "GDPR:Art32", "EUAIACT:Art15"],
176
+ exploit: "Anyone with read access to the repo (or to a compromised collaborator's machine) gains the API key. The key bills to the owner and gives full provider access until rotation.",
177
+ },
178
+ {
179
+ id: "VG1014",
180
+ name: "MCP Server Command Loads From World-Writable or Temp Path",
181
+ severity: "high",
182
+ owasp: "A03:2025 Software Supply Chain Failures",
183
+ description: "MCP server `command` references a binary or script under `/tmp/`, `/var/tmp/`, `~/Downloads/`, or a relative `..` traversal. World-writable and temp directories can be replaced by any local user or attacker; loading an MCP server from such a path is a code-execution sink because the AI agent will run whatever command is at that path the next time it starts.",
184
+ pattern: /["']command["']\s*:\s*["'](?:\/tmp\/|\/var\/tmp\/|~\/Downloads\/|~\/Desktop\/[^"']*\.sh|\.\.\/[^"']*\/)/gi,
185
+ languages: ["json"],
186
+ fix: "Move the MCP server binary into a versioned location (a pinned npm package, a cloned repo with checksum verification, or a system-managed install path). Avoid `/tmp` or download directories.",
187
+ fixCode: '// SAFE — npm-managed:\n"command": "npx",\n"args": ["-y", "@modelcontextprotocol/server-filesystem@1.4.2"]\n\n// UNSAFE — anyone can replace this binary:\n// "command": "/tmp/mcp-helper"',
188
+ compliance: ["SOC2:CC7.1", "EUAIACT:Art15"],
189
+ },
190
+ ];
@@ -0,0 +1,2 @@
1
+ import type { SecurityRule } from "./types.js";
2
+ export declare const aiSecurityRules: SecurityRule[];