@guardbee/mcp-secret-scanner 0.2.2 → 0.2.4
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/dist/__tests__/scanner.test.js +85 -9
- package/dist/__tests__/scanner.test.js.map +1 -1
- package/dist/patterns.d.ts +1 -0
- package/dist/patterns.d.ts.map +1 -1
- package/dist/patterns.js +32 -10
- package/dist/patterns.js.map +1 -1
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +40 -0
- package/dist/scanner.js.map +1 -1
- package/package.json +11 -10
|
@@ -2,31 +2,38 @@ import { describe, it, expect } from "vitest";
|
|
|
2
2
|
import { scanText } from "../scanner.js";
|
|
3
3
|
describe("scanText", () => {
|
|
4
4
|
it("detects AWS access key", () => {
|
|
5
|
-
const findings = scanText("export AWS_ACCESS_KEY_ID=
|
|
5
|
+
const findings = scanText("export AWS_ACCESS_KEY_ID=AKIACWZ3CLGY2QN8Y13Y");
|
|
6
6
|
expect(findings.some((f) => f.patternId === "aws_access_key")).toBe(true);
|
|
7
7
|
});
|
|
8
8
|
it("detects GitHub PAT", () => {
|
|
9
|
-
const findings = scanText("token:
|
|
9
|
+
const findings = scanText("token: ghp_NU7ehiHZlgqy6Zmj62PbR47GRUbn3k8mXjVG");
|
|
10
10
|
expect(findings.some((f) => f.patternId === "github_pat")).toBe(true);
|
|
11
11
|
});
|
|
12
|
-
it("detects Stripe secret key", () => {
|
|
12
|
+
it("detects Stripe secret key (live)", () => {
|
|
13
13
|
// split to avoid GitHub push protection on test fixtures
|
|
14
14
|
const key = ["sk", "_live_", "abc123xyz456def789ghi012"].join("");
|
|
15
15
|
const findings = scanText(`const stripe = require("stripe")("${key}")`);
|
|
16
16
|
expect(findings.some((f) => f.patternId === "stripe_secret")).toBe(true);
|
|
17
17
|
});
|
|
18
|
+
it("reports a Stripe test-mode secret key at low severity, not critical", () => {
|
|
19
|
+
const key = ["sk", "_test_", "abc123xyz456def789ghi012"].join("");
|
|
20
|
+
const findings = scanText(`const stripe = require("stripe")("${key}")`);
|
|
21
|
+
const f = findings.find((f) => f.patternId === "stripe_secret_test");
|
|
22
|
+
expect(f).toBeDefined();
|
|
23
|
+
expect(f?.severity).toBe("low");
|
|
24
|
+
});
|
|
18
25
|
it("detects OpenAI API key", () => {
|
|
19
|
-
const key = ["sk-
|
|
26
|
+
const key = ["sk-cS7QIi659ldIQZln2708", "T3BlbkFJ", "ME6yoxsAVGaNZqc94BcX"].join("");
|
|
20
27
|
const findings = scanText(`OPENAI_API_KEY=${key}`);
|
|
21
28
|
expect(findings.some((f) => f.patternId === "openai_key")).toBe(true);
|
|
22
29
|
});
|
|
23
30
|
it("detects Anthropic API key", () => {
|
|
24
|
-
const key = ["sk-ant-", "api03-
|
|
31
|
+
const key = ["sk-ant-", "api03-ENHZpNDHj9YpIaLQXkAGoDZ4eeGsZMvzUGta1WCy"].join("");
|
|
25
32
|
const findings = scanText(`key = '${key}'`);
|
|
26
33
|
expect(findings.some((f) => f.patternId === "anthropic_key")).toBe(true);
|
|
27
34
|
});
|
|
28
35
|
it("detects Slack token", () => {
|
|
29
|
-
const token = ["xoxb-", "
|
|
36
|
+
const token = ["xoxb-", "081025037527-261309205006-qp2pDMV92ANEpo1FizPPLMMWjb"].join("");
|
|
30
37
|
const findings = scanText(`SLACK_TOKEN=${token}`);
|
|
31
38
|
expect(findings.some((f) => f.patternId === "slack_token")).toBe(true);
|
|
32
39
|
});
|
|
@@ -60,13 +67,13 @@ describe("scanText", () => {
|
|
|
60
67
|
expect(findings.filter((f) => f.patternId === "generic_secret_assignment")).toHaveLength(0);
|
|
61
68
|
});
|
|
62
69
|
it("redacts the match value", () => {
|
|
63
|
-
const findings = scanText("token:
|
|
70
|
+
const findings = scanText("token: ghp_NU7ehiHZlgqy6Zmj62PbR47GRUbn3k8mXjVG");
|
|
64
71
|
const f = findings.find((f) => f.patternId === "github_pat");
|
|
65
|
-
expect(f?.match).not.toContain("
|
|
72
|
+
expect(f?.match).not.toContain("NU7ehiHZlgqy6Zmj62PbR47GRUbn3k8mXjVG");
|
|
66
73
|
expect(f?.match).toContain("*");
|
|
67
74
|
});
|
|
68
75
|
it("returns correct line number", () => {
|
|
69
|
-
const text = "line1\nline2\ntoken:
|
|
76
|
+
const text = "line1\nline2\ntoken: ghp_NU7ehiHZlgqy6Zmj62PbR47GRUbn3k8mXjVG\nline4";
|
|
70
77
|
const findings = scanText(text);
|
|
71
78
|
const f = findings.find((f) => f.patternId === "github_pat");
|
|
72
79
|
expect(f?.line).toBe(3);
|
|
@@ -75,4 +82,73 @@ describe("scanText", () => {
|
|
|
75
82
|
expect(scanText("const x = 1; console.log('hello world');")).toHaveLength(0);
|
|
76
83
|
});
|
|
77
84
|
});
|
|
85
|
+
describe("scanText — suppression annotations", () => {
|
|
86
|
+
it("suppresses a finding annotated with pragma: allowlist secret", () => {
|
|
87
|
+
const findings = scanText("token: ghp_NU7ehiHZlgqy6Zmj62PbR47GRUbn3k8mXjVG # pragma: allowlist secret");
|
|
88
|
+
expect(findings.some((f) => f.patternId === "github_pat")).toBe(false);
|
|
89
|
+
});
|
|
90
|
+
it("suppresses a finding annotated with gitleaks:allow", () => {
|
|
91
|
+
const findings = scanText("token: ghp_NU7ehiHZlgqy6Zmj62PbR47GRUbn3k8mXjVG // gitleaks:allow");
|
|
92
|
+
expect(findings.some((f) => f.patternId === "github_pat")).toBe(false);
|
|
93
|
+
});
|
|
94
|
+
it("suppresses a finding annotated with nosec", () => {
|
|
95
|
+
const findings = scanText("token: ghp_NU7ehiHZlgqy6Zmj62PbR47GRUbn3k8mXjVG # nosec");
|
|
96
|
+
expect(findings.some((f) => f.patternId === "github_pat")).toBe(false);
|
|
97
|
+
});
|
|
98
|
+
it("still reports an unannotated secret on an unrelated nearby line", () => {
|
|
99
|
+
const text = "// pragma: allowlist secret\nconst other = 1;\ntoken: ghp_NU7ehiHZlgqy6Zmj62PbR47GRUbn3k8mXjVG";
|
|
100
|
+
const findings = scanText(text);
|
|
101
|
+
expect(findings.some((f) => f.patternId === "github_pat")).toBe(true);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
describe("scanText — doc/placeholder value noise reduction", () => {
|
|
105
|
+
it("does not flag AWS's own published example access key", () => {
|
|
106
|
+
const findings = scanText("export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE");
|
|
107
|
+
expect(findings.some((f) => f.patternId === "aws_access_key")).toBe(false);
|
|
108
|
+
});
|
|
109
|
+
it("does not flag a GitHub PAT built from a sequential filler value", () => {
|
|
110
|
+
const findings = scanText("token: ghp_abcdefghijklmnopqrstuvwxyz0123456789");
|
|
111
|
+
expect(findings.some((f) => f.patternId === "github_pat")).toBe(false);
|
|
112
|
+
});
|
|
113
|
+
it("does not flag a key made of a single repeated character", () => {
|
|
114
|
+
const findings = scanText(`token: ghp_${"x".repeat(36)}`);
|
|
115
|
+
expect(findings.some((f) => f.patternId === "github_pat")).toBe(false);
|
|
116
|
+
});
|
|
117
|
+
it("does not flag a value containing the word PLACEHOLDER", () => {
|
|
118
|
+
const findings = scanText("token: ghp_PLACEHOLDERtokenr1q0z9y8x7w6v5u4t3s2");
|
|
119
|
+
expect(findings.some((f) => f.patternId === "github_pat")).toBe(false);
|
|
120
|
+
});
|
|
121
|
+
it("does not flag a value containing the word CHANGEME", () => {
|
|
122
|
+
const findings = scanText("token: ghp_CHANGEMEbeforecommittingx7w6v5u4t3s2");
|
|
123
|
+
expect(findings.some((f) => f.patternId === "github_pat")).toBe(false);
|
|
124
|
+
});
|
|
125
|
+
it("still flags a realistic-looking, non-sequential secret", () => {
|
|
126
|
+
const findings = scanText("token: ghp_NU7ehiHZlgqy6Zmj62PbR47GRUbn3k8mXjVG");
|
|
127
|
+
expect(findings.some((f) => f.patternId === "github_pat")).toBe(true);
|
|
128
|
+
});
|
|
129
|
+
it("still flags a real-looking credential in a connection string whose hostname happens to say example.com", () => {
|
|
130
|
+
const findings = scanText("DATABASE_URL=postgresql://admin:s3cr3tpass@prod.db.example.com:5432/mydb");
|
|
131
|
+
expect(findings.some((f) => f.patternId === "db_url_postgres")).toBe(true);
|
|
132
|
+
});
|
|
133
|
+
it("does not flag a short test-fixture bearer value like 'Bearer alpha'", () => {
|
|
134
|
+
const findings = scanText('.header("authorization", "Bearer alpha")');
|
|
135
|
+
expect(findings.some((f) => f.patternId === "bearer_token")).toBe(false);
|
|
136
|
+
});
|
|
137
|
+
it("does not flag 'Bearer test-token'", () => {
|
|
138
|
+
const findings = scanText('.header("authorization", "Bearer test-token")');
|
|
139
|
+
expect(findings.some((f) => f.patternId === "bearer_token")).toBe(false);
|
|
140
|
+
});
|
|
141
|
+
it("still flags a realistic, long bearer token", () => {
|
|
142
|
+
const findings = scanText('.header("authorization", "Bearer ya29.a0AfH6SMBxK9pQ2rZ7wJmN4tL8vC1oR6uD3eG5")');
|
|
143
|
+
expect(findings.some((f) => f.patternId === "bearer_token")).toBe(true);
|
|
144
|
+
});
|
|
145
|
+
it("does not flag a hyphenated 'change-me' placeholder password", () => {
|
|
146
|
+
const findings = scanText('password: "change-me-redis" # CHANGE ME in production!');
|
|
147
|
+
expect(findings.some((f) => f.patternId === "generic_secret_assignment")).toBe(false);
|
|
148
|
+
});
|
|
149
|
+
it("does not flag a lowercase descriptive bracket placeholder", () => {
|
|
150
|
+
const findings = scanText('BASIC_AUTH_PASSWORD: "<admin login password>"');
|
|
151
|
+
expect(findings.some((f) => f.patternId === "generic_secret_assignment")).toBe(false);
|
|
152
|
+
});
|
|
153
|
+
});
|
|
78
154
|
//# sourceMappingURL=scanner.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.test.js","sourceRoot":"","sources":["../../src/__tests__/scanner.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,+CAA+C,CAAC,CAAC;QAC3E,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,QAAQ,GAAG,QAAQ,CAAC,iDAAiD,CAAC,CAAC;QAC7E,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"scanner.test.js","sourceRoot":"","sources":["../../src/__tests__/scanner.test.ts"],"names":[],"mappings":"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"}
|
package/dist/patterns.d.ts
CHANGED
package/dist/patterns.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../src/patterns.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../src/patterns.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAMrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,EAmR1C,CAAC"}
|
package/dist/patterns.js
CHANGED
|
@@ -59,10 +59,19 @@ export const SECRET_PATTERNS = [
|
|
|
59
59
|
// ── Payment ────────────────────────────────────────────────────────────────
|
|
60
60
|
{
|
|
61
61
|
id: "stripe_secret",
|
|
62
|
-
name: "Stripe Secret Key",
|
|
63
|
-
pattern: /
|
|
62
|
+
name: "Stripe Secret Key (live)",
|
|
63
|
+
pattern: /sk_live_[0-9A-Za-z]{24,}/g,
|
|
64
64
|
severity: "critical",
|
|
65
65
|
},
|
|
66
|
+
{
|
|
67
|
+
id: "stripe_secret_test",
|
|
68
|
+
// Stripe'ın kendi dokümantasyonu test-mode key'lerini kod örneklerine
|
|
69
|
+
// gömmenin güvenli olduğunu belirtiyor — gerçek parasal etkisi yok,
|
|
70
|
+
// sadece sandbox hesabına erişim. Yine de görünürlük için raporlanıyor.
|
|
71
|
+
name: "Stripe Secret Key (test mode)",
|
|
72
|
+
pattern: /sk_test_[0-9A-Za-z]{24,}/g,
|
|
73
|
+
severity: "low",
|
|
74
|
+
},
|
|
66
75
|
{
|
|
67
76
|
id: "stripe_publishable",
|
|
68
77
|
name: "Stripe Publishable Key",
|
|
@@ -71,10 +80,16 @@ export const SECRET_PATTERNS = [
|
|
|
71
80
|
},
|
|
72
81
|
{
|
|
73
82
|
id: "stripe_restricted",
|
|
74
|
-
name: "Stripe Restricted Key",
|
|
75
|
-
pattern: /
|
|
83
|
+
name: "Stripe Restricted Key (live)",
|
|
84
|
+
pattern: /rk_live_[0-9A-Za-z]{24,}/g,
|
|
76
85
|
severity: "critical",
|
|
77
86
|
},
|
|
87
|
+
{
|
|
88
|
+
id: "stripe_restricted_test",
|
|
89
|
+
name: "Stripe Restricted Key (test mode)",
|
|
90
|
+
pattern: /rk_test_[0-9A-Za-z]{24,}/g,
|
|
91
|
+
severity: "low",
|
|
92
|
+
},
|
|
78
93
|
// ── AI / ML ────────────────────────────────────────────────────────────────
|
|
79
94
|
{
|
|
80
95
|
id: "openai_key",
|
|
@@ -137,28 +152,32 @@ export const SECRET_PATTERNS = [
|
|
|
137
152
|
name: "PostgreSQL Connection String with credentials",
|
|
138
153
|
pattern: /postgres(?:ql)?:\/\/[^:]+:[^@\s]+@[^\s"']+/gi,
|
|
139
154
|
severity: "critical",
|
|
140
|
-
allowlist: [/localhost/, /127\.0\.0\.1/, /\$\{/, /<[
|
|
155
|
+
allowlist: [/localhost/, /127\.0\.0\.1/, /\$\{/, /<[^<>]{1,80}>/],
|
|
156
|
+
skipPlaceholderCheck: true,
|
|
141
157
|
},
|
|
142
158
|
{
|
|
143
159
|
id: "db_url_mysql",
|
|
144
160
|
name: "MySQL Connection String with credentials",
|
|
145
161
|
pattern: /mysql:\/\/[^:]+:[^@\s]+@[^\s"']+/gi,
|
|
146
162
|
severity: "critical",
|
|
147
|
-
allowlist: [/localhost/, /127\.0\.0\.1/, /\$\{/, /<[
|
|
163
|
+
allowlist: [/localhost/, /127\.0\.0\.1/, /\$\{/, /<[^<>]{1,80}>/],
|
|
164
|
+
skipPlaceholderCheck: true,
|
|
148
165
|
},
|
|
149
166
|
{
|
|
150
167
|
id: "db_url_mongodb",
|
|
151
168
|
name: "MongoDB Connection String with credentials",
|
|
152
169
|
pattern: /mongodb(?:\+srv)?:\/\/[^:]+:[^@\s]+@[^\s"']+/gi,
|
|
153
170
|
severity: "critical",
|
|
154
|
-
allowlist: [/localhost/, /127\.0\.0\.1/, /\$\{/, /<[
|
|
171
|
+
allowlist: [/localhost/, /127\.0\.0\.1/, /\$\{/, /<[^<>]{1,80}>/],
|
|
172
|
+
skipPlaceholderCheck: true,
|
|
155
173
|
},
|
|
156
174
|
{
|
|
157
175
|
id: "db_url_redis",
|
|
158
176
|
name: "Redis Connection String with credentials",
|
|
159
177
|
pattern: /redis:\/\/[^:]+:[^@\s]+@[^\s"']+/gi,
|
|
160
178
|
severity: "high",
|
|
161
|
-
allowlist: [/localhost/, /127\.0\.0\.1/, /\$\{
|
|
179
|
+
allowlist: [/localhost/, /127\.0\.0\.1/, /\$\{/, /<[^<>]{1,80}>/],
|
|
180
|
+
skipPlaceholderCheck: true,
|
|
162
181
|
},
|
|
163
182
|
// ── Private keys ───────────────────────────────────────────────────────────
|
|
164
183
|
{
|
|
@@ -201,7 +220,10 @@ export const SECRET_PATTERNS = [
|
|
|
201
220
|
{
|
|
202
221
|
id: "bearer_token",
|
|
203
222
|
name: "Bearer Token in code",
|
|
204
|
-
|
|
223
|
+
// Gerçek bearer token'lar (JWT, OAuth2 opak token) neredeyse hiç 20
|
|
224
|
+
// karakterin altına inmez — testlerdeki "Bearer alpha"/"Bearer test-token"
|
|
225
|
+
// gibi kısa sahte değerleri eleyip gürültüyü büyük ölçüde azaltıyor.
|
|
226
|
+
pattern: /['"](Bearer\s+[A-Za-z0-9\-._~+/]{20,}=*)['"]/gi,
|
|
205
227
|
severity: "high",
|
|
206
228
|
},
|
|
207
229
|
// ── DevOps & infra ─────────────────────────────────────────────────────────
|
|
@@ -237,7 +259,7 @@ export const SECRET_PATTERNS = [
|
|
|
237
259
|
/placeholder/i,
|
|
238
260
|
/example/i,
|
|
239
261
|
/your[-_]?/i,
|
|
240
|
-
/<[
|
|
262
|
+
/<[^<>]{1,80}>/,
|
|
241
263
|
/\*{3,}/,
|
|
242
264
|
],
|
|
243
265
|
},
|
package/dist/patterns.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../src/patterns.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../src/patterns.ts"],"names":[],"mappings":"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"}
|
package/dist/scanner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAEpE,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAEpE,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAmED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,EAAE,CAqCnE;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAqBpF;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GAC1E,UAAU,CAuDZ"}
|
package/dist/scanner.js
CHANGED
|
@@ -25,6 +25,42 @@ function isAllowlisted(match, pattern) {
|
|
|
25
25
|
return false;
|
|
26
26
|
return pattern.allowlist.some((allow) => allow.test(match));
|
|
27
27
|
}
|
|
28
|
+
// Yaygın suppression annotasyonları: detect-secrets, gitleaks, trufflehog ve
|
|
29
|
+
// genel nosec/nosemgrep konvansiyonları. Aynı satırda bulunursa finding'i bastırır.
|
|
30
|
+
const SUPPRESSION_MARKERS = /(?:pragma:\s*allowlist[\s-]secret|gitleaks:\s*allow|trufflehog:\s*ignore|nosec\b|nosemgrep\b|guardbee:\s*allow|guardbee-ignore)/i;
|
|
31
|
+
function isSuppressed(contextLine) {
|
|
32
|
+
return SUPPRESSION_MARKERS.test(contextLine);
|
|
33
|
+
}
|
|
34
|
+
// Dokümantasyon/örnek koddaki tipik doldurucu değerler gerçek secret'larda
|
|
35
|
+
// pratik olarak hiç görülmeyen üç şekilden birini alır: aynı karakterin
|
|
36
|
+
// tekrarı, alfabe/rakamda ardışık bir dizi, ya da değerin içine gömülü bir
|
|
37
|
+
// "example/placeholder" kelimesi (örn. AWS'in kendi resmi örnek anahtarı
|
|
38
|
+
// AKIAIOSFODNN7EXAMPLE). Gerçek rastgele bir secret'ta bunlardan biri şans
|
|
39
|
+
// eseri oluşma olasılığı ihmal edilebilir düzeyde düşük.
|
|
40
|
+
const PLACEHOLDER_WORDS = /example|placeholder|sample|dummy|fakekey|fake[_-]?key|change[-_]?me|testkey|yourkey|redacted/i;
|
|
41
|
+
function hasLongSequentialRun(value, minLen = 8) {
|
|
42
|
+
let run = 1;
|
|
43
|
+
for (let i = 1; i < value.length; i++) {
|
|
44
|
+
if (value.charCodeAt(i) === value.charCodeAt(i - 1) + 1) {
|
|
45
|
+
run++;
|
|
46
|
+
if (run >= minLen)
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
run = 1;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
function isPlaceholderValue(matchStr) {
|
|
56
|
+
if (/(.)\1{7,}/.test(matchStr))
|
|
57
|
+
return true; // 8+ tekrar eden aynı karakter
|
|
58
|
+
if (hasLongSequentialRun(matchStr))
|
|
59
|
+
return true; // 8+ ardışık kod noktası
|
|
60
|
+
if (PLACEHOLDER_WORDS.test(matchStr))
|
|
61
|
+
return true;
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
28
64
|
export function scanText(text, filePath) {
|
|
29
65
|
const findings = [];
|
|
30
66
|
const lines = text.split("\n");
|
|
@@ -35,12 +71,16 @@ export function scanText(text, filePath) {
|
|
|
35
71
|
const matchStr = m[0];
|
|
36
72
|
if (isAllowlisted(matchStr, sp))
|
|
37
73
|
continue;
|
|
74
|
+
if (!sp.skipPlaceholderCheck && isPlaceholderValue(matchStr))
|
|
75
|
+
continue;
|
|
38
76
|
// Find line/column
|
|
39
77
|
const before = text.slice(0, m.index);
|
|
40
78
|
const line = before.split("\n").length;
|
|
41
79
|
const lastNl = before.lastIndexOf("\n");
|
|
42
80
|
const column = m.index - (lastNl === -1 ? 0 : lastNl + 1) + 1;
|
|
43
81
|
const contextLine = lines[line - 1] ?? "";
|
|
82
|
+
if (isSuppressed(contextLine))
|
|
83
|
+
continue;
|
|
44
84
|
const redactedContext = contextLine.replace(matchStr, redact(matchStr));
|
|
45
85
|
findings.push({
|
|
46
86
|
patternId: sp.id,
|
package/dist/scanner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAsB,MAAM,eAAe,CAAC;AAqBpE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAChE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;IACpD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO;IAChD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IACtC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;IACjC,OAAO,EAAE,sCAAsC;CAChD,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IACxD,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO;IAC9D,UAAU,EAAE,aAAa;CAC1B,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAE9C,SAAS,MAAM,CAAC,KAAa;IAC3B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,OAAsB;IAC1D,IAAI,CAAC,OAAO,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,QAAiB;IACtD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE/B,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAyB,CAAC;QAC9B,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@guardbee/mcp-secret-scanner",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "MCP server that scans files and directories for exposed secrets, API keys, and credentials",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -19,10 +19,17 @@
|
|
|
19
19
|
"README.md",
|
|
20
20
|
"TR.md"
|
|
21
21
|
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsc",
|
|
24
|
+
"dev": "tsc --watch",
|
|
25
|
+
"start": "node dist/cli.js",
|
|
26
|
+
"test": "vitest run",
|
|
27
|
+
"prepublishOnly": "npm run build"
|
|
28
|
+
},
|
|
22
29
|
"dependencies": {
|
|
30
|
+
"@guardbee/mcp-telemetry": "workspace:^",
|
|
23
31
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
24
|
-
"zod": "^4.5.4"
|
|
25
|
-
"@guardbee/mcp-telemetry": "^0.1.2"
|
|
32
|
+
"zod": "^4.5.4"
|
|
26
33
|
},
|
|
27
34
|
"keywords": [
|
|
28
35
|
"mcp",
|
|
@@ -36,11 +43,5 @@
|
|
|
36
43
|
"type": "git",
|
|
37
44
|
"url": "https://github.com/GuardBee/guardbee-mcp.git",
|
|
38
45
|
"directory": "packages/secret-scanner"
|
|
39
|
-
},
|
|
40
|
-
"scripts": {
|
|
41
|
-
"build": "tsc",
|
|
42
|
-
"dev": "tsc --watch",
|
|
43
|
-
"start": "node dist/cli.js",
|
|
44
|
-
"test": "vitest run"
|
|
45
46
|
}
|
|
46
|
-
}
|
|
47
|
+
}
|