@mnemonik/shared 6.47.0 → 6.48.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/dist/codeScanner.d.ts +32 -2
- package/dist/codeScanner.d.ts.map +1 -1
- package/dist/codeScanner.js +101 -8
- package/dist/codeScanner.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/secretPatterns.d.ts +25 -1
- package/dist/secretPatterns.d.ts.map +1 -1
- package/dist/secretPatterns.js +182 -2
- package/dist/secretPatterns.js.map +1 -1
- package/package.json +1 -1
- package/src/codeScanner.ts +101 -8
- package/src/index.ts +8 -1
- package/src/secretPatterns.ts +180 -2
package/dist/codeScanner.d.ts
CHANGED
|
@@ -1,6 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Code Scanner - Parse and chunk source files for embedding
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* The one file-size ceiling in Mnemonik. A file at or below this is scanned,
|
|
6
|
+
* chunked, AND pushed verbatim; a file above it is uniformly outside the
|
|
7
|
+
* system — not scanned, not chunked, not citable. "Scanned ⟺ verifiable".
|
|
8
|
+
*
|
|
9
|
+
* This is deliberately a single exported constant rather than a number
|
|
10
|
+
* repeated per layer. Three ceilings previously existed and had drifted:
|
|
11
|
+
* the scan ceiling here (10 MB), a 5 MB whole-file push cap in the scanner
|
|
12
|
+
* daemon, and a 5 MB `content` cap in the server's scanPushSchema. Files
|
|
13
|
+
* between 5 and 10 MB were therefore indexed as chunks whose source content
|
|
14
|
+
* the server never received — chunks that could be retrieved but never
|
|
15
|
+
* verified against, a silent fidelity split. Every consumer now imports this:
|
|
16
|
+
*
|
|
17
|
+
* - `CodeScanner.MAX_FILE_SIZE` / `collectAuthorityFilesWithStatus` (this file)
|
|
18
|
+
* - `MAX_PUSH_CONTENT_BYTES` (packages/scanner/src/daemon.ts)
|
|
19
|
+
* - `scanFileSchema.content` (src/server/routes/schemas.ts)
|
|
20
|
+
*
|
|
21
|
+
* Raising it means widening the stored-content pipe end to end; do not raise
|
|
22
|
+
* one site alone.
|
|
23
|
+
*/
|
|
24
|
+
export declare const MAX_SCANNED_FILE_BYTES: number;
|
|
4
25
|
export interface CodeChunk {
|
|
5
26
|
content: string;
|
|
6
27
|
filePath: string;
|
|
@@ -34,6 +55,13 @@ export interface ScanOptions {
|
|
|
34
55
|
* project-specific cases (`vendor/`, custom dirs) hierarchically.
|
|
35
56
|
*/
|
|
36
57
|
export declare const BUILT_IN_IGNORE_DIRS: readonly string[];
|
|
58
|
+
/**
|
|
59
|
+
* True when `relPath` names a file whose contents are credentials. Applied
|
|
60
|
+
* by `shouldIgnore` (every walker: directory scan, explicit file lists, and
|
|
61
|
+
* the authority-file walk) and by `makeIgnoreMatcher` (server-side backstop
|
|
62
|
+
* for older or misbehaving daemons). Accepts OS-native or POSIX separators.
|
|
63
|
+
*/
|
|
64
|
+
export declare function isSecretFile(relPath: string): boolean;
|
|
37
65
|
/**
|
|
38
66
|
* Matchers for authority manifest / config / CI files whose verbatim content
|
|
39
67
|
* is collected by `collectAuthorityFiles` and pushed to the server for
|
|
@@ -196,8 +224,10 @@ export declare class CodeScanner {
|
|
|
196
224
|
*/
|
|
197
225
|
private shouldIgnore;
|
|
198
226
|
/**
|
|
199
|
-
* Parse a file and extract code chunks
|
|
200
|
-
*
|
|
227
|
+
* Parse a file and extract code chunks.
|
|
228
|
+
* Size limit is the shared `MAX_SCANNED_FILE_BYTES` ceiling — the same
|
|
229
|
+
* number the daemon and the server's scanPushSchema enforce, so anything
|
|
230
|
+
* chunked here can always be shipped and stored verbatim.
|
|
201
231
|
*/
|
|
202
232
|
private static readonly MAX_FILE_SIZE;
|
|
203
233
|
private parseFile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeScanner.d.ts","sourceRoot":"","sources":["../src/codeScanner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAcD;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAqDjD,CAAC;
|
|
1
|
+
{"version":3,"file":"codeScanner.d.ts","sourceRoot":"","sources":["../src/codeScanner.ts"],"names":[],"mappings":"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"}
|
package/dist/codeScanner.js
CHANGED
|
@@ -5,13 +5,34 @@ import { readdir, readFile, stat, lstat, realpath } from 'fs/promises';
|
|
|
5
5
|
import { join, relative, extname, sep } from 'path';
|
|
6
6
|
import { createHash } from 'crypto';
|
|
7
7
|
import ignore from 'ignore';
|
|
8
|
-
import { debug as logDebug } from './logger.js';
|
|
8
|
+
import { debug as logDebug, warn as logWarn } from './logger.js';
|
|
9
9
|
import { withTimeout } from './asyncUtils.js';
|
|
10
10
|
import { scrubSecrets } from './secretPatterns.js';
|
|
11
11
|
/**
|
|
12
12
|
* File operation timeout (5 seconds) to prevent hanging on slow/unresponsive filesystems
|
|
13
13
|
*/
|
|
14
14
|
const FILE_OP_TIMEOUT_MS = 5000;
|
|
15
|
+
/**
|
|
16
|
+
* The one file-size ceiling in Mnemonik. A file at or below this is scanned,
|
|
17
|
+
* chunked, AND pushed verbatim; a file above it is uniformly outside the
|
|
18
|
+
* system — not scanned, not chunked, not citable. "Scanned ⟺ verifiable".
|
|
19
|
+
*
|
|
20
|
+
* This is deliberately a single exported constant rather than a number
|
|
21
|
+
* repeated per layer. Three ceilings previously existed and had drifted:
|
|
22
|
+
* the scan ceiling here (10 MB), a 5 MB whole-file push cap in the scanner
|
|
23
|
+
* daemon, and a 5 MB `content` cap in the server's scanPushSchema. Files
|
|
24
|
+
* between 5 and 10 MB were therefore indexed as chunks whose source content
|
|
25
|
+
* the server never received — chunks that could be retrieved but never
|
|
26
|
+
* verified against, a silent fidelity split. Every consumer now imports this:
|
|
27
|
+
*
|
|
28
|
+
* - `CodeScanner.MAX_FILE_SIZE` / `collectAuthorityFilesWithStatus` (this file)
|
|
29
|
+
* - `MAX_PUSH_CONTENT_BYTES` (packages/scanner/src/daemon.ts)
|
|
30
|
+
* - `scanFileSchema.content` (src/server/routes/schemas.ts)
|
|
31
|
+
*
|
|
32
|
+
* Raising it means widening the stored-content pipe end to end; do not raise
|
|
33
|
+
* one site alone.
|
|
34
|
+
*/
|
|
35
|
+
export const MAX_SCANNED_FILE_BYTES = 10 * 1024 * 1024; // 10MB
|
|
15
36
|
/**
|
|
16
37
|
* Directory basenames the scanner never indexes, across every ecosystem —
|
|
17
38
|
* generated output, package-manager/build caches, and vendored deps. SINGLE
|
|
@@ -89,7 +110,10 @@ export const BUILT_IN_IGNORE_DIRS = [
|
|
|
89
110
|
* generically by the isGitBoundary rule below, not a path convention.)
|
|
90
111
|
*/
|
|
91
112
|
const BUILT_IN_IGNORE_FILE_PATTERNS = [
|
|
92
|
-
|
|
113
|
+
// NOTE: the `.env` family and every other secret-bearing FILE KIND lives in
|
|
114
|
+
// `isSecretFile` below, not here. This glob engine cannot express negation
|
|
115
|
+
// (`.env.example` must stay collectable) and its unanchored substring
|
|
116
|
+
// matching would make `.env.*` also swallow `.environment.ts`.
|
|
93
117
|
'.DS_Store',
|
|
94
118
|
'*.log',
|
|
95
119
|
'*.lock',
|
|
@@ -102,6 +126,57 @@ const BUILT_IN_IGNORE_FILE_PATTERNS = [
|
|
|
102
126
|
'*.map',
|
|
103
127
|
'/tests/fixtures/*',
|
|
104
128
|
];
|
|
129
|
+
/**
|
|
130
|
+
* Files whose CONTENT is a credential rather than code. Today these are
|
|
131
|
+
* excluded only INCIDENTALLY — `.pem`, `.key` and friends carry no
|
|
132
|
+
* allowlisted extension, so nothing chunks them. That protection evaporates
|
|
133
|
+
* the moment the extension allowlist widens (as it did for `.sh`/`.lua`), so
|
|
134
|
+
* the exclusion is made explicit here and becomes a defended invariant:
|
|
135
|
+
* unlike `ignorePatterns`, this predicate is NOT caller-overridable.
|
|
136
|
+
*
|
|
137
|
+
* Expressed as a predicate rather than glob strings because `shouldIgnore`'s
|
|
138
|
+
* engine has no negation and matches globs as unanchored substrings — neither
|
|
139
|
+
* property can state "every `.env.*` EXCEPT `.env.example`".
|
|
140
|
+
*
|
|
141
|
+
* Precision notes (over-exclusion is a fidelity failure in its own right):
|
|
142
|
+
* - `.env` family: `/^\.env(\..+)?$/` matches `.env`, `.env.local`,
|
|
143
|
+
* `.env.production` — and deliberately NOT `.envrc` or `.environment.ts`.
|
|
144
|
+
* - `.env.example` is carved out: it is authority-collected on purpose
|
|
145
|
+
* (AUTHORITY_FILE_MATCHERS) and holds placeholder values, not secrets.
|
|
146
|
+
* It is the doc-truth env_vars authority; excluding it would blind that
|
|
147
|
+
* extractor exactly as the old `process.env` over-scrub once did.
|
|
148
|
+
* - `credentials` is matched ONLY directly inside a dot-directory
|
|
149
|
+
* (`.aws/credentials`, `.docker/credentials`). A bare `credentials/` is a
|
|
150
|
+
* real, common SOURCE directory name (gRPC, auth libraries) and
|
|
151
|
+
* `shouldIgnore` cannot tell a file from a directory at its call sites —
|
|
152
|
+
* an unqualified rule would silently delete that subtree from the index.
|
|
153
|
+
*/
|
|
154
|
+
const SECRET_FILE_PLACEHOLDER_BASENAMES = new Set(['.env.example']);
|
|
155
|
+
const SECRET_FILE_BASENAME_PATTERNS = [
|
|
156
|
+
/^\.env(\..+)?$/i, // .env, .env.local, .env.production.local
|
|
157
|
+
/^id_(?:rsa|dsa|ecdsa|ed25519)/i, // ssh private keys (and .pub siblings)
|
|
158
|
+
/^\.(?:npmrc|netrc|pgpass)$/i, // registry / ftp / postgres password files
|
|
159
|
+
/^kubeconfig$/i,
|
|
160
|
+
/\.(?:pem|key|p12|pfx|keystore|jks|kubeconfig)$/i,
|
|
161
|
+
];
|
|
162
|
+
/**
|
|
163
|
+
* True when `relPath` names a file whose contents are credentials. Applied
|
|
164
|
+
* by `shouldIgnore` (every walker: directory scan, explicit file lists, and
|
|
165
|
+
* the authority-file walk) and by `makeIgnoreMatcher` (server-side backstop
|
|
166
|
+
* for older or misbehaving daemons). Accepts OS-native or POSIX separators.
|
|
167
|
+
*/
|
|
168
|
+
export function isSecretFile(relPath) {
|
|
169
|
+
if (!relPath)
|
|
170
|
+
return false;
|
|
171
|
+
const segments = relPath.split(sep).join('/').split('/');
|
|
172
|
+
const base = segments[segments.length - 1] ?? '';
|
|
173
|
+
if (!base || SECRET_FILE_PLACEHOLDER_BASENAMES.has(base))
|
|
174
|
+
return false;
|
|
175
|
+
if (SECRET_FILE_BASENAME_PATTERNS.some((re) => re.test(base)))
|
|
176
|
+
return true;
|
|
177
|
+
const parent = segments[segments.length - 2];
|
|
178
|
+
return base === 'credentials' && parent !== undefined && parent.startsWith('.');
|
|
179
|
+
}
|
|
105
180
|
/**
|
|
106
181
|
* Per-directory ignore files the walkers honor, unioned. `.gitignore` is the
|
|
107
182
|
* project's own declaration of generated/vendored paths; `.mnemonikignore`
|
|
@@ -197,6 +272,8 @@ export function makeIgnoreMatcher(extraPatterns = []) {
|
|
|
197
272
|
const norm = relPath.split(sep).join('/');
|
|
198
273
|
if (norm.split('/').some((s) => BUILT_IN_IGNORE_DIR_SET.has(s)))
|
|
199
274
|
return true;
|
|
275
|
+
if (isSecretFile(norm))
|
|
276
|
+
return true;
|
|
200
277
|
if (ig) {
|
|
201
278
|
try {
|
|
202
279
|
return ig.ignores(norm);
|
|
@@ -611,6 +688,11 @@ export class CodeScanner {
|
|
|
611
688
|
* (e.g., '.env' should not match '.environment.ts')
|
|
612
689
|
*/
|
|
613
690
|
shouldIgnore(path) {
|
|
691
|
+
// Credential-bearing file kinds first, and outside the overridable
|
|
692
|
+
// `ignorePatterns` list — a caller-supplied pattern set must not be able
|
|
693
|
+
// to opt a project back into indexing its own private keys.
|
|
694
|
+
if (isSecretFile(path))
|
|
695
|
+
return true;
|
|
614
696
|
const segments = path.split('/');
|
|
615
697
|
return this.options.ignorePatterns.some((pattern) => {
|
|
616
698
|
if (pattern.includes('*')) {
|
|
@@ -635,10 +717,12 @@ export class CodeScanner {
|
|
|
635
717
|
});
|
|
636
718
|
}
|
|
637
719
|
/**
|
|
638
|
-
* Parse a file and extract code chunks
|
|
639
|
-
*
|
|
720
|
+
* Parse a file and extract code chunks.
|
|
721
|
+
* Size limit is the shared `MAX_SCANNED_FILE_BYTES` ceiling — the same
|
|
722
|
+
* number the daemon and the server's scanPushSchema enforce, so anything
|
|
723
|
+
* chunked here can always be shipped and stored verbatim.
|
|
640
724
|
*/
|
|
641
|
-
static MAX_FILE_SIZE =
|
|
725
|
+
static MAX_FILE_SIZE = MAX_SCANNED_FILE_BYTES;
|
|
642
726
|
async parseFile(filePath, rootPath) {
|
|
643
727
|
try {
|
|
644
728
|
// Check file size before reading to avoid memory issues
|
|
@@ -1229,10 +1313,19 @@ export class CodeScanner {
|
|
|
1229
1313
|
else if (isFile && AUTHORITY_FILE_MATCHERS.some((m) => m(rel))) {
|
|
1230
1314
|
try {
|
|
1231
1315
|
let content = await readFile(full, 'utf-8');
|
|
1232
|
-
//
|
|
1233
|
-
//
|
|
1234
|
-
|
|
1316
|
+
// Authority files honor the same single ceiling as chunked files
|
|
1317
|
+
// (MAX_SCANNED_FILE_BYTES). Manifests are tiny; one this large is
|
|
1318
|
+
// anomalous, so say so rather than dropping it silently — a
|
|
1319
|
+
// missing authority file otherwise looks identical to a project
|
|
1320
|
+
// that simply has no manifest.
|
|
1321
|
+
if (content.length > MAX_SCANNED_FILE_BYTES) {
|
|
1322
|
+
logWarn('Authority file exceeds the scan ceiling; excluded from push', {
|
|
1323
|
+
path: rel,
|
|
1324
|
+
size: content.length,
|
|
1325
|
+
limit: MAX_SCANNED_FILE_BYTES,
|
|
1326
|
+
});
|
|
1235
1327
|
continue;
|
|
1328
|
+
}
|
|
1236
1329
|
// NUL sanitation (ingestion boundary, daemon side): Postgres
|
|
1237
1330
|
// `text` columns reject the literal NUL byte (U+0000). Authority
|
|
1238
1331
|
// files are shipped verbatim (no chunking), so strip here before
|
package/dist/codeScanner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeScanner.js","sourceRoot":"","sources":["../src/codeScanner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codeScanner.js","sourceRoot":"","sources":["../src/codeScanner.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export { MCP_INSTRUCTIONS, MCP_INSTRUCTIONS_RAW, getMcpInstructions } from './instructions.js';
|
|
8
8
|
export { USAGE_GUIDE } from './usageGuide.js';
|
|
9
|
-
export { CodeScanner, AUTHORITY_FILE_MATCHERS, BUILT_IN_IGNORE_DIRS, makeIgnoreMatcher, isGitBoundary, FIXTURE_PATH_RE, isFixturePath, type CodeChunk, type ScanOptions, } from './codeScanner.js';
|
|
10
|
-
export { SECRET_PATTERNS, SECRET_REDACTION_PLACEHOLDER, scrubSecrets } from './secretPatterns.js';
|
|
9
|
+
export { CodeScanner, MAX_SCANNED_FILE_BYTES, AUTHORITY_FILE_MATCHERS, BUILT_IN_IGNORE_DIRS, makeIgnoreMatcher, isGitBoundary, FIXTURE_PATH_RE, isFixturePath, isSecretFile, type CodeChunk, type ScanOptions, } from './codeScanner.js';
|
|
10
|
+
export { SECRET_PATTERNS, SECRET_REDACTION_PLACEHOLDER, scrubSecrets, redactHighEntropyTokens, } from './secretPatterns.js';
|
|
11
11
|
export { FETCH_TIMEOUT_MS, TELEMETRY_TIMEOUT_MS, POST_TOOL_TIMEOUT_MS, MCP_PRECHECK_TIMEOUT_MS, withHookTimeout, } from './hookTimeouts.js';
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,aAAa,EACb,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,4BAA4B,EAC5B,YAAY,EACZ,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,eAAe,GAChB,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export { MCP_INSTRUCTIONS, MCP_INSTRUCTIONS_RAW, getMcpInstructions } from './instructions.js';
|
|
8
8
|
export { USAGE_GUIDE } from './usageGuide.js';
|
|
9
|
-
export { CodeScanner, AUTHORITY_FILE_MATCHERS, BUILT_IN_IGNORE_DIRS, makeIgnoreMatcher, isGitBoundary, FIXTURE_PATH_RE, isFixturePath, } from './codeScanner.js';
|
|
10
|
-
export { SECRET_PATTERNS, SECRET_REDACTION_PLACEHOLDER, scrubSecrets } from './secretPatterns.js';
|
|
9
|
+
export { CodeScanner, MAX_SCANNED_FILE_BYTES, AUTHORITY_FILE_MATCHERS, BUILT_IN_IGNORE_DIRS, makeIgnoreMatcher, isGitBoundary, FIXTURE_PATH_RE, isFixturePath, isSecretFile, } from './codeScanner.js';
|
|
10
|
+
export { SECRET_PATTERNS, SECRET_REDACTION_PLACEHOLDER, scrubSecrets, redactHighEntropyTokens, } from './secretPatterns.js';
|
|
11
11
|
export { FETCH_TIMEOUT_MS, TELEMETRY_TIMEOUT_MS, POST_TOOL_TIMEOUT_MS, MCP_PRECHECK_TIMEOUT_MS, withHookTimeout, } from './hookTimeouts.js';
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,aAAa,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,GAGb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,4BAA4B,EAC5B,YAAY,EACZ,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,eAAe,GAChB,MAAM,mBAAmB,CAAC"}
|
package/dist/secretPatterns.d.ts
CHANGED
|
@@ -15,15 +15,39 @@
|
|
|
15
15
|
* 2. Stripe-style sk_live_/pk_test_ keys
|
|
16
16
|
* 3. GitHub personal access tokens (ghp_ prefix, exact 36 chars)
|
|
17
17
|
* 4. GitLab personal access tokens (glpat- prefix, 20+ chars)
|
|
18
|
-
* 5. PEM
|
|
18
|
+
* 5. PEM private keys — whole block, header through footer
|
|
19
|
+
* 6. Provider prefixes: AWS (AKIA/ASIA + labeled secret key), JWT,
|
|
20
|
+
* Slack (xox*), Google (AIza), Anthropic (sk-ant-), npm (npm_/npms_)
|
|
21
|
+
* 7. Credentials inside scheme://user:pass@host connection strings
|
|
22
|
+
* 8. Authorization: Bearer headers
|
|
23
|
+
* 9. Standalone high-entropy tokens matching no known prefix
|
|
24
|
+
* (`redactHighEntropyTokens` — heavily guarded, see below)
|
|
19
25
|
*
|
|
20
26
|
* False-positive cost: a few legitimate strings get replaced with the
|
|
21
27
|
* placeholder. False-negative cost: a credential ships to the server and
|
|
22
28
|
* gets stored in a memory. The patterns are deliberately tight (require
|
|
23
29
|
* specific prefixes, length minimums) to keep the false-positive rate low
|
|
24
30
|
* while catching the common credential leak vectors.
|
|
31
|
+
*
|
|
32
|
+
* FIDELITY IS A PEER CONCERN, NOT A ROUNDING ERROR. Over-scrubbing is the
|
|
33
|
+
* same class of failure as under-scrubbing: a pattern that eats prose,
|
|
34
|
+
* identifiers, hashes or paths silently blinds doc-truth's authority
|
|
35
|
+
* extractors — exactly what happened when a `process.env.X` read was
|
|
36
|
+
* redacted as if it were a literal (see ENV_READ_VALUE_RE below). Every
|
|
37
|
+
* pattern here carries positive AND negative tests in
|
|
38
|
+
* tests/SecretPatterns.test.ts, and the entropy detector is additionally
|
|
39
|
+
* guarded against hashes, UUIDs, paths, slugs and identifiers.
|
|
25
40
|
*/
|
|
26
41
|
export declare const SECRET_REDACTION_PLACEHOLDER = "[REDACTED]";
|
|
27
42
|
export declare const SECRET_PATTERNS: ReadonlyArray<RegExp>;
|
|
43
|
+
/**
|
|
44
|
+
* Redact standalone high-entropy tokens that no provider pattern claimed.
|
|
45
|
+
* Only the token is replaced — the surrounding key, quote and punctuation
|
|
46
|
+
* survive, so `{"webhook": "<secret>"}` stays valid, readable JSON.
|
|
47
|
+
*
|
|
48
|
+
* Exported for direct testing of the guard behavior; production callers
|
|
49
|
+
* should use `scrubSecrets`, which applies this after the pattern sweep.
|
|
50
|
+
*/
|
|
51
|
+
export declare function redactHighEntropyTokens(text: string): string;
|
|
28
52
|
export declare function scrubSecrets(text: string): string;
|
|
29
53
|
//# sourceMappingURL=secretPatterns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secretPatterns.d.ts","sourceRoot":"","sources":["../src/secretPatterns.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"secretPatterns.d.ts","sourceRoot":"","sources":["../src/secretPatterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,eAAO,MAAM,4BAA4B,eAAe,CAAC;AAGzD,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,MAAM,CA6CjD,CAAC;AA0HF;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAc5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWjD"}
|
package/dist/secretPatterns.js
CHANGED
|
@@ -15,13 +15,28 @@
|
|
|
15
15
|
* 2. Stripe-style sk_live_/pk_test_ keys
|
|
16
16
|
* 3. GitHub personal access tokens (ghp_ prefix, exact 36 chars)
|
|
17
17
|
* 4. GitLab personal access tokens (glpat- prefix, 20+ chars)
|
|
18
|
-
* 5. PEM
|
|
18
|
+
* 5. PEM private keys — whole block, header through footer
|
|
19
|
+
* 6. Provider prefixes: AWS (AKIA/ASIA + labeled secret key), JWT,
|
|
20
|
+
* Slack (xox*), Google (AIza), Anthropic (sk-ant-), npm (npm_/npms_)
|
|
21
|
+
* 7. Credentials inside scheme://user:pass@host connection strings
|
|
22
|
+
* 8. Authorization: Bearer headers
|
|
23
|
+
* 9. Standalone high-entropy tokens matching no known prefix
|
|
24
|
+
* (`redactHighEntropyTokens` — heavily guarded, see below)
|
|
19
25
|
*
|
|
20
26
|
* False-positive cost: a few legitimate strings get replaced with the
|
|
21
27
|
* placeholder. False-negative cost: a credential ships to the server and
|
|
22
28
|
* gets stored in a memory. The patterns are deliberately tight (require
|
|
23
29
|
* specific prefixes, length minimums) to keep the false-positive rate low
|
|
24
30
|
* while catching the common credential leak vectors.
|
|
31
|
+
*
|
|
32
|
+
* FIDELITY IS A PEER CONCERN, NOT A ROUNDING ERROR. Over-scrubbing is the
|
|
33
|
+
* same class of failure as under-scrubbing: a pattern that eats prose,
|
|
34
|
+
* identifiers, hashes or paths silently blinds doc-truth's authority
|
|
35
|
+
* extractors — exactly what happened when a `process.env.X` read was
|
|
36
|
+
* redacted as if it were a literal (see ENV_READ_VALUE_RE below). Every
|
|
37
|
+
* pattern here carries positive AND negative tests in
|
|
38
|
+
* tests/SecretPatterns.test.ts, and the entropy detector is additionally
|
|
39
|
+
* guarded against hashes, UUIDs, paths, slugs and identifiers.
|
|
25
40
|
*/
|
|
26
41
|
export const SECRET_REDACTION_PLACEHOLDER = '[REDACTED]';
|
|
27
42
|
// Shared by the scanner daemon and server-side scrub paths.
|
|
@@ -36,7 +51,40 @@ export const SECRET_PATTERNS = [
|
|
|
36
51
|
/(?:sk|pk)[-_][a-zA-Z0-9]{20,}/g,
|
|
37
52
|
/ghp_[a-zA-Z0-9]{36}/g,
|
|
38
53
|
/glpat-[a-zA-Z0-9-]{20,}/g,
|
|
54
|
+
// PEM private keys. The BLOCK pattern runs first so header→footer (the
|
|
55
|
+
// actual key material) is redacted as one unit; the header-only pattern
|
|
56
|
+
// stays as the fallback for the case a chunk boundary lands between
|
|
57
|
+
// header and footer, where the block never closes inside the chunk.
|
|
58
|
+
// `[\s\S]*?` is lazy so two adjacent keys don't merge into one match.
|
|
59
|
+
/-----BEGIN (?:RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----[\s\S]*?-----END (?:RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----/g,
|
|
39
60
|
/-----BEGIN (?:RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----/g,
|
|
61
|
+
// AWS access key IDs. The 16-char body must be uppercase-alphanumeric and
|
|
62
|
+
// \b-delimited, so prose ("AKIAMIA is a place name") cannot match.
|
|
63
|
+
/\bAKIA[0-9A-Z]{16}\b/g,
|
|
64
|
+
/\bASIA[0-9A-Z]{16}\b/g,
|
|
65
|
+
// AWS secret access key, labeled. The generic key=value pattern above does
|
|
66
|
+
// NOT cover this: its `secret` alternative must be followed immediately by
|
|
67
|
+
// `[:=]`, and here it is followed by `_access_key`.
|
|
68
|
+
/\baws_secret_access_key\s*[:=]\s*[A-Za-z0-9/+=]{40}\b/gi,
|
|
69
|
+
// JWT: three base64url segments. Length minimums keep dotted identifiers
|
|
70
|
+
// (`payload.header.signature`) out.
|
|
71
|
+
/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{5,}\b/g,
|
|
72
|
+
/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g,
|
|
73
|
+
/\bAIza[0-9A-Za-z_-]{35}\b/g,
|
|
74
|
+
/\bsk-ant-[A-Za-z0-9_-]{20,}\b/g,
|
|
75
|
+
/\b(?:npm_|npms_)[A-Za-z0-9]{36,}\b/g,
|
|
76
|
+
// scheme://user:pass@ — only the credential segment is consumed, so the
|
|
77
|
+
// host and path survive for anyone reading the code. The username part is
|
|
78
|
+
// `*` (not `+`) because the no-username form (`redis://:pass@host`) is a
|
|
79
|
+
// real and common shape. The `@` is the anchor that makes this a
|
|
80
|
+
// credential rather than a URL: `https://host:443/path` cannot match
|
|
81
|
+
// because the character classes exclude `/`.
|
|
82
|
+
/\b[a-z][a-z0-9+.-]*:\/\/[^/\s:@]*:[^/\s:@]+@/gi,
|
|
83
|
+
// Authorization: Bearer <token>. The token class deliberately excludes
|
|
84
|
+
// `<` and `$`, so documentation placeholders (`Bearer <your-api-key>`,
|
|
85
|
+
// `Bearer $MNEMONIK_PROXY_TOKEN`) are left intact — redacting those would
|
|
86
|
+
// destroy the instruction without hiding a secret.
|
|
87
|
+
/Authorization\s*:\s*Bearer\s+[A-Za-z0-9._~+/-]+=*/gi,
|
|
40
88
|
];
|
|
41
89
|
/**
|
|
42
90
|
* Replace recognized secret shapes in `text` with the redaction
|
|
@@ -53,6 +101,136 @@ export const SECRET_PATTERNS = [
|
|
|
53
101
|
* protecting anything.
|
|
54
102
|
*/
|
|
55
103
|
const ENV_READ_VALUE_RE = /[:=]\s*(?:await\s+)?(?:process\.env[.[]|import\.meta\.env[.[])/;
|
|
104
|
+
/* ------------------------------------------------------------------ *
|
|
105
|
+
* High-entropy token detector
|
|
106
|
+
*
|
|
107
|
+
* Catches credentials that carry no recognizable provider prefix — the
|
|
108
|
+
* long random blob in `"webhook": "<40 random chars>"`. A naive entropy
|
|
109
|
+
* threshold cannot do this safely: measured over this repository, a
|
|
110
|
+
* camelCase identifier scores 4.49 bits/char against 4.66 for a real AWS
|
|
111
|
+
* secret key, so entropy ALONE separates nothing. The structural guards
|
|
112
|
+
* below carry the discrimination; entropy is only the final filter.
|
|
113
|
+
*
|
|
114
|
+
* Every candidate must clear ALL of:
|
|
115
|
+
* 1. CONTEXT — sits immediately after `=`/`:` or an opening quote.
|
|
116
|
+
* Bare prose positions are never touched, which is what
|
|
117
|
+
* keeps the detector out of documentation.
|
|
118
|
+
* 2. LENGTH — >= 36 characters. The floor started at 32 and was
|
|
119
|
+
* raised by the claim-yield guard: 32-char opaque
|
|
120
|
+
* RESOURCE IDS (Vercel `dpl_`/`prj_`, Stripe object ids)
|
|
121
|
+
* are public identifiers, not credentials, and eating
|
|
122
|
+
* them cost 39 real `symbol_reference` claims in
|
|
123
|
+
* docs/deployment/LAUNCH_PLAN.md. Genuine credential
|
|
124
|
+
* blobs sit at 36+ (GitHub 40, AWS 40, Google 39, a
|
|
125
|
+
* base64 32-byte key 44); shorter non-hex randomness is
|
|
126
|
+
* almost always an object id, and anything hex is
|
|
127
|
+
* already exempt by rule 4.
|
|
128
|
+
* 3. CHARSET MIX — contains lowercase AND uppercase AND a digit.
|
|
129
|
+
* 4. NOT HEX-ISH — hex after stripping `-`/`_` is a digest or UUID
|
|
130
|
+
* (commit SHAs, contentHash, snippet_hash, project ids).
|
|
131
|
+
* 5. NOT STRUCTURED — if every `/`, `-`, `_` separated segment is <= 16
|
|
132
|
+
* chars the token is a path, slug or SCREAMING_SNAKE
|
|
133
|
+
* identifier ("tests/fixtures/docTruth/dogfood-2026-06-06").
|
|
134
|
+
* 6. NOT WORDY — a lowercase run longer than 5 means natural words
|
|
135
|
+
* ("...FromCache..."), not random output.
|
|
136
|
+
* 7. ENTROPY — Shannon entropy >= 4.0 bits/char.
|
|
137
|
+
*
|
|
138
|
+
* Calibrated by sweeping every file this scanner would chunk across this
|
|
139
|
+
* repository (1426 files): 8 tokens fire, every one of them a credential
|
|
140
|
+
* shape — JWT headers, an AWS example secret key, a leaked Stripe
|
|
141
|
+
* `whsec_`, and this suite's own fixtures. Zero prose, zero paths, zero
|
|
142
|
+
* identifiers, zero resource ids.
|
|
143
|
+
*
|
|
144
|
+
* The bias is deliberately toward MISSING a secret rather than mangling
|
|
145
|
+
* text: provider prefixes above are the primary net, this is the backstop.
|
|
146
|
+
* ------------------------------------------------------------------ */
|
|
147
|
+
const ENTROPY_MIN_LENGTH = 36;
|
|
148
|
+
const ENTROPY_MIN_BITS_PER_CHAR = 4.0;
|
|
149
|
+
const ENTROPY_MAX_STRUCTURED_SEGMENT = 16;
|
|
150
|
+
const ENTROPY_MAX_LOWERCASE_RUN = 5;
|
|
151
|
+
/**
|
|
152
|
+
* Maximal runs of base64url/base64 characters. `=` is admitted only as
|
|
153
|
+
* trailing padding — allowing it inside the run let a candidate span an
|
|
154
|
+
* assignment (`HARNESS_PROJECT_ID=<uuid>` matched as one token, defeating
|
|
155
|
+
* the UUID exemption).
|
|
156
|
+
*/
|
|
157
|
+
const ENTROPY_CANDIDATE_RE = /[A-Za-z0-9+/_-]{36,}={0,2}/g;
|
|
158
|
+
/** Opening quote, or `=`/`:` with optional whitespace and optional quote. */
|
|
159
|
+
const ENTROPY_CONTEXT_RE = /(?:["'`]|[:=]\s*["'`]?)$/;
|
|
160
|
+
/** `==`, `=>`, `!=`, `<=`, `>=`, `+=` … are comparisons, not assignments. */
|
|
161
|
+
const ENTROPY_OPERATOR_TAIL_RE = /[=!<>+\-*/%&|^]$/;
|
|
162
|
+
const ENTROPY_HEXISH_RE = /^[0-9a-fA-F]+$/;
|
|
163
|
+
const ENTROPY_STRUCTURED_RE = /^[A-Za-z0-9]+(?:[/_-][A-Za-z0-9]+)+$/;
|
|
164
|
+
function shannonEntropy(token) {
|
|
165
|
+
const counts = new Map();
|
|
166
|
+
for (const ch of token)
|
|
167
|
+
counts.set(ch, (counts.get(ch) ?? 0) + 1);
|
|
168
|
+
let bits = 0;
|
|
169
|
+
for (const count of counts.values()) {
|
|
170
|
+
const p = count / token.length;
|
|
171
|
+
bits -= p * Math.log2(p);
|
|
172
|
+
}
|
|
173
|
+
return bits;
|
|
174
|
+
}
|
|
175
|
+
function maxLowercaseRun(token) {
|
|
176
|
+
let max = 0;
|
|
177
|
+
let current = 0;
|
|
178
|
+
for (const ch of token) {
|
|
179
|
+
if (ch >= 'a' && ch <= 'z') {
|
|
180
|
+
current += 1;
|
|
181
|
+
if (current > max)
|
|
182
|
+
max = current;
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
current = 0;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return max;
|
|
189
|
+
}
|
|
190
|
+
/** True when `token` looks like random credential material, not text. */
|
|
191
|
+
function isHighEntropySecret(token) {
|
|
192
|
+
if (token.length < ENTROPY_MIN_LENGTH)
|
|
193
|
+
return false;
|
|
194
|
+
const stripped = token.replace(/[-_]/g, '');
|
|
195
|
+
if (stripped.length > 0 && ENTROPY_HEXISH_RE.test(stripped))
|
|
196
|
+
return false; // digests, UUIDs
|
|
197
|
+
if (!/[a-z]/.test(token) || !/[A-Z]/.test(token) || !/[0-9]/.test(token))
|
|
198
|
+
return false;
|
|
199
|
+
if (ENTROPY_STRUCTURED_RE.test(token) &&
|
|
200
|
+
token.split(/[/_-]/).every((seg) => seg.length <= ENTROPY_MAX_STRUCTURED_SEGMENT)) {
|
|
201
|
+
return false; // paths, slugs, snake/kebab identifiers
|
|
202
|
+
}
|
|
203
|
+
if (maxLowercaseRun(token) > ENTROPY_MAX_LOWERCASE_RUN)
|
|
204
|
+
return false; // natural words
|
|
205
|
+
return shannonEntropy(token) >= ENTROPY_MIN_BITS_PER_CHAR;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Redact standalone high-entropy tokens that no provider pattern claimed.
|
|
209
|
+
* Only the token is replaced — the surrounding key, quote and punctuation
|
|
210
|
+
* survive, so `{"webhook": "<secret>"}` stays valid, readable JSON.
|
|
211
|
+
*
|
|
212
|
+
* Exported for direct testing of the guard behavior; production callers
|
|
213
|
+
* should use `scrubSecrets`, which applies this after the pattern sweep.
|
|
214
|
+
*/
|
|
215
|
+
export function redactHighEntropyTokens(text) {
|
|
216
|
+
if (!text)
|
|
217
|
+
return text;
|
|
218
|
+
return text.replace(ENTROPY_CANDIDATE_RE, (match, offset) => {
|
|
219
|
+
const before = text.slice(Math.max(0, offset - 8), offset);
|
|
220
|
+
if (!ENTROPY_CONTEXT_RE.test(before))
|
|
221
|
+
return match;
|
|
222
|
+
// Strip the trailing quote (if any) to inspect the operator underneath.
|
|
223
|
+
const operatorContext = before
|
|
224
|
+
.replace(/["'`]$/, '')
|
|
225
|
+
.trimEnd()
|
|
226
|
+
.slice(0, -1);
|
|
227
|
+
if (ENTROPY_OPERATOR_TAIL_RE.test(operatorContext))
|
|
228
|
+
return match;
|
|
229
|
+
if (ENV_READ_VALUE_RE.test(before + match))
|
|
230
|
+
return match;
|
|
231
|
+
return isHighEntropySecret(match) ? SECRET_REDACTION_PLACEHOLDER : match;
|
|
232
|
+
});
|
|
233
|
+
}
|
|
56
234
|
export function scrubSecrets(text) {
|
|
57
235
|
if (!text)
|
|
58
236
|
return text;
|
|
@@ -60,6 +238,8 @@ export function scrubSecrets(text) {
|
|
|
60
238
|
for (const pattern of SECRET_PATTERNS) {
|
|
61
239
|
result = result.replace(pattern, (match) => ENV_READ_VALUE_RE.test(match) ? match : SECRET_REDACTION_PLACEHOLDER);
|
|
62
240
|
}
|
|
63
|
-
|
|
241
|
+
// Backstop for credentials with no recognizable prefix. Runs last so the
|
|
242
|
+
// precise provider patterns get first claim on their own shapes.
|
|
243
|
+
return redactHighEntropyTokens(result);
|
|
64
244
|
}
|
|
65
245
|
//# sourceMappingURL=secretPatterns.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secretPatterns.js","sourceRoot":"","sources":["../src/secretPatterns.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"secretPatterns.js","sourceRoot":"","sources":["../src/secretPatterns.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/codeScanner.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { readdir, readFile, stat, lstat, realpath } from 'fs/promises';
|
|
|
6
6
|
import { join, relative, extname, sep } from 'path';
|
|
7
7
|
import { createHash } from 'crypto';
|
|
8
8
|
import ignore, { type Ignore } from 'ignore';
|
|
9
|
-
import { debug as logDebug } from './logger.js';
|
|
9
|
+
import { debug as logDebug, warn as logWarn } from './logger.js';
|
|
10
10
|
import { withTimeout } from './asyncUtils.js';
|
|
11
11
|
import { scrubSecrets } from './secretPatterns.js';
|
|
12
12
|
|
|
@@ -15,6 +15,28 @@ import { scrubSecrets } from './secretPatterns.js';
|
|
|
15
15
|
*/
|
|
16
16
|
const FILE_OP_TIMEOUT_MS = 5000;
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* The one file-size ceiling in Mnemonik. A file at or below this is scanned,
|
|
20
|
+
* chunked, AND pushed verbatim; a file above it is uniformly outside the
|
|
21
|
+
* system — not scanned, not chunked, not citable. "Scanned ⟺ verifiable".
|
|
22
|
+
*
|
|
23
|
+
* This is deliberately a single exported constant rather than a number
|
|
24
|
+
* repeated per layer. Three ceilings previously existed and had drifted:
|
|
25
|
+
* the scan ceiling here (10 MB), a 5 MB whole-file push cap in the scanner
|
|
26
|
+
* daemon, and a 5 MB `content` cap in the server's scanPushSchema. Files
|
|
27
|
+
* between 5 and 10 MB were therefore indexed as chunks whose source content
|
|
28
|
+
* the server never received — chunks that could be retrieved but never
|
|
29
|
+
* verified against, a silent fidelity split. Every consumer now imports this:
|
|
30
|
+
*
|
|
31
|
+
* - `CodeScanner.MAX_FILE_SIZE` / `collectAuthorityFilesWithStatus` (this file)
|
|
32
|
+
* - `MAX_PUSH_CONTENT_BYTES` (packages/scanner/src/daemon.ts)
|
|
33
|
+
* - `scanFileSchema.content` (src/server/routes/schemas.ts)
|
|
34
|
+
*
|
|
35
|
+
* Raising it means widening the stored-content pipe end to end; do not raise
|
|
36
|
+
* one site alone.
|
|
37
|
+
*/
|
|
38
|
+
export const MAX_SCANNED_FILE_BYTES = 10 * 1024 * 1024; // 10MB
|
|
39
|
+
|
|
18
40
|
export interface CodeChunk {
|
|
19
41
|
content: string;
|
|
20
42
|
filePath: string;
|
|
@@ -129,7 +151,10 @@ export const BUILT_IN_IGNORE_DIRS: readonly string[] = [
|
|
|
129
151
|
* generically by the isGitBoundary rule below, not a path convention.)
|
|
130
152
|
*/
|
|
131
153
|
const BUILT_IN_IGNORE_FILE_PATTERNS: readonly string[] = [
|
|
132
|
-
|
|
154
|
+
// NOTE: the `.env` family and every other secret-bearing FILE KIND lives in
|
|
155
|
+
// `isSecretFile` below, not here. This glob engine cannot express negation
|
|
156
|
+
// (`.env.example` must stay collectable) and its unanchored substring
|
|
157
|
+
// matching would make `.env.*` also swallow `.environment.ts`.
|
|
133
158
|
'.DS_Store',
|
|
134
159
|
'*.log',
|
|
135
160
|
'*.lock',
|
|
@@ -143,6 +168,57 @@ const BUILT_IN_IGNORE_FILE_PATTERNS: readonly string[] = [
|
|
|
143
168
|
'/tests/fixtures/*',
|
|
144
169
|
];
|
|
145
170
|
|
|
171
|
+
/**
|
|
172
|
+
* Files whose CONTENT is a credential rather than code. Today these are
|
|
173
|
+
* excluded only INCIDENTALLY — `.pem`, `.key` and friends carry no
|
|
174
|
+
* allowlisted extension, so nothing chunks them. That protection evaporates
|
|
175
|
+
* the moment the extension allowlist widens (as it did for `.sh`/`.lua`), so
|
|
176
|
+
* the exclusion is made explicit here and becomes a defended invariant:
|
|
177
|
+
* unlike `ignorePatterns`, this predicate is NOT caller-overridable.
|
|
178
|
+
*
|
|
179
|
+
* Expressed as a predicate rather than glob strings because `shouldIgnore`'s
|
|
180
|
+
* engine has no negation and matches globs as unanchored substrings — neither
|
|
181
|
+
* property can state "every `.env.*` EXCEPT `.env.example`".
|
|
182
|
+
*
|
|
183
|
+
* Precision notes (over-exclusion is a fidelity failure in its own right):
|
|
184
|
+
* - `.env` family: `/^\.env(\..+)?$/` matches `.env`, `.env.local`,
|
|
185
|
+
* `.env.production` — and deliberately NOT `.envrc` or `.environment.ts`.
|
|
186
|
+
* - `.env.example` is carved out: it is authority-collected on purpose
|
|
187
|
+
* (AUTHORITY_FILE_MATCHERS) and holds placeholder values, not secrets.
|
|
188
|
+
* It is the doc-truth env_vars authority; excluding it would blind that
|
|
189
|
+
* extractor exactly as the old `process.env` over-scrub once did.
|
|
190
|
+
* - `credentials` is matched ONLY directly inside a dot-directory
|
|
191
|
+
* (`.aws/credentials`, `.docker/credentials`). A bare `credentials/` is a
|
|
192
|
+
* real, common SOURCE directory name (gRPC, auth libraries) and
|
|
193
|
+
* `shouldIgnore` cannot tell a file from a directory at its call sites —
|
|
194
|
+
* an unqualified rule would silently delete that subtree from the index.
|
|
195
|
+
*/
|
|
196
|
+
const SECRET_FILE_PLACEHOLDER_BASENAMES: ReadonlySet<string> = new Set(['.env.example']);
|
|
197
|
+
|
|
198
|
+
const SECRET_FILE_BASENAME_PATTERNS: readonly RegExp[] = [
|
|
199
|
+
/^\.env(\..+)?$/i, // .env, .env.local, .env.production.local
|
|
200
|
+
/^id_(?:rsa|dsa|ecdsa|ed25519)/i, // ssh private keys (and .pub siblings)
|
|
201
|
+
/^\.(?:npmrc|netrc|pgpass)$/i, // registry / ftp / postgres password files
|
|
202
|
+
/^kubeconfig$/i,
|
|
203
|
+
/\.(?:pem|key|p12|pfx|keystore|jks|kubeconfig)$/i,
|
|
204
|
+
];
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* True when `relPath` names a file whose contents are credentials. Applied
|
|
208
|
+
* by `shouldIgnore` (every walker: directory scan, explicit file lists, and
|
|
209
|
+
* the authority-file walk) and by `makeIgnoreMatcher` (server-side backstop
|
|
210
|
+
* for older or misbehaving daemons). Accepts OS-native or POSIX separators.
|
|
211
|
+
*/
|
|
212
|
+
export function isSecretFile(relPath: string): boolean {
|
|
213
|
+
if (!relPath) return false;
|
|
214
|
+
const segments = relPath.split(sep).join('/').split('/');
|
|
215
|
+
const base = segments[segments.length - 1] ?? '';
|
|
216
|
+
if (!base || SECRET_FILE_PLACEHOLDER_BASENAMES.has(base)) return false;
|
|
217
|
+
if (SECRET_FILE_BASENAME_PATTERNS.some((re) => re.test(base))) return true;
|
|
218
|
+
const parent = segments[segments.length - 2];
|
|
219
|
+
return base === 'credentials' && parent !== undefined && parent.startsWith('.');
|
|
220
|
+
}
|
|
221
|
+
|
|
146
222
|
/**
|
|
147
223
|
* Per-directory ignore files the walkers honor, unioned. `.gitignore` is the
|
|
148
224
|
* project's own declaration of generated/vendored paths; `.mnemonikignore`
|
|
@@ -243,6 +319,7 @@ export function makeIgnoreMatcher(
|
|
|
243
319
|
if (!relPath) return false;
|
|
244
320
|
const norm = relPath.split(sep).join('/');
|
|
245
321
|
if (norm.split('/').some((s) => BUILT_IN_IGNORE_DIR_SET.has(s))) return true;
|
|
322
|
+
if (isSecretFile(norm)) return true;
|
|
246
323
|
if (ig) {
|
|
247
324
|
try {
|
|
248
325
|
return ig.ignores(norm);
|
|
@@ -720,6 +797,10 @@ export class CodeScanner {
|
|
|
720
797
|
* (e.g., '.env' should not match '.environment.ts')
|
|
721
798
|
*/
|
|
722
799
|
private shouldIgnore(path: string): boolean {
|
|
800
|
+
// Credential-bearing file kinds first, and outside the overridable
|
|
801
|
+
// `ignorePatterns` list — a caller-supplied pattern set must not be able
|
|
802
|
+
// to opt a project back into indexing its own private keys.
|
|
803
|
+
if (isSecretFile(path)) return true;
|
|
723
804
|
const segments = path.split('/');
|
|
724
805
|
return this.options.ignorePatterns.some((pattern) => {
|
|
725
806
|
if (pattern.includes('*')) {
|
|
@@ -745,10 +826,12 @@ export class CodeScanner {
|
|
|
745
826
|
}
|
|
746
827
|
|
|
747
828
|
/**
|
|
748
|
-
* Parse a file and extract code chunks
|
|
749
|
-
*
|
|
829
|
+
* Parse a file and extract code chunks.
|
|
830
|
+
* Size limit is the shared `MAX_SCANNED_FILE_BYTES` ceiling — the same
|
|
831
|
+
* number the daemon and the server's scanPushSchema enforce, so anything
|
|
832
|
+
* chunked here can always be shipped and stored verbatim.
|
|
750
833
|
*/
|
|
751
|
-
private static readonly MAX_FILE_SIZE =
|
|
834
|
+
private static readonly MAX_FILE_SIZE = MAX_SCANNED_FILE_BYTES;
|
|
752
835
|
|
|
753
836
|
private async parseFile(filePath: string, rootPath: string): Promise<CodeChunk[]> {
|
|
754
837
|
try {
|
|
@@ -1396,9 +1479,19 @@ export class CodeScanner {
|
|
|
1396
1479
|
} else if (isFile && AUTHORITY_FILE_MATCHERS.some((m) => m(rel))) {
|
|
1397
1480
|
try {
|
|
1398
1481
|
let content = await readFile(full, 'utf-8');
|
|
1399
|
-
//
|
|
1400
|
-
//
|
|
1401
|
-
|
|
1482
|
+
// Authority files honor the same single ceiling as chunked files
|
|
1483
|
+
// (MAX_SCANNED_FILE_BYTES). Manifests are tiny; one this large is
|
|
1484
|
+
// anomalous, so say so rather than dropping it silently — a
|
|
1485
|
+
// missing authority file otherwise looks identical to a project
|
|
1486
|
+
// that simply has no manifest.
|
|
1487
|
+
if (content.length > MAX_SCANNED_FILE_BYTES) {
|
|
1488
|
+
logWarn('Authority file exceeds the scan ceiling; excluded from push', {
|
|
1489
|
+
path: rel,
|
|
1490
|
+
size: content.length,
|
|
1491
|
+
limit: MAX_SCANNED_FILE_BYTES,
|
|
1492
|
+
});
|
|
1493
|
+
continue;
|
|
1494
|
+
}
|
|
1402
1495
|
// NUL sanitation (ingestion boundary, daemon side): Postgres
|
|
1403
1496
|
// `text` columns reject the literal NUL byte (U+0000). Authority
|
|
1404
1497
|
// files are shipped verbatim (no chunking), so strip here before
|
package/src/index.ts
CHANGED
|
@@ -9,16 +9,23 @@ export { MCP_INSTRUCTIONS, MCP_INSTRUCTIONS_RAW, getMcpInstructions } from './in
|
|
|
9
9
|
export { USAGE_GUIDE } from './usageGuide.js';
|
|
10
10
|
export {
|
|
11
11
|
CodeScanner,
|
|
12
|
+
MAX_SCANNED_FILE_BYTES,
|
|
12
13
|
AUTHORITY_FILE_MATCHERS,
|
|
13
14
|
BUILT_IN_IGNORE_DIRS,
|
|
14
15
|
makeIgnoreMatcher,
|
|
15
16
|
isGitBoundary,
|
|
16
17
|
FIXTURE_PATH_RE,
|
|
17
18
|
isFixturePath,
|
|
19
|
+
isSecretFile,
|
|
18
20
|
type CodeChunk,
|
|
19
21
|
type ScanOptions,
|
|
20
22
|
} from './codeScanner.js';
|
|
21
|
-
export {
|
|
23
|
+
export {
|
|
24
|
+
SECRET_PATTERNS,
|
|
25
|
+
SECRET_REDACTION_PLACEHOLDER,
|
|
26
|
+
scrubSecrets,
|
|
27
|
+
redactHighEntropyTokens,
|
|
28
|
+
} from './secretPatterns.js';
|
|
22
29
|
export {
|
|
23
30
|
FETCH_TIMEOUT_MS,
|
|
24
31
|
TELEMETRY_TIMEOUT_MS,
|
package/src/secretPatterns.ts
CHANGED
|
@@ -15,13 +15,28 @@
|
|
|
15
15
|
* 2. Stripe-style sk_live_/pk_test_ keys
|
|
16
16
|
* 3. GitHub personal access tokens (ghp_ prefix, exact 36 chars)
|
|
17
17
|
* 4. GitLab personal access tokens (glpat- prefix, 20+ chars)
|
|
18
|
-
* 5. PEM
|
|
18
|
+
* 5. PEM private keys — whole block, header through footer
|
|
19
|
+
* 6. Provider prefixes: AWS (AKIA/ASIA + labeled secret key), JWT,
|
|
20
|
+
* Slack (xox*), Google (AIza), Anthropic (sk-ant-), npm (npm_/npms_)
|
|
21
|
+
* 7. Credentials inside scheme://user:pass@host connection strings
|
|
22
|
+
* 8. Authorization: Bearer headers
|
|
23
|
+
* 9. Standalone high-entropy tokens matching no known prefix
|
|
24
|
+
* (`redactHighEntropyTokens` — heavily guarded, see below)
|
|
19
25
|
*
|
|
20
26
|
* False-positive cost: a few legitimate strings get replaced with the
|
|
21
27
|
* placeholder. False-negative cost: a credential ships to the server and
|
|
22
28
|
* gets stored in a memory. The patterns are deliberately tight (require
|
|
23
29
|
* specific prefixes, length minimums) to keep the false-positive rate low
|
|
24
30
|
* while catching the common credential leak vectors.
|
|
31
|
+
*
|
|
32
|
+
* FIDELITY IS A PEER CONCERN, NOT A ROUNDING ERROR. Over-scrubbing is the
|
|
33
|
+
* same class of failure as under-scrubbing: a pattern that eats prose,
|
|
34
|
+
* identifiers, hashes or paths silently blinds doc-truth's authority
|
|
35
|
+
* extractors — exactly what happened when a `process.env.X` read was
|
|
36
|
+
* redacted as if it were a literal (see ENV_READ_VALUE_RE below). Every
|
|
37
|
+
* pattern here carries positive AND negative tests in
|
|
38
|
+
* tests/SecretPatterns.test.ts, and the entropy detector is additionally
|
|
39
|
+
* guarded against hashes, UUIDs, paths, slugs and identifiers.
|
|
25
40
|
*/
|
|
26
41
|
|
|
27
42
|
export const SECRET_REDACTION_PLACEHOLDER = '[REDACTED]';
|
|
@@ -38,7 +53,40 @@ export const SECRET_PATTERNS: ReadonlyArray<RegExp> = [
|
|
|
38
53
|
/(?:sk|pk)[-_][a-zA-Z0-9]{20,}/g,
|
|
39
54
|
/ghp_[a-zA-Z0-9]{36}/g,
|
|
40
55
|
/glpat-[a-zA-Z0-9-]{20,}/g,
|
|
56
|
+
// PEM private keys. The BLOCK pattern runs first so header→footer (the
|
|
57
|
+
// actual key material) is redacted as one unit; the header-only pattern
|
|
58
|
+
// stays as the fallback for the case a chunk boundary lands between
|
|
59
|
+
// header and footer, where the block never closes inside the chunk.
|
|
60
|
+
// `[\s\S]*?` is lazy so two adjacent keys don't merge into one match.
|
|
61
|
+
/-----BEGIN (?:RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----[\s\S]*?-----END (?:RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----/g,
|
|
41
62
|
/-----BEGIN (?:RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----/g,
|
|
63
|
+
// AWS access key IDs. The 16-char body must be uppercase-alphanumeric and
|
|
64
|
+
// \b-delimited, so prose ("AKIAMIA is a place name") cannot match.
|
|
65
|
+
/\bAKIA[0-9A-Z]{16}\b/g,
|
|
66
|
+
/\bASIA[0-9A-Z]{16}\b/g,
|
|
67
|
+
// AWS secret access key, labeled. The generic key=value pattern above does
|
|
68
|
+
// NOT cover this: its `secret` alternative must be followed immediately by
|
|
69
|
+
// `[:=]`, and here it is followed by `_access_key`.
|
|
70
|
+
/\baws_secret_access_key\s*[:=]\s*[A-Za-z0-9/+=]{40}\b/gi,
|
|
71
|
+
// JWT: three base64url segments. Length minimums keep dotted identifiers
|
|
72
|
+
// (`payload.header.signature`) out.
|
|
73
|
+
/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{5,}\b/g,
|
|
74
|
+
/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g,
|
|
75
|
+
/\bAIza[0-9A-Za-z_-]{35}\b/g,
|
|
76
|
+
/\bsk-ant-[A-Za-z0-9_-]{20,}\b/g,
|
|
77
|
+
/\b(?:npm_|npms_)[A-Za-z0-9]{36,}\b/g,
|
|
78
|
+
// scheme://user:pass@ — only the credential segment is consumed, so the
|
|
79
|
+
// host and path survive for anyone reading the code. The username part is
|
|
80
|
+
// `*` (not `+`) because the no-username form (`redis://:pass@host`) is a
|
|
81
|
+
// real and common shape. The `@` is the anchor that makes this a
|
|
82
|
+
// credential rather than a URL: `https://host:443/path` cannot match
|
|
83
|
+
// because the character classes exclude `/`.
|
|
84
|
+
/\b[a-z][a-z0-9+.-]*:\/\/[^/\s:@]*:[^/\s:@]+@/gi,
|
|
85
|
+
// Authorization: Bearer <token>. The token class deliberately excludes
|
|
86
|
+
// `<` and `$`, so documentation placeholders (`Bearer <your-api-key>`,
|
|
87
|
+
// `Bearer $MNEMONIK_PROXY_TOKEN`) are left intact — redacting those would
|
|
88
|
+
// destroy the instruction without hiding a secret.
|
|
89
|
+
/Authorization\s*:\s*Bearer\s+[A-Za-z0-9._~+/-]+=*/gi,
|
|
42
90
|
];
|
|
43
91
|
|
|
44
92
|
/**
|
|
@@ -57,6 +105,134 @@ export const SECRET_PATTERNS: ReadonlyArray<RegExp> = [
|
|
|
57
105
|
*/
|
|
58
106
|
const ENV_READ_VALUE_RE = /[:=]\s*(?:await\s+)?(?:process\.env[.[]|import\.meta\.env[.[])/;
|
|
59
107
|
|
|
108
|
+
/* ------------------------------------------------------------------ *
|
|
109
|
+
* High-entropy token detector
|
|
110
|
+
*
|
|
111
|
+
* Catches credentials that carry no recognizable provider prefix — the
|
|
112
|
+
* long random blob in `"webhook": "<40 random chars>"`. A naive entropy
|
|
113
|
+
* threshold cannot do this safely: measured over this repository, a
|
|
114
|
+
* camelCase identifier scores 4.49 bits/char against 4.66 for a real AWS
|
|
115
|
+
* secret key, so entropy ALONE separates nothing. The structural guards
|
|
116
|
+
* below carry the discrimination; entropy is only the final filter.
|
|
117
|
+
*
|
|
118
|
+
* Every candidate must clear ALL of:
|
|
119
|
+
* 1. CONTEXT — sits immediately after `=`/`:` or an opening quote.
|
|
120
|
+
* Bare prose positions are never touched, which is what
|
|
121
|
+
* keeps the detector out of documentation.
|
|
122
|
+
* 2. LENGTH — >= 36 characters. The floor started at 32 and was
|
|
123
|
+
* raised by the claim-yield guard: 32-char opaque
|
|
124
|
+
* RESOURCE IDS (Vercel `dpl_`/`prj_`, Stripe object ids)
|
|
125
|
+
* are public identifiers, not credentials, and eating
|
|
126
|
+
* them cost 39 real `symbol_reference` claims in
|
|
127
|
+
* docs/deployment/LAUNCH_PLAN.md. Genuine credential
|
|
128
|
+
* blobs sit at 36+ (GitHub 40, AWS 40, Google 39, a
|
|
129
|
+
* base64 32-byte key 44); shorter non-hex randomness is
|
|
130
|
+
* almost always an object id, and anything hex is
|
|
131
|
+
* already exempt by rule 4.
|
|
132
|
+
* 3. CHARSET MIX — contains lowercase AND uppercase AND a digit.
|
|
133
|
+
* 4. NOT HEX-ISH — hex after stripping `-`/`_` is a digest or UUID
|
|
134
|
+
* (commit SHAs, contentHash, snippet_hash, project ids).
|
|
135
|
+
* 5. NOT STRUCTURED — if every `/`, `-`, `_` separated segment is <= 16
|
|
136
|
+
* chars the token is a path, slug or SCREAMING_SNAKE
|
|
137
|
+
* identifier ("tests/fixtures/docTruth/dogfood-2026-06-06").
|
|
138
|
+
* 6. NOT WORDY — a lowercase run longer than 5 means natural words
|
|
139
|
+
* ("...FromCache..."), not random output.
|
|
140
|
+
* 7. ENTROPY — Shannon entropy >= 4.0 bits/char.
|
|
141
|
+
*
|
|
142
|
+
* Calibrated by sweeping every file this scanner would chunk across this
|
|
143
|
+
* repository (1426 files): 8 tokens fire, every one of them a credential
|
|
144
|
+
* shape — JWT headers, an AWS example secret key, a leaked Stripe
|
|
145
|
+
* `whsec_`, and this suite's own fixtures. Zero prose, zero paths, zero
|
|
146
|
+
* identifiers, zero resource ids.
|
|
147
|
+
*
|
|
148
|
+
* The bias is deliberately toward MISSING a secret rather than mangling
|
|
149
|
+
* text: provider prefixes above are the primary net, this is the backstop.
|
|
150
|
+
* ------------------------------------------------------------------ */
|
|
151
|
+
|
|
152
|
+
const ENTROPY_MIN_LENGTH = 36;
|
|
153
|
+
const ENTROPY_MIN_BITS_PER_CHAR = 4.0;
|
|
154
|
+
const ENTROPY_MAX_STRUCTURED_SEGMENT = 16;
|
|
155
|
+
const ENTROPY_MAX_LOWERCASE_RUN = 5;
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Maximal runs of base64url/base64 characters. `=` is admitted only as
|
|
159
|
+
* trailing padding — allowing it inside the run let a candidate span an
|
|
160
|
+
* assignment (`HARNESS_PROJECT_ID=<uuid>` matched as one token, defeating
|
|
161
|
+
* the UUID exemption).
|
|
162
|
+
*/
|
|
163
|
+
const ENTROPY_CANDIDATE_RE = /[A-Za-z0-9+/_-]{36,}={0,2}/g;
|
|
164
|
+
/** Opening quote, or `=`/`:` with optional whitespace and optional quote. */
|
|
165
|
+
const ENTROPY_CONTEXT_RE = /(?:["'`]|[:=]\s*["'`]?)$/;
|
|
166
|
+
/** `==`, `=>`, `!=`, `<=`, `>=`, `+=` … are comparisons, not assignments. */
|
|
167
|
+
const ENTROPY_OPERATOR_TAIL_RE = /[=!<>+\-*/%&|^]$/;
|
|
168
|
+
const ENTROPY_HEXISH_RE = /^[0-9a-fA-F]+$/;
|
|
169
|
+
const ENTROPY_STRUCTURED_RE = /^[A-Za-z0-9]+(?:[/_-][A-Za-z0-9]+)+$/;
|
|
170
|
+
|
|
171
|
+
function shannonEntropy(token: string): number {
|
|
172
|
+
const counts = new Map<string, number>();
|
|
173
|
+
for (const ch of token) counts.set(ch, (counts.get(ch) ?? 0) + 1);
|
|
174
|
+
let bits = 0;
|
|
175
|
+
for (const count of counts.values()) {
|
|
176
|
+
const p = count / token.length;
|
|
177
|
+
bits -= p * Math.log2(p);
|
|
178
|
+
}
|
|
179
|
+
return bits;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
function maxLowercaseRun(token: string): number {
|
|
183
|
+
let max = 0;
|
|
184
|
+
let current = 0;
|
|
185
|
+
for (const ch of token) {
|
|
186
|
+
if (ch >= 'a' && ch <= 'z') {
|
|
187
|
+
current += 1;
|
|
188
|
+
if (current > max) max = current;
|
|
189
|
+
} else {
|
|
190
|
+
current = 0;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return max;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/** True when `token` looks like random credential material, not text. */
|
|
197
|
+
function isHighEntropySecret(token: string): boolean {
|
|
198
|
+
if (token.length < ENTROPY_MIN_LENGTH) return false;
|
|
199
|
+
const stripped = token.replace(/[-_]/g, '');
|
|
200
|
+
if (stripped.length > 0 && ENTROPY_HEXISH_RE.test(stripped)) return false; // digests, UUIDs
|
|
201
|
+
if (!/[a-z]/.test(token) || !/[A-Z]/.test(token) || !/[0-9]/.test(token)) return false;
|
|
202
|
+
if (
|
|
203
|
+
ENTROPY_STRUCTURED_RE.test(token) &&
|
|
204
|
+
token.split(/[/_-]/).every((seg) => seg.length <= ENTROPY_MAX_STRUCTURED_SEGMENT)
|
|
205
|
+
) {
|
|
206
|
+
return false; // paths, slugs, snake/kebab identifiers
|
|
207
|
+
}
|
|
208
|
+
if (maxLowercaseRun(token) > ENTROPY_MAX_LOWERCASE_RUN) return false; // natural words
|
|
209
|
+
return shannonEntropy(token) >= ENTROPY_MIN_BITS_PER_CHAR;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Redact standalone high-entropy tokens that no provider pattern claimed.
|
|
214
|
+
* Only the token is replaced — the surrounding key, quote and punctuation
|
|
215
|
+
* survive, so `{"webhook": "<secret>"}` stays valid, readable JSON.
|
|
216
|
+
*
|
|
217
|
+
* Exported for direct testing of the guard behavior; production callers
|
|
218
|
+
* should use `scrubSecrets`, which applies this after the pattern sweep.
|
|
219
|
+
*/
|
|
220
|
+
export function redactHighEntropyTokens(text: string): string {
|
|
221
|
+
if (!text) return text;
|
|
222
|
+
return text.replace(ENTROPY_CANDIDATE_RE, (match, offset: number) => {
|
|
223
|
+
const before = text.slice(Math.max(0, offset - 8), offset);
|
|
224
|
+
if (!ENTROPY_CONTEXT_RE.test(before)) return match;
|
|
225
|
+
// Strip the trailing quote (if any) to inspect the operator underneath.
|
|
226
|
+
const operatorContext = before
|
|
227
|
+
.replace(/["'`]$/, '')
|
|
228
|
+
.trimEnd()
|
|
229
|
+
.slice(0, -1);
|
|
230
|
+
if (ENTROPY_OPERATOR_TAIL_RE.test(operatorContext)) return match;
|
|
231
|
+
if (ENV_READ_VALUE_RE.test(before + match)) return match;
|
|
232
|
+
return isHighEntropySecret(match) ? SECRET_REDACTION_PLACEHOLDER : match;
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
|
|
60
236
|
export function scrubSecrets(text: string): string {
|
|
61
237
|
if (!text) return text;
|
|
62
238
|
let result = text;
|
|
@@ -65,5 +241,7 @@ export function scrubSecrets(text: string): string {
|
|
|
65
241
|
ENV_READ_VALUE_RE.test(match) ? match : SECRET_REDACTION_PLACEHOLDER
|
|
66
242
|
);
|
|
67
243
|
}
|
|
68
|
-
|
|
244
|
+
// Backstop for credentials with no recognizable prefix. Runs last so the
|
|
245
|
+
// precise provider patterns get first claim on their own shapes.
|
|
246
|
+
return redactHighEntropyTokens(result);
|
|
69
247
|
}
|