mcp-security-scanner 1.0.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.
- package/LICENSE +21 -0
- package/README.ar.md +662 -0
- package/README.bn.md +662 -0
- package/README.bs.md +662 -0
- package/README.da.md +662 -0
- package/README.de.md +662 -0
- package/README.el.md +662 -0
- package/README.es.md +662 -0
- package/README.fr.md +663 -0
- package/README.hi.md +662 -0
- package/README.it.md +662 -0
- package/README.ja.md +663 -0
- package/README.ko.md +662 -0
- package/README.md +662 -0
- package/README.no.md +662 -0
- package/README.pl.md +662 -0
- package/README.pt-BR.md +662 -0
- package/README.ru.md +662 -0
- package/README.th.md +662 -0
- package/README.tr.md +662 -0
- package/README.uk.md +663 -0
- package/README.vi.md +662 -0
- package/README.zh-TW.md +661 -0
- package/README.zh.md +661 -0
- package/dist/config/env-scanner.d.ts +3 -0
- package/dist/config/env-scanner.d.ts.map +1 -0
- package/dist/config/env-scanner.js +85 -0
- package/dist/config/env-scanner.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +169 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/mcp-config-parser.d.ts +16 -0
- package/dist/config/mcp-config-parser.d.ts.map +1 -0
- package/dist/config/mcp-config-parser.js +86 -0
- package/dist/config/mcp-config-parser.js.map +1 -0
- package/dist/config/server-verification.d.ts +5 -0
- package/dist/config/server-verification.d.ts.map +1 -0
- package/dist/config/server-verification.js +221 -0
- package/dist/config/server-verification.js.map +1 -0
- package/dist/data/dangerous-sinks.d.ts +13 -0
- package/dist/data/dangerous-sinks.d.ts.map +1 -0
- package/dist/data/dangerous-sinks.js +45 -0
- package/dist/data/dangerous-sinks.js.map +1 -0
- package/dist/data/owasp-mcp-top10.d.ts +12 -0
- package/dist/data/owasp-mcp-top10.d.ts.map +1 -0
- package/dist/data/owasp-mcp-top10.js +95 -0
- package/dist/data/owasp-mcp-top10.js.map +1 -0
- package/dist/data/poisoning-patterns.d.ts +15 -0
- package/dist/data/poisoning-patterns.d.ts.map +1 -0
- package/dist/data/poisoning-patterns.js +146 -0
- package/dist/data/poisoning-patterns.js.map +1 -0
- package/dist/data/popular-packages.d.ts +2 -0
- package/dist/data/popular-packages.d.ts.map +1 -0
- package/dist/data/popular-packages.js +71 -0
- package/dist/data/popular-packages.js.map +1 -0
- package/dist/data/secret-patterns.d.ts +8 -0
- package/dist/data/secret-patterns.d.ts.map +1 -0
- package/dist/data/secret-patterns.js +129 -0
- package/dist/data/secret-patterns.js.map +1 -0
- package/dist/deps/index.d.ts +3 -0
- package/dist/deps/index.d.ts.map +1 -0
- package/dist/deps/index.js +308 -0
- package/dist/deps/index.js.map +1 -0
- package/dist/deps/install-script-detector.d.ts +9 -0
- package/dist/deps/install-script-detector.d.ts.map +1 -0
- package/dist/deps/install-script-detector.js +98 -0
- package/dist/deps/install-script-detector.js.map +1 -0
- package/dist/deps/lockfile-parser.d.ts +15 -0
- package/dist/deps/lockfile-parser.d.ts.map +1 -0
- package/dist/deps/lockfile-parser.js +123 -0
- package/dist/deps/lockfile-parser.js.map +1 -0
- package/dist/deps/typosquat-checker.d.ts +10 -0
- package/dist/deps/typosquat-checker.d.ts.map +1 -0
- package/dist/deps/typosquat-checker.js +84 -0
- package/dist/deps/typosquat-checker.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +315 -0
- package/dist/index.js.map +1 -0
- package/dist/meta/sources.d.ts +3 -0
- package/dist/meta/sources.d.ts.map +1 -0
- package/dist/meta/sources.js +43 -0
- package/dist/meta/sources.js.map +1 -0
- package/dist/protocol/mcp-server.d.ts +4 -0
- package/dist/protocol/mcp-server.d.ts.map +1 -0
- package/dist/protocol/mcp-server.js +32 -0
- package/dist/protocol/mcp-server.js.map +1 -0
- package/dist/protocol/tools.d.ts +3 -0
- package/dist/protocol/tools.d.ts.map +1 -0
- package/dist/protocol/tools.js +21 -0
- package/dist/protocol/tools.js.map +1 -0
- package/dist/report/index.d.ts +3 -0
- package/dist/report/index.d.ts.map +1 -0
- package/dist/report/index.js +259 -0
- package/dist/report/index.js.map +1 -0
- package/dist/report/json-report.d.ts +4 -0
- package/dist/report/json-report.d.ts.map +1 -0
- package/dist/report/json-report.js +61 -0
- package/dist/report/json-report.js.map +1 -0
- package/dist/report/markdown.d.ts +3 -0
- package/dist/report/markdown.d.ts.map +1 -0
- package/dist/report/markdown.js +89 -0
- package/dist/report/markdown.js.map +1 -0
- package/dist/report/sarif.d.ts +3 -0
- package/dist/report/sarif.d.ts.map +1 -0
- package/dist/report/sarif.js +56 -0
- package/dist/report/sarif.js.map +1 -0
- package/dist/runtime/client.d.ts +31 -0
- package/dist/runtime/client.d.ts.map +1 -0
- package/dist/runtime/client.js +53 -0
- package/dist/runtime/client.js.map +1 -0
- package/dist/runtime/index.d.ts +3 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +239 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/pinning.d.ts +21 -0
- package/dist/runtime/pinning.d.ts.map +1 -0
- package/dist/runtime/pinning.js +74 -0
- package/dist/runtime/pinning.js.map +1 -0
- package/dist/runtime/schema-analyzer.d.ts +14 -0
- package/dist/runtime/schema-analyzer.d.ts.map +1 -0
- package/dist/runtime/schema-analyzer.js +204 -0
- package/dist/runtime/schema-analyzer.js.map +1 -0
- package/dist/runtime/tool-analyzer.d.ts +6 -0
- package/dist/runtime/tool-analyzer.d.ts.map +1 -0
- package/dist/runtime/tool-analyzer.js +92 -0
- package/dist/runtime/tool-analyzer.js.map +1 -0
- package/dist/static/analyzers/code-execution.d.ts +4 -0
- package/dist/static/analyzers/code-execution.d.ts.map +1 -0
- package/dist/static/analyzers/code-execution.js +72 -0
- package/dist/static/analyzers/code-execution.js.map +1 -0
- package/dist/static/analyzers/command-injection.d.ts +4 -0
- package/dist/static/analyzers/command-injection.d.ts.map +1 -0
- package/dist/static/analyzers/command-injection.js +62 -0
- package/dist/static/analyzers/command-injection.js.map +1 -0
- package/dist/static/analyzers/info-disclosure.d.ts +4 -0
- package/dist/static/analyzers/info-disclosure.d.ts.map +1 -0
- package/dist/static/analyzers/info-disclosure.js +65 -0
- package/dist/static/analyzers/info-disclosure.js.map +1 -0
- package/dist/static/analyzers/insecure-crypto.d.ts +4 -0
- package/dist/static/analyzers/insecure-crypto.d.ts.map +1 -0
- package/dist/static/analyzers/insecure-crypto.js +65 -0
- package/dist/static/analyzers/insecure-crypto.js.map +1 -0
- package/dist/static/analyzers/logging-audit.d.ts +4 -0
- package/dist/static/analyzers/logging-audit.d.ts.map +1 -0
- package/dist/static/analyzers/logging-audit.js +81 -0
- package/dist/static/analyzers/logging-audit.js.map +1 -0
- package/dist/static/analyzers/path-traversal.d.ts +4 -0
- package/dist/static/analyzers/path-traversal.d.ts.map +1 -0
- package/dist/static/analyzers/path-traversal.js +42 -0
- package/dist/static/analyzers/path-traversal.js.map +1 -0
- package/dist/static/analyzers/prototype-pollution.d.ts +4 -0
- package/dist/static/analyzers/prototype-pollution.d.ts.map +1 -0
- package/dist/static/analyzers/prototype-pollution.js +80 -0
- package/dist/static/analyzers/prototype-pollution.js.map +1 -0
- package/dist/static/analyzers/regex-dos.d.ts +4 -0
- package/dist/static/analyzers/regex-dos.d.ts.map +1 -0
- package/dist/static/analyzers/regex-dos.js +78 -0
- package/dist/static/analyzers/regex-dos.js.map +1 -0
- package/dist/static/analyzers/secret-hardcoded.d.ts +4 -0
- package/dist/static/analyzers/secret-hardcoded.d.ts.map +1 -0
- package/dist/static/analyzers/secret-hardcoded.js +70 -0
- package/dist/static/analyzers/secret-hardcoded.js.map +1 -0
- package/dist/static/analyzers/ssrf.d.ts +4 -0
- package/dist/static/analyzers/ssrf.d.ts.map +1 -0
- package/dist/static/analyzers/ssrf.js +39 -0
- package/dist/static/analyzers/ssrf.js.map +1 -0
- package/dist/static/analyzers/unsafe-regex.d.ts +4 -0
- package/dist/static/analyzers/unsafe-regex.d.ts.map +1 -0
- package/dist/static/analyzers/unsafe-regex.js +36 -0
- package/dist/static/analyzers/unsafe-regex.js.map +1 -0
- package/dist/static/ast-engine.d.ts +22 -0
- package/dist/static/ast-engine.d.ts.map +1 -0
- package/dist/static/ast-engine.js +155 -0
- package/dist/static/ast-engine.js.map +1 -0
- package/dist/static/index.d.ts +3 -0
- package/dist/static/index.d.ts.map +1 -0
- package/dist/static/index.js +114 -0
- package/dist/static/index.js.map +1 -0
- package/dist/static/taint-tracker.d.ts +15 -0
- package/dist/static/taint-tracker.d.ts.map +1 -0
- package/dist/static/taint-tracker.js +70 -0
- package/dist/static/taint-tracker.js.map +1 -0
- package/dist/types/findings.d.ts +60 -0
- package/dist/types/findings.d.ts.map +1 -0
- package/dist/types/findings.js +9 -0
- package/dist/types/findings.js.map +1 -0
- package/dist/types/index.d.ts +23 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/crypto.d.ts +4 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +12 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/fs-helpers.d.ts +7 -0
- package/dist/utils/fs-helpers.d.ts.map +1 -0
- package/dist/utils/fs-helpers.js +92 -0
- package/dist/utils/fs-helpers.js.map +1 -0
- package/dist/utils/levenshtein.d.ts +7 -0
- package/dist/utils/levenshtein.d.ts.map +1 -0
- package/dist/utils/levenshtein.js +89 -0
- package/dist/utils/levenshtein.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface DangerousSink {
|
|
2
|
+
name: string;
|
|
3
|
+
module: string;
|
|
4
|
+
severity: "critical" | "high" | "medium";
|
|
5
|
+
category: string;
|
|
6
|
+
description: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const COMMAND_INJECTION_SINKS: DangerousSink[];
|
|
9
|
+
export declare const CODE_EXECUTION_SINKS: DangerousSink[];
|
|
10
|
+
export declare const SSRF_SINKS: DangerousSink[];
|
|
11
|
+
export declare const PATH_TRAVERSAL_SINKS: DangerousSink[];
|
|
12
|
+
export declare const CRYPTO_WEAK_SINKS: DangerousSink[];
|
|
13
|
+
//# sourceMappingURL=dangerous-sinks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dangerous-sinks.d.ts","sourceRoot":"","sources":["../../src/data/dangerous-sinks.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,uBAAuB,EAAE,aAAa,EAQlD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,aAAa,EAO/C,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,aAAa,EAMrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,aAAa,EAc/C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,aAAa,EAI5C,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const COMMAND_INJECTION_SINKS = [
|
|
2
|
+
{ name: "exec", module: "child_process", severity: "critical", category: "command_injection", description: "Executes shell command with full shell interpolation" },
|
|
3
|
+
{ name: "execSync", module: "child_process", severity: "critical", category: "command_injection", description: "Synchronous shell execution" },
|
|
4
|
+
{ name: "spawn", module: "child_process", severity: "high", category: "command_injection", description: "Spawns process (dangerous with shell:true)" },
|
|
5
|
+
{ name: "spawnSync", module: "child_process", severity: "high", category: "command_injection", description: "Synchronous spawn (dangerous with shell:true)" },
|
|
6
|
+
{ name: "execFile", module: "child_process", severity: "medium", category: "command_injection", description: "Executes file (safer but still risky with user input)" },
|
|
7
|
+
{ name: "execFileSync", module: "child_process", severity: "medium", category: "command_injection", description: "Synchronous file execution" },
|
|
8
|
+
{ name: "fork", module: "child_process", severity: "high", category: "command_injection", description: "Forks new Node.js process" },
|
|
9
|
+
];
|
|
10
|
+
export const CODE_EXECUTION_SINKS = [
|
|
11
|
+
{ name: "eval", module: "global", severity: "critical", category: "code_execution", description: "Evaluates arbitrary JavaScript" },
|
|
12
|
+
{ name: "Function", module: "global", severity: "critical", category: "code_execution", description: "Creates function from string (eval equivalent)" },
|
|
13
|
+
{ name: "runInNewContext", module: "vm", severity: "critical", category: "code_execution", description: "Executes code in new V8 context" },
|
|
14
|
+
{ name: "runInThisContext", module: "vm", severity: "critical", category: "code_execution", description: "Executes code in current V8 context" },
|
|
15
|
+
{ name: "compileFunction", module: "vm", severity: "critical", category: "code_execution", description: "Compiles function from string" },
|
|
16
|
+
{ name: "Script", module: "vm", severity: "critical", category: "code_execution", description: "Creates compiled script from string" },
|
|
17
|
+
];
|
|
18
|
+
export const SSRF_SINKS = [
|
|
19
|
+
{ name: "fetch", module: "global", severity: "high", category: "ssrf", description: "HTTP fetch with user-controlled URL" },
|
|
20
|
+
{ name: "get", module: "axios", severity: "high", category: "ssrf", description: "Axios GET request" },
|
|
21
|
+
{ name: "post", module: "axios", severity: "high", category: "ssrf", description: "Axios POST request" },
|
|
22
|
+
{ name: "request", module: "http", severity: "high", category: "ssrf", description: "Node.js HTTP request" },
|
|
23
|
+
{ name: "request", module: "https", severity: "high", category: "ssrf", description: "Node.js HTTPS request" },
|
|
24
|
+
];
|
|
25
|
+
export const PATH_TRAVERSAL_SINKS = [
|
|
26
|
+
{ name: "readFile", module: "fs", severity: "high", category: "path_traversal", description: "Read file with user-controlled path" },
|
|
27
|
+
{ name: "readFileSync", module: "fs", severity: "high", category: "path_traversal", description: "Synchronous file read" },
|
|
28
|
+
{ name: "writeFile", module: "fs", severity: "critical", category: "path_traversal", description: "Write file with user-controlled path" },
|
|
29
|
+
{ name: "writeFileSync", module: "fs", severity: "critical", category: "path_traversal", description: "Synchronous file write" },
|
|
30
|
+
{ name: "readdir", module: "fs", severity: "medium", category: "path_traversal", description: "List directory with user-controlled path" },
|
|
31
|
+
{ name: "readdirSync", module: "fs", severity: "medium", category: "path_traversal", description: "Synchronous directory listing" },
|
|
32
|
+
{ name: "stat", module: "fs", severity: "medium", category: "path_traversal", description: "File stat with user-controlled path" },
|
|
33
|
+
{ name: "access", module: "fs", severity: "medium", category: "path_traversal", description: "File access check" },
|
|
34
|
+
{ name: "unlink", module: "fs", severity: "critical", category: "path_traversal", description: "Delete file with user-controlled path" },
|
|
35
|
+
{ name: "unlinkSync", module: "fs", severity: "critical", category: "path_traversal", description: "Synchronous file deletion" },
|
|
36
|
+
{ name: "mkdir", module: "fs", severity: "medium", category: "path_traversal", description: "Create directory with user-controlled path" },
|
|
37
|
+
{ name: "rmdir", module: "fs", severity: "high", category: "path_traversal", description: "Remove directory with user-controlled path" },
|
|
38
|
+
{ name: "rm", module: "fs", severity: "critical", category: "path_traversal", description: "Recursive file/directory removal" },
|
|
39
|
+
];
|
|
40
|
+
export const CRYPTO_WEAK_SINKS = [
|
|
41
|
+
{ name: "createHash('md5')", module: "crypto", severity: "medium", category: "weak_crypto", description: "MD5 hash (broken for security use)" },
|
|
42
|
+
{ name: "createHash('sha1')", module: "crypto", severity: "medium", category: "weak_crypto", description: "SHA-1 hash (deprecated for security use)" },
|
|
43
|
+
{ name: "Math.random()", module: "global", severity: "high", category: "weak_crypto", description: "Non-cryptographic PRNG used for security" },
|
|
44
|
+
];
|
|
45
|
+
//# sourceMappingURL=dangerous-sinks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dangerous-sinks.js","sourceRoot":"","sources":["../../src/data/dangerous-sinks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { OwaspMcpId } from "../types/findings.js";
|
|
2
|
+
export interface OwaspCategory {
|
|
3
|
+
id: OwaspMcpId;
|
|
4
|
+
title: string;
|
|
5
|
+
description: string;
|
|
6
|
+
remediation: string;
|
|
7
|
+
cwe: string[];
|
|
8
|
+
references: string[];
|
|
9
|
+
}
|
|
10
|
+
export declare const OWASP_MCP_TOP10: OwaspCategory[];
|
|
11
|
+
export declare function getOwaspCategory(id: OwaspMcpId): OwaspCategory;
|
|
12
|
+
//# sourceMappingURL=owasp-mcp-top10.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owasp-mcp-top10.d.ts","sourceRoot":"","sources":["../../src/data/owasp-mcp-top10.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,EA8G1C,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,UAAU,GAAG,aAAa,CAE9D"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
export const OWASP_MCP_TOP10 = [
|
|
2
|
+
{
|
|
3
|
+
id: "MCP01",
|
|
4
|
+
title: "Excessive Privilege & Token Mismanagement",
|
|
5
|
+
description: "MCP clients or servers operate with broader permissions than necessary. API keys, tokens, or credentials are stored insecurely, shared across unrelated services, or transmitted without adequate protection.",
|
|
6
|
+
remediation: "Apply least privilege. Store secrets in environment variables, not config files. Rotate tokens regularly. Never embed API keys in CLI arguments.",
|
|
7
|
+
cwe: ["CWE-269", "CWE-522"],
|
|
8
|
+
references: [
|
|
9
|
+
"https://owasp.org/www-project-mcp-top-10/",
|
|
10
|
+
"https://www.nsa.gov/Press-Room/News-Highlights/Article/Article/4132057/",
|
|
11
|
+
],
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
id: "MCP02",
|
|
15
|
+
title: "Tool & Scope Mismanagement",
|
|
16
|
+
description: "MCP servers expose too many tools, tools with overly broad capabilities, or accept arbitrary input types (any, unrestricted file paths, shell commands). Excessive tool count increases attack surface.",
|
|
17
|
+
remediation: "Minimize exposed tools. Use strict Zod schemas with allowlists. Limit parameter types. Avoid wildcard patterns in schemas.",
|
|
18
|
+
cwe: ["CWE-250", "CWE-732"],
|
|
19
|
+
references: ["https://owasp.org/www-project-mcp-top-10/"],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "MCP03",
|
|
23
|
+
title: "Tool Poisoning via Description Injection",
|
|
24
|
+
description: "Malicious or compromised MCP servers embed hidden instructions in tool descriptions that manipulate LLM behavior. Includes prompt injection, ANSI escape sequences, zero-width Unicode characters, and social engineering patterns.",
|
|
25
|
+
remediation: "Pin tool definitions and verify hashes. Review all tool descriptions manually. Strip control characters. Monitor for description changes.",
|
|
26
|
+
cwe: ["CWE-94", "CWE-116"],
|
|
27
|
+
references: [
|
|
28
|
+
"https://owasp.org/www-project-mcp-top-10/",
|
|
29
|
+
"https://invariantlabs.ai/blog/mcp-security-notification-tool-poisoning-attacks",
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: "MCP04",
|
|
34
|
+
title: "Supply Chain & Dependency Vulnerabilities",
|
|
35
|
+
description: "MCP servers depend on vulnerable packages, typosquatted dependencies, or packages with malicious install scripts. Unpinned versions allow silent updates.",
|
|
36
|
+
remediation: "Pin exact versions in lockfiles. Audit install scripts. Check for typosquatting. Monitor advisories. Use npm audit / OSV.",
|
|
37
|
+
cwe: ["CWE-1357", "CWE-829"],
|
|
38
|
+
references: ["https://owasp.org/www-project-mcp-top-10/"],
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: "MCP05",
|
|
42
|
+
title: "Command Injection & Code Execution",
|
|
43
|
+
description: "MCP tool handlers pass user-controlled input to dangerous sinks: child_process.exec, eval, new Function, vm.runInNewContext, fs operations with unsanitized paths, fetch with user-controlled URLs (SSRF).",
|
|
44
|
+
remediation: "Never pass user input to exec/eval. Use execFile with argument arrays. Validate and sanitize all paths against a base directory. Allowlist URLs.",
|
|
45
|
+
cwe: ["CWE-78", "CWE-94", "CWE-22", "CWE-918"],
|
|
46
|
+
references: ["https://owasp.org/www-project-mcp-top-10/"],
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: "MCP06",
|
|
50
|
+
title: "Context & Tool Shadowing",
|
|
51
|
+
description: "One MCP server's tool descriptions reference tools from other servers, enabling cross-origin manipulation. Rogue servers register tools with names that shadow legitimate tools (e.g. read_file, bash).",
|
|
52
|
+
remediation: "Namespace all tools. Monitor for tool name collisions across servers. Flag cross-origin references in descriptions.",
|
|
53
|
+
cwe: ["CWE-346"],
|
|
54
|
+
references: [
|
|
55
|
+
"https://owasp.org/www-project-mcp-top-10/",
|
|
56
|
+
"https://blog.trailofbits.com/2025/04/22/mcp-security-research/",
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: "MCP07",
|
|
61
|
+
title: "Insufficient Authentication & Transport Security",
|
|
62
|
+
description: "MCP servers accept unauthenticated connections, use HTTP instead of HTTPS for remote transport, or expose SSE/WebSocket endpoints without TLS.",
|
|
63
|
+
remediation: "Require authentication for all remote servers. Use HTTPS/WSS exclusively. Validate OAuth tokens. Bind to localhost for local servers.",
|
|
64
|
+
cwe: ["CWE-287", "CWE-319"],
|
|
65
|
+
references: ["https://owasp.org/www-project-mcp-top-10/"],
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: "MCP08",
|
|
69
|
+
title: "Insufficient Logging & Error Handling",
|
|
70
|
+
description: "Tool handlers lack error handling, swallow exceptions silently, expose stack traces in responses, or have no audit logging of tool invocations.",
|
|
71
|
+
remediation: "Wrap all tool handlers in try-catch. Log tool invocations with timestamps. Never expose err.stack or err.message to clients. Implement rate limiting.",
|
|
72
|
+
cwe: ["CWE-778", "CWE-209"],
|
|
73
|
+
references: ["https://owasp.org/www-project-mcp-top-10/"],
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
id: "MCP09",
|
|
77
|
+
title: "Shadow Servers & Unauthorized MCP Endpoints",
|
|
78
|
+
description: "Unknown or unverified MCP servers in configuration files. Servers using npx -y to auto-install unverified packages. Servers pointing to binaries in writable directories (/tmp).",
|
|
79
|
+
remediation: "Audit all configured servers. Verify npm package names. Avoid npx -y for unknown packages. Only use servers from trusted sources.",
|
|
80
|
+
cwe: ["CWE-829", "CWE-494"],
|
|
81
|
+
references: ["https://owasp.org/www-project-mcp-top-10/"],
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: "MCP10",
|
|
85
|
+
title: "Context Over-sharing & Data Exposure",
|
|
86
|
+
description: "MCP clients share excessive context with servers: all environment variables, sensitive file paths, broad resource access patterns. Servers expose resources with overly permissive URI patterns.",
|
|
87
|
+
remediation: "Explicitly list env vars per server. Restrict resource URI patterns. Minimize data shared with each server. Apply data minimization principles.",
|
|
88
|
+
cwe: ["CWE-200", "CWE-532"],
|
|
89
|
+
references: ["https://owasp.org/www-project-mcp-top-10/"],
|
|
90
|
+
},
|
|
91
|
+
];
|
|
92
|
+
export function getOwaspCategory(id) {
|
|
93
|
+
return OWASP_MCP_TOP10.find((c) => c.id === id);
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=owasp-mcp-top10.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owasp-mcp-top10.js","sourceRoot":"","sources":["../../src/data/owasp-mcp-top10.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,2CAA2C;QAClD,WAAW,EACT,+MAA+M;QACjN,WAAW,EACT,kJAAkJ;QACpJ,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;QAC3B,UAAU,EAAE;YACV,2CAA2C;YAC3C,yEAAyE;SAC1E;KACF;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,4BAA4B;QACnC,WAAW,EACT,yMAAyM;QAC3M,WAAW,EACT,4HAA4H;QAC9H,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;QAC3B,UAAU,EAAE,CAAC,2CAA2C,CAAC;KAC1D;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,0CAA0C;QACjD,WAAW,EACT,qOAAqO;QACvO,WAAW,EACT,2IAA2I;QAC7I,GAAG,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;QAC1B,UAAU,EAAE;YACV,2CAA2C;YAC3C,gFAAgF;SACjF;KACF;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,2CAA2C;QAClD,WAAW,EACT,2JAA2J;QAC7J,WAAW,EACT,2HAA2H;QAC7H,GAAG,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;QAC5B,UAAU,EAAE,CAAC,2CAA2C,CAAC;KAC1D;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,oCAAoC;QAC3C,WAAW,EACT,4MAA4M;QAC9M,WAAW,EACT,kJAAkJ;QACpJ,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC9C,UAAU,EAAE,CAAC,2CAA2C,CAAC;KAC1D;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,0BAA0B;QACjC,WAAW,EACT,yMAAyM;QAC3M,WAAW,EACT,qHAAqH;QACvH,GAAG,EAAE,CAAC,SAAS,CAAC;QAChB,UAAU,EAAE;YACV,2CAA2C;YAC3C,gEAAgE;SACjE;KACF;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,kDAAkD;QACzD,WAAW,EACT,gJAAgJ;QAClJ,WAAW,EACT,uIAAuI;QACzI,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;QAC3B,UAAU,EAAE,CAAC,2CAA2C,CAAC;KAC1D;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,uCAAuC;QAC9C,WAAW,EACT,iJAAiJ;QACnJ,WAAW,EACT,uJAAuJ;QACzJ,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;QAC3B,UAAU,EAAE,CAAC,2CAA2C,CAAC;KAC1D;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,6CAA6C;QACpD,WAAW,EACT,kLAAkL;QACpL,WAAW,EACT,mIAAmI;QACrI,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;QAC3B,UAAU,EAAE,CAAC,2CAA2C,CAAC;KAC1D;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,sCAAsC;QAC7C,WAAW,EACT,kMAAkM;QACpM,WAAW,EACT,iJAAiJ;QACnJ,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;QAC3B,UAAU,EAAE,CAAC,2CAA2C,CAAC;KAC1D;CACF,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,EAAc;IAC7C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAE,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface PoisoningPattern {
|
|
2
|
+
name: string;
|
|
3
|
+
pattern: RegExp;
|
|
4
|
+
severity: "critical" | "high" | "medium";
|
|
5
|
+
category: string;
|
|
6
|
+
description: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const POISONING_PATTERNS: PoisoningPattern[];
|
|
9
|
+
export declare const ANSI_PATTERNS: RegExp[];
|
|
10
|
+
export declare const UNICODE_STEGO_PATTERNS: {
|
|
11
|
+
name: string;
|
|
12
|
+
pattern: RegExp;
|
|
13
|
+
description: string;
|
|
14
|
+
}[];
|
|
15
|
+
//# sourceMappingURL=poisoning-patterns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poisoning-patterns.d.ts","sourceRoot":"","sources":["../../src/data/poisoning-patterns.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EAoHhD,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,MAAM,EAQjC,CAAC;AAGF,eAAO,MAAM,sBAAsB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAgB1F,CAAC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
export const POISONING_PATTERNS = [
|
|
2
|
+
// File read / credential harvesting
|
|
3
|
+
{
|
|
4
|
+
name: "File Read Instruction",
|
|
5
|
+
pattern: /(?:read|cat|open|access|get|fetch|load|include)\s+.*(?:\/etc\/|~\/\.ssh|\.env|credentials|\.aws|\.kube|id_rsa|known_hosts|\.gnupg)/i,
|
|
6
|
+
severity: "critical",
|
|
7
|
+
category: "credential_harvesting",
|
|
8
|
+
description: "Instructs LLM to read sensitive files",
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
name: "Home Directory Access",
|
|
12
|
+
pattern: /(?:read|access|open)\s+.*(?:home\s+directory|user\s+folder|~\/)/i,
|
|
13
|
+
severity: "high",
|
|
14
|
+
category: "credential_harvesting",
|
|
15
|
+
description: "Instructs LLM to access home directory contents",
|
|
16
|
+
},
|
|
17
|
+
// Data exfiltration
|
|
18
|
+
{
|
|
19
|
+
name: "Data Exfiltration",
|
|
20
|
+
pattern: /(?:send|post|upload|transmit|forward|exfiltrate)\s+.*(?:content|data|file|secret|token|key|credential|result)/i,
|
|
21
|
+
severity: "critical",
|
|
22
|
+
category: "exfiltration",
|
|
23
|
+
description: "Instructs LLM to transmit data externally",
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: "URL Parameter Injection",
|
|
27
|
+
pattern: /(?:include|append|add|insert|embed)\s+.*(?:parameter|query|url|request|header)/i,
|
|
28
|
+
severity: "high",
|
|
29
|
+
category: "exfiltration",
|
|
30
|
+
description: "Instructs LLM to inject data into outbound requests",
|
|
31
|
+
},
|
|
32
|
+
// Instruction override
|
|
33
|
+
{
|
|
34
|
+
name: "Instruction Override",
|
|
35
|
+
pattern: /ignore\s+(?:previous|above|all|prior|earlier)\s+(?:instructions|rules|guidelines|prompts)/i,
|
|
36
|
+
severity: "critical",
|
|
37
|
+
category: "instruction_override",
|
|
38
|
+
description: "Attempts to override previous LLM instructions",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: "Role Assumption",
|
|
42
|
+
pattern: /(?:you\s+are\s+now|act\s+as|pretend\s+to\s+be|switch\s+to|assume\s+the\s+role)/i,
|
|
43
|
+
severity: "high",
|
|
44
|
+
category: "instruction_override",
|
|
45
|
+
description: "Attempts to change LLM persona or role",
|
|
46
|
+
},
|
|
47
|
+
// System prompt extraction
|
|
48
|
+
{
|
|
49
|
+
name: "System Prompt Extraction",
|
|
50
|
+
pattern: /(?:system\s+prompt|repeat\s+.*instructions|what\s+.*instructions|show\s+.*prompt|reveal\s+.*rules)/i,
|
|
51
|
+
severity: "high",
|
|
52
|
+
category: "prompt_extraction",
|
|
53
|
+
description: "Attempts to extract system prompt or instructions",
|
|
54
|
+
},
|
|
55
|
+
// Social engineering
|
|
56
|
+
{
|
|
57
|
+
name: "Secrecy Instruction",
|
|
58
|
+
pattern: /(?:do\s+not\s+tell|don'?t\s+inform|keep\s+.*secret|hide\s+.*from|don'?t\s+mention|never\s+reveal)/i,
|
|
59
|
+
severity: "critical",
|
|
60
|
+
category: "social_engineering",
|
|
61
|
+
description: "Instructs LLM to hide actions from user",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: "Urgency Manipulation",
|
|
65
|
+
pattern: /(?:immediately|urgent|critical|must\s+do\s+now|without\s+delay|right\s+away|do\s+not\s+wait)/i,
|
|
66
|
+
severity: "medium",
|
|
67
|
+
category: "social_engineering",
|
|
68
|
+
description: "Uses urgency to bypass careful evaluation",
|
|
69
|
+
},
|
|
70
|
+
// Cross-origin tool manipulation
|
|
71
|
+
{
|
|
72
|
+
name: "Cross-Origin Tool Reference",
|
|
73
|
+
pattern: /(?:when\s+using|before\s+calling|after\s+calling|always\s+.*with\s+the)\s+.*(?:tool|function|command)/i,
|
|
74
|
+
severity: "high",
|
|
75
|
+
category: "cross_origin",
|
|
76
|
+
description: "References tools from other MCP servers",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: "Cross-Server Instruction",
|
|
80
|
+
pattern: /(?:tell\s+the\s+other|pass\s+to|forward\s+to|use\s+the\s+.*server|call\s+the\s+.*server)/i,
|
|
81
|
+
severity: "high",
|
|
82
|
+
category: "cross_origin",
|
|
83
|
+
description: "Instructs cross-server communication",
|
|
84
|
+
},
|
|
85
|
+
// Privilege escalation
|
|
86
|
+
{
|
|
87
|
+
name: "Privilege Escalation",
|
|
88
|
+
pattern: /(?:admin|root|sudo|elevated|unrestricted|full\s+access|bypass\s+.*check|skip\s+.*validation)/i,
|
|
89
|
+
severity: "high",
|
|
90
|
+
category: "privilege_escalation",
|
|
91
|
+
description: "Requests elevated privileges or validation bypass",
|
|
92
|
+
},
|
|
93
|
+
// Credential harvesting via parameters
|
|
94
|
+
{
|
|
95
|
+
name: "Parameter Credential Request",
|
|
96
|
+
pattern: /(?:password|api.?key|token|secret|credential|auth)\s+.*(?:parameter|field|input|argument)/i,
|
|
97
|
+
severity: "high",
|
|
98
|
+
category: "credential_harvesting",
|
|
99
|
+
description: "Tool schema requests credential-like parameters",
|
|
100
|
+
},
|
|
101
|
+
// Encoded payloads
|
|
102
|
+
{
|
|
103
|
+
name: "Base64 Encoded Instruction",
|
|
104
|
+
pattern: /(?:decode|base64|atob)\s*\(/i,
|
|
105
|
+
severity: "medium",
|
|
106
|
+
category: "obfuscation",
|
|
107
|
+
description: "Contains encoded content that may hide instructions",
|
|
108
|
+
},
|
|
109
|
+
// Markdown/HTML injection in descriptions
|
|
110
|
+
{
|
|
111
|
+
name: "Markdown Image Exfiltration",
|
|
112
|
+
pattern: /!\[.*?\]\(https?:\/\/.*?\)/,
|
|
113
|
+
severity: "high",
|
|
114
|
+
category: "exfiltration",
|
|
115
|
+
description: "Markdown image tag that could exfiltrate data via URL parameters",
|
|
116
|
+
},
|
|
117
|
+
];
|
|
118
|
+
// ANSI escape sequence patterns
|
|
119
|
+
export const ANSI_PATTERNS = [
|
|
120
|
+
/\x1b\[/, // CSI (Control Sequence Introducer)
|
|
121
|
+
/\x1b\[/, // Octal CSI (using hex equivalent)
|
|
122
|
+
/\\u001b\[/, // Unicode CSI (literal string)
|
|
123
|
+
/\\x1b\[/, // Hex CSI (literal string)
|
|
124
|
+
/\x1b\]/, // OSC (Operating System Command)
|
|
125
|
+
/\x1b[PX^_]/, // DCS, SOS, PM, APC
|
|
126
|
+
/[\x00-\x08\x0e-\x1f]/, // C0 control codes (except tab, newline, carriage return)
|
|
127
|
+
];
|
|
128
|
+
// Unicode steganography patterns
|
|
129
|
+
export const UNICODE_STEGO_PATTERNS = [
|
|
130
|
+
{ name: "Zero-Width Space", pattern: /\u200B/, description: "U+200B ZERO WIDTH SPACE" },
|
|
131
|
+
{ name: "Zero-Width Non-Joiner", pattern: /\u200C/, description: "U+200C ZERO WIDTH NON-JOINER" },
|
|
132
|
+
{ name: "Zero-Width Joiner", pattern: /\u200D/, description: "U+200D ZERO WIDTH JOINER" },
|
|
133
|
+
{ name: "Word Joiner", pattern: /\u2060/, description: "U+2060 WORD JOINER" },
|
|
134
|
+
{ name: "Zero-Width No-Break Space", pattern: /\uFEFF/, description: "U+FEFF BOM / ZERO WIDTH NO-BREAK SPACE" },
|
|
135
|
+
{ name: "LTR Mark", pattern: /\u200E/, description: "U+200E LEFT-TO-RIGHT MARK" },
|
|
136
|
+
{ name: "RTL Mark", pattern: /\u200F/, description: "U+200F RIGHT-TO-LEFT MARK" },
|
|
137
|
+
{ name: "LTR Embedding", pattern: /\u202A/, description: "U+202A LEFT-TO-RIGHT EMBEDDING" },
|
|
138
|
+
{ name: "RTL Embedding", pattern: /\u202B/, description: "U+202B RIGHT-TO-LEFT EMBEDDING" },
|
|
139
|
+
{ name: "LTR Override", pattern: /\u202D/, description: "U+202D LEFT-TO-RIGHT OVERRIDE" },
|
|
140
|
+
{ name: "RTL Override", pattern: /\u202E/, description: "U+202E RIGHT-TO-LEFT OVERRIDE" },
|
|
141
|
+
{ name: "Invisible Separator", pattern: /\u2063/, description: "U+2063 INVISIBLE SEPARATOR" },
|
|
142
|
+
{ name: "Invisible Plus", pattern: /\u2064/, description: "U+2064 INVISIBLE PLUS" },
|
|
143
|
+
{ name: "Soft Hyphen", pattern: /\u00AD/, description: "U+00AD SOFT HYPHEN" },
|
|
144
|
+
{ name: "Mongolian Vowel Separator", pattern: /\u180E/, description: "U+180E MONGOLIAN VOWEL SEPARATOR" },
|
|
145
|
+
];
|
|
146
|
+
//# sourceMappingURL=poisoning-patterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poisoning-patterns.js","sourceRoot":"","sources":["../../src/data/poisoning-patterns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popular-packages.d.ts","sourceRoot":"","sources":["../../src/data/popular-packages.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,EAAE,MAAM,EAmEpC,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// Top npm package names for typosquatting detection
|
|
2
|
+
// Source: npm download statistics (abridged)
|
|
3
|
+
export const POPULAR_PACKAGES = [
|
|
4
|
+
// Core frameworks & runtimes
|
|
5
|
+
"express", "react", "vue", "angular", "svelte", "next", "nuxt", "gatsby",
|
|
6
|
+
"nestjs", "fastify", "koa", "hapi", "restify",
|
|
7
|
+
// Build & bundling
|
|
8
|
+
"webpack", "vite", "esbuild", "rollup", "parcel", "turbo", "tsup",
|
|
9
|
+
"babel-core", "typescript", "ts-node", "tsx",
|
|
10
|
+
// Testing
|
|
11
|
+
"jest", "mocha", "chai", "vitest", "cypress", "playwright", "puppeteer",
|
|
12
|
+
"supertest", "nock", "sinon", "nyc", "istanbul",
|
|
13
|
+
// Utilities
|
|
14
|
+
"lodash", "underscore", "ramda", "rxjs", "immer", "date-fns", "moment",
|
|
15
|
+
"dayjs", "uuid", "nanoid", "ms", "debug", "chalk", "ora", "inquirer",
|
|
16
|
+
"commander", "yargs", "minimist", "dotenv", "cross-env", "concurrently",
|
|
17
|
+
// HTTP & networking
|
|
18
|
+
"axios", "got", "node-fetch", "undici", "superagent", "request",
|
|
19
|
+
"ws", "socket.io", "socket.io-client",
|
|
20
|
+
// Database & ORM
|
|
21
|
+
"mongoose", "sequelize", "typeorm", "prisma", "knex", "pg", "mysql2",
|
|
22
|
+
"redis", "ioredis", "mongodb", "sqlite3", "better-sqlite3", "drizzle-orm",
|
|
23
|
+
// Auth & security
|
|
24
|
+
"jsonwebtoken", "bcrypt", "bcryptjs", "passport", "helmet", "cors",
|
|
25
|
+
"csurf", "express-rate-limit", "express-session", "cookie-parser",
|
|
26
|
+
// Validation & schema
|
|
27
|
+
"zod", "joi", "yup", "ajv", "class-validator", "superstruct",
|
|
28
|
+
// File & stream
|
|
29
|
+
"fs-extra", "glob", "globby", "chokidar", "multer", "formidable",
|
|
30
|
+
"archiver", "unzipper", "tar", "sharp", "jimp",
|
|
31
|
+
// Logging
|
|
32
|
+
"winston", "pino", "bunyan", "morgan", "log4js",
|
|
33
|
+
// Cloud & infra
|
|
34
|
+
"aws-sdk", "@aws-sdk/client-s3", "firebase", "firebase-admin",
|
|
35
|
+
"@google-cloud/storage", "@azure/storage-blob",
|
|
36
|
+
// React ecosystem
|
|
37
|
+
"react-dom", "react-router", "react-router-dom", "react-query",
|
|
38
|
+
"@tanstack/react-query", "zustand", "jotai", "recoil", "redux",
|
|
39
|
+
"react-redux", "@reduxjs/toolkit", "swr", "formik", "react-hook-form",
|
|
40
|
+
// Vue ecosystem
|
|
41
|
+
"vuex", "pinia", "vue-router", "@vueuse/core",
|
|
42
|
+
// CSS & UI
|
|
43
|
+
"tailwindcss", "postcss", "autoprefixer", "sass", "less", "styled-components",
|
|
44
|
+
"@emotion/react", "@emotion/styled", "@mui/material", "@chakra-ui/react",
|
|
45
|
+
"bootstrap", "antd",
|
|
46
|
+
// Linting & formatting
|
|
47
|
+
"eslint", "prettier", "stylelint", "lint-staged", "husky",
|
|
48
|
+
// MCP ecosystem
|
|
49
|
+
"@modelcontextprotocol/sdk", "mcp", "@anthropic-ai/sdk",
|
|
50
|
+
// AI & ML
|
|
51
|
+
"openai", "@langchain/core", "langchain", "llamaindex",
|
|
52
|
+
// Misc popular
|
|
53
|
+
"semver", "mime-types", "content-type", "accepts", "negotiator",
|
|
54
|
+
"qs", "query-string", "url-parse", "path-to-regexp", "minimatch",
|
|
55
|
+
"micromatch", "picomatch", "ansi-regex", "strip-ansi", "wrap-ansi",
|
|
56
|
+
"string-width", "cli-table3", "table", "boxen",
|
|
57
|
+
"execa", "shelljs", "cross-spawn", "npm-run-all",
|
|
58
|
+
"lru-cache", "node-cache", "keyv", "flat-cache",
|
|
59
|
+
"cheerio", "jsdom", "htmlparser2", "css-select",
|
|
60
|
+
"marked", "markdown-it", "remark", "rehype",
|
|
61
|
+
"nodemailer", "handlebars", "ejs", "pug", "nunjucks",
|
|
62
|
+
"cron", "node-cron", "bull", "bullmq", "agenda",
|
|
63
|
+
"p-limit", "p-queue", "p-map", "p-retry", "async",
|
|
64
|
+
"signal-exit", "on-exit", "exit-hook",
|
|
65
|
+
"body-parser", "compression", "serve-static", "connect",
|
|
66
|
+
"http-proxy", "http-proxy-middleware", "express-http-proxy",
|
|
67
|
+
"graphql", "apollo-server", "@apollo/client",
|
|
68
|
+
"three", "d3", "chart.js", "echarts",
|
|
69
|
+
"electron", "tauri",
|
|
70
|
+
];
|
|
71
|
+
//# sourceMappingURL=popular-packages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popular-packages.js","sourceRoot":"","sources":["../../src/data/popular-packages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-patterns.d.ts","sourceRoot":"","sources":["../../src/data/secret-patterns.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,EA+H1C,CAAC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
export const SECRET_PATTERNS = [
|
|
2
|
+
{
|
|
3
|
+
name: "AWS Access Key",
|
|
4
|
+
pattern: /(AKIA|AGPA|AIDA|AROA)[A-Z0-9]{16}/,
|
|
5
|
+
severity: "critical",
|
|
6
|
+
description: "AWS IAM access key ID",
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
name: "AWS Secret Key",
|
|
10
|
+
pattern: /(?:aws_secret_access_key|aws_secret)\s*[=:]\s*['"]?[A-Za-z0-9/+=]{40}['"]?/i,
|
|
11
|
+
severity: "critical",
|
|
12
|
+
description: "AWS secret access key",
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: "GitHub Token (ghp/ghs)",
|
|
16
|
+
pattern: /gh[ps]_[A-Za-z0-9_]{36,}/,
|
|
17
|
+
severity: "critical",
|
|
18
|
+
description: "GitHub personal access or server token",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: "GitHub OAuth Token",
|
|
22
|
+
pattern: /gho_[A-Za-z0-9_]{36,}/,
|
|
23
|
+
severity: "high",
|
|
24
|
+
description: "GitHub OAuth access token",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: "Slack Token",
|
|
28
|
+
pattern: /xox[bporas]-[0-9]{10,13}-[0-9a-zA-Z]{10,48}/,
|
|
29
|
+
severity: "critical",
|
|
30
|
+
description: "Slack bot, user, or app token",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: "Stripe Live Key",
|
|
34
|
+
pattern: /sk_live_[0-9a-zA-Z]{24,99}/,
|
|
35
|
+
severity: "critical",
|
|
36
|
+
description: "Stripe live secret key",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: "Stripe Publishable Key",
|
|
40
|
+
pattern: /pk_live_[0-9a-zA-Z]{24,99}/,
|
|
41
|
+
severity: "medium",
|
|
42
|
+
description: "Stripe publishable key (lower risk but still sensitive)",
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: "Google API Key",
|
|
46
|
+
pattern: /AIza[0-9A-Za-z_-]{35}/,
|
|
47
|
+
severity: "high",
|
|
48
|
+
description: "Google API key",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: "SendGrid API Key",
|
|
52
|
+
pattern: /SG\.[0-9A-Za-z_-]{22}\.[0-9A-Za-z_-]{43}/,
|
|
53
|
+
severity: "critical",
|
|
54
|
+
description: "SendGrid API key",
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "Twilio API Key",
|
|
58
|
+
pattern: /SK[a-f0-9]{32}/,
|
|
59
|
+
severity: "high",
|
|
60
|
+
description: "Twilio API key SID",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: "Private Key Header",
|
|
64
|
+
pattern: /-----BEGIN\s+(RSA|DSA|EC|PGP|OPENSSH)\s+PRIVATE\s+KEY-----/,
|
|
65
|
+
severity: "critical",
|
|
66
|
+
description: "Private key material",
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "JWT Token",
|
|
70
|
+
pattern: /eyJ[A-Za-z0-9_-]{10,}\.eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}/,
|
|
71
|
+
severity: "medium",
|
|
72
|
+
description: "JSON Web Token (may contain sensitive claims)",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: "NPM Token",
|
|
76
|
+
pattern: /npm_[A-Za-z0-9]{36}/,
|
|
77
|
+
severity: "critical",
|
|
78
|
+
description: "npm publish token",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: "Anthropic API Key",
|
|
82
|
+
pattern: /sk-ant-[A-Za-z0-9_-]{40,}/,
|
|
83
|
+
severity: "critical",
|
|
84
|
+
description: "Anthropic Claude API key",
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: "OpenAI API Key",
|
|
88
|
+
pattern: /sk-[A-Za-z0-9]{48,}/,
|
|
89
|
+
severity: "critical",
|
|
90
|
+
description: "OpenAI API key",
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: "Database URL",
|
|
94
|
+
pattern: /(?:postgres|mysql|mongodb|redis):\/\/[^:]+:[^@]+@/i,
|
|
95
|
+
severity: "critical",
|
|
96
|
+
description: "Database connection string with embedded credentials",
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: "Generic Password Assignment",
|
|
100
|
+
pattern: /(?:password|passwd|pwd)\s*[=:]\s*['"][^'"]{8,}['"]/i,
|
|
101
|
+
severity: "high",
|
|
102
|
+
description: "Hardcoded password in variable assignment",
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: "Generic API Key Assignment",
|
|
106
|
+
pattern: /(?:api[_-]?key|apikey|api[_-]?secret)\s*[=:]\s*['"][A-Za-z0-9_\-]{16,}['"]/i,
|
|
107
|
+
severity: "high",
|
|
108
|
+
description: "Hardcoded API key in variable assignment",
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
name: "Mailgun API Key",
|
|
112
|
+
pattern: /key-[0-9a-zA-Z]{32}/,
|
|
113
|
+
severity: "high",
|
|
114
|
+
description: "Mailgun API key",
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: "Heroku API Key",
|
|
118
|
+
pattern: /[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}/,
|
|
119
|
+
severity: "medium",
|
|
120
|
+
description: "Possible Heroku API key or UUID with secrets context",
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: "Generic Token Assignment",
|
|
124
|
+
pattern: /(?:token|secret|credential)\s*[=:]\s*['"][A-Za-z0-9_\-.]{20,}['"]/i,
|
|
125
|
+
severity: "medium",
|
|
126
|
+
description: "Hardcoded token or secret in variable assignment",
|
|
127
|
+
},
|
|
128
|
+
];
|
|
129
|
+
//# sourceMappingURL=secret-patterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-patterns.js","sourceRoot":"","sources":["../../src/data/secret-patterns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/deps/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAqVjD,eAAO,MAAM,SAAS,EAAE,OAAO,EAQ9B,CAAC"}
|