@mondaydotcomorg/atp-server 0.19.5 → 0.19.6
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/create-server.js +10 -10
- package/dist/create-server.js.map +1 -1
- package/dist/executor/ast-tracking-runtime.d.ts +6 -1
- package/dist/executor/ast-tracking-runtime.d.ts.map +1 -1
- package/dist/executor/ast-tracking-runtime.js +516 -242
- package/dist/executor/ast-tracking-runtime.js.map +1 -1
- package/package.json +7 -7
- package/src/create-server.ts +10 -10
- package/src/executor/ast-tracking-runtime.ts +516 -242
package/dist/create-server.js
CHANGED
|
@@ -45,9 +45,18 @@ export class AgentToolProtocolServer {
|
|
|
45
45
|
compiler;
|
|
46
46
|
customLogger;
|
|
47
47
|
constructor(config = {}) {
|
|
48
|
-
// Initialize DynamicPolicyRegistry with policies from config
|
|
49
48
|
const initialPolicies = config.execution?.securityPolicies ?? [];
|
|
50
49
|
this.policyRegistry = new DynamicPolicyRegistry(initialPolicies);
|
|
50
|
+
const logLevel = typeof config.logger === 'string' ? config.logger : 'info';
|
|
51
|
+
if (typeof config.logger !== 'object') {
|
|
52
|
+
initializeLogger({
|
|
53
|
+
level: logLevel,
|
|
54
|
+
pretty: process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test',
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
this.customLogger = config.logger;
|
|
59
|
+
}
|
|
51
60
|
this.config = {
|
|
52
61
|
execution: {
|
|
53
62
|
timeout: config.execution?.timeout ?? 30000,
|
|
@@ -136,15 +145,6 @@ export class AgentToolProtocolServer {
|
|
|
136
145
|
log.info('Audit sink configured', { sink: auditSinks[0]?.name });
|
|
137
146
|
}
|
|
138
147
|
}
|
|
139
|
-
if (typeof this.config.logger === 'string') {
|
|
140
|
-
initializeLogger({
|
|
141
|
-
level: this.config.logger,
|
|
142
|
-
pretty: process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test',
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
this.customLogger = this.config.logger;
|
|
147
|
-
}
|
|
148
148
|
// Store compiler if provided (defaults handled in transformCodeWithCompiler)
|
|
149
149
|
if (config.compiler) {
|
|
150
150
|
this.compiler = config.compiler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-server.js","sourceRoot":"","sources":["../src/create-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create-server.js","sourceRoot":"","sources":["../src/create-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
* AST Provenance Tracking Runtime for isolated-vm
|
|
3
3
|
* This code is injected into the isolate and runs INSIDE the sandbox
|
|
4
4
|
* It must be plain JavaScript with no imports
|
|
5
|
+
*
|
|
6
|
+
* This runtime provides comprehensive taint tracking by:
|
|
7
|
+
* 1. Deep-tainting all primitives from tool results
|
|
8
|
+
* 2. Intercepting native methods with re-entry protection
|
|
9
|
+
* 3. Supporting cross-execution tracking via hints
|
|
5
10
|
*/
|
|
6
|
-
export declare const AST_TRACKING_RUNTIME = "\n// Pure JavaScript SHA-256 implementation for digest computation\nfunction sha256(str) {\n\tfunction rightRotate(value, amount) {\n\t\treturn (value >>> amount) | (value << (32 - amount));\n\t}\n\t\n\tconst mathPow = Math.pow;\n\tconst maxWord = mathPow(2, 32);\n\tconst lengthProperty = 'length';\n\tlet i, j;\n\tlet result = '';\n\t\n\tconst words = [];\n\tconst asciiBitLength = str[lengthProperty] * 8;\n\t\n\tlet hash = sha256.h = sha256.h || [];\n\tconst k = sha256.k = sha256.k || [];\n\tlet primeCounter = k[lengthProperty];\n\t\n\tconst isComposite = {};\n\tfor (let candidate = 2; primeCounter < 64; candidate++) {\n\t\tif (!isComposite[candidate]) {\n\t\t\tfor (i = 0; i < 313; i += candidate) {\n\t\t\t\tisComposite[i] = candidate;\n\t\t\t}\n\t\t\thash[primeCounter] = (mathPow(candidate, .5) * maxWord) | 0;\n\t\t\tk[primeCounter++] = (mathPow(candidate, 1 / 3) * maxWord) | 0;\n\t\t}\n\t}\n\t\n\tstr += '\\x80';\n\twhile (str[lengthProperty] % 64 - 56) str += '\\x00';\n\tfor (i = 0; i < str[lengthProperty]; i++) {\n\t\tj = str.charCodeAt(i);\n\t\tif (j >> 8) return;\n\t\twords[i >> 2] |= j << ((3 - i) % 4) * 8;\n\t}\n\twords[words[lengthProperty]] = ((asciiBitLength / maxWord) | 0);\n\twords[words[lengthProperty]] = (asciiBitLength);\n\t\n\tfor (j = 0; j < words[lengthProperty];) {\n\t\tconst w = words.slice(j, j += 16);\n\t\tconst oldHash = hash;\n\t\thash = hash.slice(0, 8);\n\t\t\n\t\tfor (i = 0; i < 64; i++) {\n\t\t\tconst w15 = w[i - 15], w2 = w[i - 2];\n\t\t\t\n\t\t\tconst a = hash[0], e = hash[4];\n\t\t\tconst temp1 = hash[7]\n\t\t\t\t+ (rightRotate(e, 6) ^ rightRotate(e, 11) ^ rightRotate(e, 25))\n\t\t\t\t+ ((e & hash[5]) ^ ((~e) & hash[6]))\n\t\t\t\t+ k[i]\n\t\t\t\t+ (w[i] = (i < 16) ? w[i] : (\n\t\t\t\t\t\tw[i - 16]\n\t\t\t\t\t\t+ (rightRotate(w15, 7) ^ rightRotate(w15, 18) ^ (w15 >>> 3))\n\t\t\t\t\t\t+ w[i - 7]\n\t\t\t\t\t\t+ (rightRotate(w2, 17) ^ rightRotate(w2, 19) ^ (w2 >>> 10))\n\t\t\t\t\t) | 0\n\t\t\t\t);\n\t\t\tconst temp2 = (rightRotate(a, 2) ^ rightRotate(a, 13) ^ rightRotate(a, 22))\n\t\t\t\t+ ((a & hash[1]) ^ (a & hash[2]) ^ (hash[1] & hash[2]));\n\t\t\t\n\t\t\thash = [(temp1 + temp2) | 0].concat(hash);\n\t\t\thash[4] = (hash[4] + temp1) | 0;\n\t\t}\n\t\t\n\t\tfor (i = 0; i < 8; i++) {\n\t\t\thash[i] = (hash[i] + oldHash[i]) | 0;\n\t\t}\n\t}\n\t\n\tfor (i = 0; i < 8; i++) {\n\t\tfor (j = 3; j + 1; j--) {\n\t\t\tconst b = (hash[i] >> (j * 8)) & 255;\n\t\t\tresult += ((b < 16) ? 0 : '') + b.toString(16);\n\t\t}\n\t}\n\t\n\t// Convert hex to base64url\n\tconst hex = result;\n\tconst bytes = [];\n\tfor (let i = 0; i < hex.length; i += 2) {\n\t\tbytes.push(parseInt(hex.substring(i, i + 2), 16));\n\t}\n\tlet binary = '';\n\tfor (let i = 0; i < bytes.length; i++) {\n\t\tbinary += String.fromCharCode(bytes[i]);\n\t}\n\tconst base64 = btoa(binary);\n\treturn base64.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n\nconst __astTracker = {\n\tmetadata: new Map(),\n\tnextId: 0,\n\thints: new Map(globalThis.__provenance_hints || []),\n\thintValues: new Map(globalThis.__provenance_hint_values || []),\n\t\n\t// SHA-256 digest computation to match server-side\n\tcomputeDigest(value) {\n\t\ttry {\n\t\t\tconst str = JSON.stringify(value);\n\t\t\treturn sha256(str);\n\t\t} catch (e) {\n\t\t\treturn null;\n\t\t}\n\t},\n\t\n\tgetId(value) {\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tif (!value.__prov_id__) {\n\t\t\t\tconst id = 'tracked_' + this.nextId++;\n\t\t\t\ttry {\n\t\t\t\t\tObject.defineProperty(value, '__prov_id__', {\n\t\t\t\t\t\tvalue: id,\n\t\t\t\t\t\twritable: false,\n\t\t\t\t\t\tenumerable: false,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn 'temp_' + Date.now() + '_' + Math.random();\n\t\t\t\t}\n\t\t\t\treturn id;\n\t\t\t}\n\t\t\treturn value.__prov_id__;\n\t\t}\n\t\treturn 'primitive_' + Date.now() + '_' + Math.random();\n\t},\n\t\n\ttrack(value, source, deps) {\n\t\ttry {\n\t\t\tconst id = this.getId(value);\n\t\t\tthis.metadata.set(id, { id, source, deps: deps || [] });\n\t\t\tconsole.log('[__track] Stored metadata:', id, 'source:', source.type, 'metadataSize:', this.metadata.size);\n\t\t\treturn value;\n\t\t} catch (error) {\n\t\t\tconsole.error('[__track] Error:', error);\n\t\t\treturn value;\n\t\t}\n\t},\n\t\n\ttrackBinary(left, right, operator) {\n\t\t// Perform the actual operation\n\t\tlet result;\n\t\tswitch (operator) {\n\t\t\tcase '+': result = left + right; break;\n\t\t\tcase '-': result = left - right; break;\n\t\t\tcase '*': result = left * right; break;\n\t\t\tcase '/': result = left / right; break;\n\t\t\tcase '%': result = left % right; break;\n\t\t\tcase '==': result = left == right; break;\n\t\t\tcase '===': result = left === right; break;\n\t\t\tcase '!=': result = left != right; break;\n\t\t\tcase '!==': result = left !== right; break;\n\t\t\tcase '<': result = left < right; break;\n\t\t\tcase '>': result = left > right; break;\n\t\t\tcase '<=': result = left <= right; break;\n\t\t\tcase '>=': result = left >= right; break;\n\t\t\tcase '&&': result = left && right; break;\n\t\t\tcase '||': result = left || right; break;\n\t\t\tdefault: result = left;\n\t\t}\n\t\t\n\t\t// Check if either operand has provenance\n\t\tlet hasToolSource = false;\n\t\tlet toolMetadata = null;\n\t\t\n\t\t// Helper to check primitive provenance\n\t\tconst checkPrimitive = (value) => {\n\t\t\tif (typeof value !== 'string' && typeof value !== 'number') {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\t// Check tainted key first\n\t\t\tconst taintedKey = 'tainted:' + String(value);\n\t\t\tconst taintedMeta = this.metadata.get(taintedKey);\n\t\t\tif (taintedMeta && taintedMeta.source && taintedMeta.source.type === 'tool') {\n\t\t\t\treturn taintedMeta;\n\t\t\t}\n\t\t\t\n\t\t\t// Check hint-based tracking\n\t\t\tconst digest = this.computeDigest(value);\n\t\t\tconst hintMeta = this.hints.get(digest);\n\t\t\tif (hintMeta && hintMeta.source && hintMeta.source.type === 'tool') {\n\t\t\t\treturn hintMeta;\n\t\t\t}\n\t\t\t\n\t\t\t// Check primitive map (id:key:value format)\n\t\t\tfor (const [key, meta] of this.metadata.entries()) {\n\t\t\t\tif (!key.startsWith('tainted:') && key.includes(':')) {\n\t\t\t\t\tconst parts = key.split(':');\n\t\t\t\t\tif (parts.length >= 3) {\n\t\t\t\t\t\tconst primitiveValue = parts.slice(2).join(':');\n\t\t\t\t\t\tif (primitiveValue === String(value) && meta.source && meta.source.type === 'tool') {\n\t\t\t\t\t\t\treturn meta;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn null;\n\t\t};\n\t\t\n\t\t// Check left operand\n\t\tif (typeof left === 'object' && left && left.__prov_id__) {\n\t\t\tconst leftMeta = this.metadata.get(left.__prov_id__);\n\t\t\tif (leftMeta && leftMeta.source && leftMeta.source.type === 'tool') {\n\t\t\t\thasToolSource = true;\n\t\t\t\ttoolMetadata = leftMeta;\n\t\t\t}\n\t\t} else {\n\t\t\tconst primMeta = checkPrimitive(left);\n\t\t\tif (primMeta) {\n\t\t\t\thasToolSource = true;\n\t\t\t\ttoolMetadata = primMeta;\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Check right operand\n\t\tif (!hasToolSource) {\n\t\t\tif (typeof right === 'object' && right && right.__prov_id__) {\n\t\t\t\tconst rightMeta = this.metadata.get(right.__prov_id__);\n\t\t\t\tif (rightMeta && rightMeta.source && rightMeta.source.type === 'tool') {\n\t\t\t\t\thasToolSource = true;\n\t\t\t\t\ttoolMetadata = rightMeta;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst primMeta = checkPrimitive(right);\n\t\t\t\tif (primMeta) {\n\t\t\t\t\thasToolSource = true;\n\t\t\t\t\ttoolMetadata = primMeta;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t// If result is a string and has tool-sourced operand, mark it as tainted\n\t\tif (hasToolSource && toolMetadata && (typeof result === 'string' || typeof result === 'number')) {\n\t\t\tconst taintedKey = 'tainted:' + String(result);\n\t\t\t// Ensure metadata has all required fields, preserving readers from source\n\t\t\tconst fullMetadata = {\n\t\t\t\t...toolMetadata,\n\t\t\t\treaders: toolMetadata.readers || { type: 'restricted', readers: [] },\n\t\t\t\tdependencies: toolMetadata.dependencies || toolMetadata.deps || []\n\t\t\t};\n\t\t\tthis.metadata.set(taintedKey, fullMetadata);\n\t\t}\n\t\t\n\t\treturn result;\n\t},\n\t\n\ttrackAssign(name, value) {\n\t\treturn value;\n\t},\n\t\n\tasync trackMethod(object, method, args) {\n\t\t// Recursively wrap tainted primitives in arguments before calling the method\n\t\tfunction wrapTaintedInArgs(val, visited = new WeakSet()) {\n\t\t\tif (val === null || val === undefined) return val;\n\t\t\t\n\t\t\t// Check if this value has provenance\n\t\t\tconst prov = this.checkProvenance(val);\n\t\t\tif (prov && (typeof val === 'string' || typeof val === 'number')) {\n\t\t\t\t// Wrap tainted primitive\n\t\t\t\treturn { __tainted_value: val, __prov_meta: prov };\n\t\t\t}\n\t\t\t\n\t\t\t// Recursively process objects/arrays\n\t\t\tif (typeof val === 'object') {\n\t\t\t\tif (visited.has(val)) return val;\n\t\t\t\tvisited.add(val);\n\t\t\t\t\n\t\t\t\tif (Array.isArray(val)) {\n\t\t\t\t\treturn val.map(item => wrapTaintedInArgs.call(this, item, visited));\n\t\t\t\t} else {\n\t\t\t\t\tconst wrapped = {};\n\t\t\t\t\tfor (const [key, v] of Object.entries(val)) {\n\t\t\t\t\t\twrapped[key] = wrapTaintedInArgs.call(this, v, visited);\n\t\t\t\t\t}\n\t\t\t\t\treturn wrapped;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn val;\n\t\t}\n\t\t\n\t\t// Wrap arguments\n\t\tconst wrappedArgs = args.map(arg => wrapTaintedInArgs.call(this, arg));\n\t\t\n\t\t// Call the method with wrapped arguments\n\t\tif (typeof object === 'object' && object !== null && method in object) {\n\t\t\tconst result = await object[method](...wrappedArgs);\n\t\t\t\n\t\t\t// Track the result\n\t\t\tif (result && typeof result === 'object') {\n\t\t\t\tconst id = this.getId(result);\n\t\t\t\t\n\t\t\t\t// Extract authorized readers from common param patterns (email, userId, username, user)\n\t\t\t\t// Match server-side logic in sandbox-builder.ts (lines 459-470)\n\t\t\t\tlet authorizedReaders = [];\n\t\t\t\tfor (const arg of args) {\n\t\t\t\t\tif (arg && typeof arg === 'object') {\n\t\t\t\t\t\t// Check for user identifier fields (email, user, userId only - no generic 'id')\n\t\t\t\t\t\tconst value = arg.email || arg.user || arg.userId;\n\t\t\t\t\t\tif (typeof value === 'string' && value.length > 0) {\n\t\t\t\t\t\t\tauthorizedReaders.push(value);\n\t\t\t\t\t\t\tbreak; // Only take first identifier\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// If no email found, use tool-scoped authorization (matches server logic line 467-470)\n\t\t\t\tif (authorizedReaders.length === 0) {\n\t\t\t\t\tauthorizedReaders = ['tool:' + method];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Tool data should be restricted by default to prevent exfiltration\n\t\t\t\tconst metadata = { \n\t\t\t\t\tid, \n\t\t\t\t\tsource: { \n\t\t\t\t\t\ttype: 'tool', \n\t\t\t\t\t\toperation: method, \n\t\t\t\t\t\ttoolName: method, \n\t\t\t\t\t\ttimestamp: Date.now() \n\t\t\t\t\t},\n\t\t\t\t\treaders: { type: 'restricted', readers: authorizedReaders },\n\t\t\t\t\tdeps: [this.getId(object), ...args.map(a => this.getId(a))],\n\t\t\t\t\tdependencies: []\n\t\t\t\t};\n\t\t\t\tthis.metadata.set(id, metadata);\n\t\t\t\t\n\t\t\t\t\t\t// Track primitive properties for token emission\n\t\t\t\t\t\tfor (const key in result) {\n\t\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(result, key)) {\n\t\t\t\t\t\t\t\tconst value = result[key];\n\t\t\t\t\t\t\t\tif (typeof value === 'string' || typeof value === 'number') {\n\t\t\t\t\t\t\t\t\t// Check if this primitive matches any hints\n\t\t\t\t\t\t\t\t\tconst digest = this.computeDigest(value);\n\t\t\t\t\t\t\t\t\tconst hintMeta = this.hints.get(digest);\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tconst primitiveKey = id + ':' + key + ':' + String(value);\n\t\t\t\t\t\t\t\t\t// Use hint metadata if available, otherwise use result metadata\n\t\t\t\t\t\t\t\t\tthis.metadata.set(primitiveKey, hintMeta || metadata);\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t// Also store by digest for cross-execution matching\n\t\t\t\t\t\t\t\t\tif (hintMeta) {\n\t\t\t\t\t\t\t\t\t\tconst taintedKey = 'tainted:' + String(value);\n\t\t\t\t\t\t\t\t\t\tthis.metadata.set(taintedKey, hintMeta);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn result;\n\t\t}\n\t\treturn undefined;\n\t},\n\t\n\ttrackTemplate(expressions, quasis) {\n\t\tlet result = '';\n\t\tlet hasToolSource = false;\n\t\tlet toolMetadata = null;\n\t\t\n\t\t// Helper to check primitive provenance\n\t\tconst checkPrimitive = (value) => {\n\t\t\tif (typeof value !== 'string' && typeof value !== 'number') {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\t// Check tainted key first\n\t\t\tconst taintedKey = 'tainted:' + String(value);\n\t\t\tconst taintedMeta = this.metadata.get(taintedKey);\n\t\t\tif (taintedMeta && taintedMeta.source && taintedMeta.source.type === 'tool') {\n\t\t\t\treturn taintedMeta;\n\t\t\t}\n\t\t\t\n\t\t\t// Check hint-based tracking\n\t\t\tconst digest = this.computeDigest(value);\n\t\t\tconst hintMeta = this.hints.get(digest);\n\t\t\tif (hintMeta && hintMeta.source && hintMeta.source.type === 'tool') {\n\t\t\t\treturn hintMeta;\n\t\t\t}\n\t\t\t\n\t\t\t// Check primitive map (id:key:value format)\n\t\t\tfor (const [key, meta] of this.metadata.entries()) {\n\t\t\t\tif (!key.startsWith('tainted:') && key.includes(':')) {\n\t\t\t\t\tconst parts = key.split(':');\n\t\t\t\t\tif (parts.length >= 3) {\n\t\t\t\t\t\tconst primitiveValue = parts.slice(2).join(':');\n\t\t\t\t\t\tif (primitiveValue === String(value) && meta.source && meta.source.type === 'tool') {\n\t\t\t\t\t\t\treturn meta;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn null;\n\t\t};\n\t\t\n\t\tfor (let i = 0; i < quasis.length; i++) {\n\t\t\tresult += quasis[i] || '';\n\t\t\tif (i < expressions.length) {\n\t\t\t\tconst expr = expressions[i];\n\t\t\t\tresult += String(expr);\n\t\t\t\t\n\t\t\t\t// Check if expression has provenance\n\t\t\t\tif (!hasToolSource) {\n\t\t\t\t\t// Check object provenance\n\t\t\t\t\tif (typeof expr === 'object' && expr && expr.__prov_id__) {\n\t\t\t\t\t\tconst exprMeta = this.metadata.get(expr.__prov_id__);\n\t\t\t\t\t\tif (exprMeta && exprMeta.source && exprMeta.source.type === 'tool') {\n\t\t\t\t\t\t\thasToolSource = true;\n\t\t\t\t\t\t\ttoolMetadata = exprMeta;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst primMeta = checkPrimitive(expr);\n\t\t\t\t\t\tif (primMeta) {\n\t\t\t\t\t\t\thasToolSource = true;\n\t\t\t\t\t\t\ttoolMetadata = primMeta;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t// If template contains tool-sourced data, mark result as tainted\n\t\tif (hasToolSource && toolMetadata) {\n\t\t\tconst taintedKey = 'tainted:' + result;\n\t\t\t// Ensure metadata has all required fields, preserving readers from source\n\t\t\tconst fullMetadata = {\n\t\t\t\t...toolMetadata,\n\t\t\t\treaders: toolMetadata.readers || { type: 'restricted', readers: [] },\n\t\t\t\tdependencies: toolMetadata.dependencies || toolMetadata.deps || []\n\t\t\t};\n\t\t\tthis.metadata.set(taintedKey, fullMetadata);\n\t\t}\n\t\t\n\t\treturn result;\n\t},\n\t\n\tgetMetadata(value) {\n\t\tconst id = typeof value === 'object' && value && value.__prov_id__;\n\t\treturn id ? this.metadata.get(id) : null;\n\t},\n\t\n\tgetAllMetadata() {\n\t\treturn Array.from(this.metadata.entries());\n\t},\n\t\n\t// Check if a value or any nested value has tool-sourced provenance\n\tcheckProvenance(value) {\n\t\tif (value === null || value === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\t// Check if it's an object with __prov_id__\n\t\tif (typeof value === 'object' && value.__prov_id__) {\n\t\t\tconst meta = this.metadata.get(value.__prov_id__);\n\t\t\tif (meta && meta.source && meta.source.type === 'tool') {\n\t\t\t\treturn meta;\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Check if it's a primitive with tainted metadata\n\t\tif (typeof value === 'string' || typeof value === 'number') {\n\t\t\tconst taintedKey = 'tainted:' + String(value);\n\t\t\tconst taintedMeta = this.metadata.get(taintedKey);\n\t\t\tif (taintedMeta && taintedMeta.source && taintedMeta.source.type === 'tool') {\n\t\t\t\treturn taintedMeta;\n\t\t\t}\n\t\t\t\n\t\t\t// Check primitive map\n\t\t\tfor (const [key, meta] of this.metadata.entries()) {\n\t\t\t\tif (!key.startsWith('tainted:') && key.includes(':')) {\n\t\t\t\t\tconst parts = key.split(':');\n\t\t\t\t\tif (parts.length >= 3) {\n\t\t\t\t\t\tconst primitiveValue = parts.slice(2).join(':');\n\t\t\t\t\t\tif (primitiveValue === String(value) && meta.source && meta.source.type === 'tool') {\n\t\t\t\t\t\t\treturn meta;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// Check hints\n\t\t\tconst digest = this.computeDigest(value);\n\t\t\tconst hintMeta = this.hints.get(digest);\n\t\t\tif (hintMeta && hintMeta.source && hintMeta.source.type === 'tool') {\n\t\t\t\treturn hintMeta;\n\t\t\t}\n\t\t}\n\t\t\n\t\t// For objects/arrays, recursively check all values\n\t\tif (typeof value === 'object') {\n\t\t\tfor (const key in value) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(value, key)) {\n\t\t\t\t\tconst nestedMeta = this.checkProvenance(value[key]);\n\t\t\t\t\tif (nestedMeta) {\n\t\t\t\t\t\treturn nestedMeta;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn null;\n\t}\n};\n\n// Expose tracking functions globally\nglobalThis.__track = (v, s, d) => __astTracker.track(v, s, d);\nglobalThis.__track_binary = (l, r, o) => __astTracker.trackBinary(l, r, o);\nglobalThis.__track_assign = (n, v) => __astTracker.trackAssign(n, v);\nglobalThis.__track_method = (o, m, a) => __astTracker.trackMethod(o, m, a);\nglobalThis.__track_template = (e, q) => __astTracker.trackTemplate(e, q);\nglobalThis.__get_provenance = (v) => __astTracker.getMetadata(v);\nglobalThis.__get_all_metadata = () => __astTracker.getAllMetadata();\nglobalThis.__check_provenance = (v) => __astTracker.checkProvenance(v);\n\n// Mark a string literal as tainted (for cross-execution tracking)\nglobalThis.__mark_tainted = (value) => {\n\t// Check if this value matches a hint by exact digest\n\tconst digest = __astTracker.computeDigest(value);\n\tconst hintMeta = __astTracker.hints.get(digest);\n\tif (hintMeta) {\n\t\tconst taintedKey = 'tainted:' + String(value);\n\t\t__astTracker.metadata.set(taintedKey, hintMeta);\n\t\treturn value;\n\t}\n\t\n\t// ALSO check if this value CONTAINS any hint values (substring match)\n\t// This enables cross-execution tracking for template literals/concatenation\n\tif (typeof value === 'string' && __astTracker.hintValues && __astTracker.hintValues.size > 0) {\n\t\tfor (const [hintValue, metadata] of __astTracker.hintValues.entries()) {\n\t\t\tif (value.includes(hintValue)) {\n\t\t\t\tconst taintedKey = 'tainted:' + String(value);\n\t\t\t\t// Ensure metadata has all required fields, use restricted readers for tool data\n\t\t\t\tconst fullMetadata = {\n\t\t\t\t\t...metadata,\n\t\t\t\t\treaders: metadata.readers || { type: 'restricted', readers: [] },\n\t\t\t\t\tdependencies: metadata.dependencies || metadata.deps || []\n\t\t\t\t};\n\t\t\t\t__astTracker.metadata.set(taintedKey, fullMetadata);\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn value;\n};\n";
|
|
11
|
+
export declare const AST_TRACKING_RUNTIME = "\n// Pure JavaScript SHA-256 implementation for digest computation\nfunction sha256(str) {\n\tfunction rightRotate(value, amount) {\n\t\treturn (value >>> amount) | (value << (32 - amount));\n\t}\n\t\n\tconst mathPow = Math.pow;\n\tconst maxWord = mathPow(2, 32);\n\tconst lengthProperty = 'length';\n\tlet i, j;\n\tlet result = '';\n\t\n\tconst words = [];\n\tconst asciiBitLength = str[lengthProperty] * 8;\n\t\n\tlet hash = sha256.h = sha256.h || [];\n\tconst k = sha256.k = sha256.k || [];\n\tlet primeCounter = k[lengthProperty];\n\t\n\tconst isComposite = {};\n\tfor (let candidate = 2; primeCounter < 64; candidate++) {\n\t\tif (!isComposite[candidate]) {\n\t\t\tfor (i = 0; i < 313; i += candidate) {\n\t\t\t\tisComposite[i] = candidate;\n\t\t\t}\n\t\t\thash[primeCounter] = (mathPow(candidate, .5) * maxWord) | 0;\n\t\t\tk[primeCounter++] = (mathPow(candidate, 1 / 3) * maxWord) | 0;\n\t\t}\n\t}\n\t\n\tstr += '\\x80';\n\twhile (str[lengthProperty] % 64 - 56) str += '\\x00';\n\tfor (i = 0; i < str[lengthProperty]; i++) {\n\t\tj = str.charCodeAt(i);\n\t\tif (j >> 8) return;\n\t\twords[i >> 2] |= j << ((3 - i) % 4) * 8;\n\t}\n\twords[words[lengthProperty]] = ((asciiBitLength / maxWord) | 0);\n\twords[words[lengthProperty]] = (asciiBitLength);\n\t\n\tfor (j = 0; j < words[lengthProperty];) {\n\t\tconst w = words.slice(j, j += 16);\n\t\tconst oldHash = hash;\n\t\thash = hash.slice(0, 8);\n\t\t\n\t\tfor (i = 0; i < 64; i++) {\n\t\t\tconst w15 = w[i - 15], w2 = w[i - 2];\n\t\t\t\n\t\t\tconst a = hash[0], e = hash[4];\n\t\t\tconst temp1 = hash[7]\n\t\t\t\t+ (rightRotate(e, 6) ^ rightRotate(e, 11) ^ rightRotate(e, 25))\n\t\t\t\t+ ((e & hash[5]) ^ ((~e) & hash[6]))\n\t\t\t\t+ k[i]\n\t\t\t\t+ (w[i] = (i < 16) ? w[i] : (\n\t\t\t\t\t\tw[i - 16]\n\t\t\t\t\t\t+ (rightRotate(w15, 7) ^ rightRotate(w15, 18) ^ (w15 >>> 3))\n\t\t\t\t\t\t+ w[i - 7]\n\t\t\t\t\t\t+ (rightRotate(w2, 17) ^ rightRotate(w2, 19) ^ (w2 >>> 10))\n\t\t\t\t\t) | 0\n\t\t\t\t);\n\t\t\tconst temp2 = (rightRotate(a, 2) ^ rightRotate(a, 13) ^ rightRotate(a, 22))\n\t\t\t\t+ ((a & hash[1]) ^ (a & hash[2]) ^ (hash[1] & hash[2]));\n\t\t\t\n\t\t\thash = [(temp1 + temp2) | 0].concat(hash);\n\t\t\thash[4] = (hash[4] + temp1) | 0;\n\t\t}\n\t\t\n\t\tfor (i = 0; i < 8; i++) {\n\t\t\thash[i] = (hash[i] + oldHash[i]) | 0;\n\t\t}\n\t}\n\t\n\tfor (i = 0; i < 8; i++) {\n\t\tfor (j = 3; j + 1; j--) {\n\t\t\tconst b = (hash[i] >> (j * 8)) & 255;\n\t\t\tresult += ((b < 16) ? 0 : '') + b.toString(16);\n\t\t}\n\t}\n\t\n\t// Convert hex to base64url\n\tconst hex = result;\n\tconst bytes = [];\n\tfor (let i = 0; i < hex.length; i += 2) {\n\t\tbytes.push(parseInt(hex.substring(i, i + 2), 16));\n\t}\n\tlet binary = '';\n\tfor (let i = 0; i < bytes.length; i++) {\n\t\tbinary += String.fromCharCode(bytes[i]);\n\t}\n\tconst base64 = btoa(binary);\n\treturn base64.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n\n// Re-entry guard to prevent infinite recursion in wrapped methods\nlet __inTrackingCall = false;\n\nconst __astTracker = {\n\tmetadata: new Map(),\n\tnextId: 0,\n\thints: new Map(globalThis.__provenance_hints || []),\n\thintValues: new Map(globalThis.__provenance_hint_values || []),\n\t// Track tainted objects via WeakMap for O(1) lookup\n\ttaintedObjects: new WeakMap(),\n\t\n\tcomputeDigest(value) {\n\t\tif (__inTrackingCall) return null;\n\t\ttry {\n\t\t\t__inTrackingCall = true;\n\t\t\tconst str = JSON.stringify(value);\n\t\t\t__inTrackingCall = false;\n\t\t\treturn sha256(str);\n\t\t} catch (e) {\n\t\t\t__inTrackingCall = false;\n\t\t\treturn null;\n\t\t}\n\t},\n\t\n\tgetId(value) {\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tif (!value.__prov_id__) {\n\t\t\t\tconst id = 'tracked_' + Date.now() + '_' + (Math.random().toString(36).substring(2, 8));\n\t\t\t\ttry {\n\t\t\t\t\tObject.defineProperty(value, '__prov_id__', {\n\t\t\t\t\t\tvalue: id,\n\t\t\t\t\t\twritable: false,\n\t\t\t\t\t\tenumerable: false,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn 'temp_' + Date.now() + '_' + Math.random();\n\t\t\t\t}\n\t\t\t\treturn id;\n\t\t\t}\n\t\t\treturn value.__prov_id__;\n\t\t}\n\t\treturn 'primitive_' + Date.now() + '_' + Math.random();\n\t},\n\t\n\t// Register a primitive value as tainted\n\tregisterTaintedPrimitive(value, metadata) {\n\t\t// Accept any non-empty string or any valid number (including 0)\n\t\tconst isValidString = typeof value === 'string' && value !== '';\n\t\tconst isValidNumber = typeof value === 'number' && !Number.isNaN(value);\n\t\t\n\t\tif (isValidString || isValidNumber) {\n\t\t\tconst taintedKey = 'tainted:' + String(value);\n\t\t\tthis.metadata.set(taintedKey, {\n\t\t\t\t...metadata,\n\t\t\t\treaders: metadata.readers || { type: 'restricted', readers: [] },\n\t\t\t\tdependencies: metadata.dependencies || metadata.deps || []\n\t\t\t});\n\t\t}\n\t},\n\t\n\t// Deep taint an object - register all nested primitives\n\tdeepTaintObject(obj, metadata, visited = new WeakSet()) {\n\t\tif (!obj || typeof obj !== 'object') return;\n\t\tif (visited.has(obj)) return;\n\t\tvisited.add(obj);\n\t\t\n\t\t// Mark object in WeakMap for fast lookup\n\t\tthis.taintedObjects.set(obj, metadata);\n\t\t\n\t\t// Set __prov_id__ and register in metadata\n\t\tconst id = this.getId(obj);\n\t\tthis.metadata.set(id, metadata);\n\t\t\n\t\t// Register all primitive properties\n\t\tconst keys = Object.keys(obj);\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst key = keys[i];\n\t\t\tconst value = obj[key];\n\t\t\t\n\t\t\tif (typeof value === 'string' || typeof value === 'number') {\n\t\t\t\tthis.registerTaintedPrimitive(value, metadata);\n\t\t\t\t// Also store by object:key:value for additional lookup\n\t\t\t\tconst primitiveKey = id + ':' + key + ':' + String(value);\n\t\t\t\tthis.metadata.set(primitiveKey, metadata);\n\t\t\t} else if (Array.isArray(value)) {\n\t\t\t\t// Taint array and its elements\n\t\t\t\tthis.deepTaintObject(value, metadata, visited);\n\t\t\t\tfor (let j = 0; j < value.length; j++) {\n\t\t\t\t\tconst elem = value[j];\n\t\t\t\t\tif (typeof elem === 'string' || typeof elem === 'number') {\n\t\t\t\t\t\tthis.registerTaintedPrimitive(elem, metadata);\n\t\t\t\t\t} else if (typeof elem === 'object' && elem !== null) {\n\t\t\t\t\t\tthis.deepTaintObject(elem, metadata, visited);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (typeof value === 'object' && value !== null) {\n\t\t\t\tthis.deepTaintObject(value, metadata, visited);\n\t\t\t}\n\t\t}\n\t},\n\t\n\ttrack(value, source, deps) {\n\t\ttry {\n\t\t\tconst id = this.getId(value);\n\t\t\tconst metadata = { \n\t\t\t\tid, \n\t\t\t\tsource, \n\t\t\t\tdeps: deps || [],\n\t\t\t\treaders: source.readers || { type: 'restricted', readers: ['tool:' + (source.tool || source.operation || 'unknown')] },\n\t\t\t\tdependencies: []\n\t\t\t};\n\t\t\tthis.metadata.set(id, metadata);\n\t\t\t\n\t\t\t// Deep taint all nested primitives\n\t\t\tif (value && typeof value === 'object') {\n\t\t\t\tthis.deepTaintObject(value, metadata);\n\t\t\t}\n\t\t\t\n\t\t\treturn value;\n\t\t} catch (error) {\n\t\t\treturn value;\n\t\t}\n\t},\n\t\n\ttrackBinary(left, right, operator) {\n\t\tlet result;\n\t\tswitch (operator) {\n\t\t\tcase '+': result = left + right; break;\n\t\t\tcase '-': result = left - right; break;\n\t\t\tcase '*': result = left * right; break;\n\t\t\tcase '/': result = left / right; break;\n\t\t\tcase '%': result = left % right; break;\n\t\t\tcase '==': result = left == right; break;\n\t\t\tcase '===': result = left === right; break;\n\t\t\tcase '!=': result = left != right; break;\n\t\t\tcase '!==': result = left !== right; break;\n\t\t\tcase '<': result = left < right; break;\n\t\t\tcase '>': result = left > right; break;\n\t\t\tcase '<=': result = left <= right; break;\n\t\t\tcase '>=': result = left >= right; break;\n\t\t\tcase '&&': result = left && right; break;\n\t\t\tcase '||': result = left || right; break;\n\t\t\tdefault: result = left;\n\t\t}\n\t\t\n\t\t// Propagate taint from operands to result\n\t\tconst leftMeta = this.checkProvenance(left);\n\t\tconst rightMeta = this.checkProvenance(right);\n\t\tconst toolMetadata = leftMeta || rightMeta;\n\t\t\n\t\tif (toolMetadata && (typeof result === 'string' || typeof result === 'number')) {\n\t\t\tthis.registerTaintedPrimitive(result, toolMetadata);\n\t\t}\n\t\t\n\t\treturn result;\n\t},\n\t\n\ttrackAssign(name, value) {\n\t\treturn value;\n\t},\n\t\n\tasync trackMethod(object, method, args) {\n\t\t// Wrap tainted primitives in arguments before calling API methods\n\t\tconst self = this;\n\t\tfunction wrapTaintedInArgs(val, visited = new WeakSet()) {\n\t\t\tif (val === null || val === undefined) return val;\n\t\t\t\n\t\t\tconst prov = self.checkProvenance(val);\n\t\t\tif (prov && (typeof val === 'string' || typeof val === 'number')) {\n\t\t\t\treturn { __tainted_value: val, __prov_meta: prov };\n\t\t\t}\n\t\t\t\n\t\t\tif (typeof val === 'object') {\n\t\t\t\tif (visited.has(val)) return val;\n\t\t\t\tvisited.add(val);\n\t\t\t\t\n\t\t\t\tif (Array.isArray(val)) {\n\t\t\t\t\treturn val.map(item => wrapTaintedInArgs(item, visited));\n\t\t\t\t} else {\n\t\t\t\t\tconst wrapped = {};\n\t\t\t\t\tconst keys = Object.keys(val);\n\t\t\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\t\t\twrapped[keys[i]] = wrapTaintedInArgs(val[keys[i]], visited);\n\t\t\t\t\t}\n\t\t\t\t\treturn wrapped;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn val;\n\t\t}\n\t\t\n\t\tconst wrappedArgs = args.map(arg => wrapTaintedInArgs(arg));\n\t\t\n\t\tif (typeof object === 'object' && object !== null && method in object) {\n\t\t\tconst result = await object[method](...wrappedArgs);\n\t\t\t\n\t\t\tif (result && typeof result === 'object') {\n\t\t\t\tconst id = this.getId(result);\n\t\t\t\t\n\t\t\t\tlet authorizedReaders = [];\n\t\t\t\tfor (const arg of args) {\n\t\t\t\t\tif (arg && typeof arg === 'object') {\n\t\t\t\t\t\tconst value = arg.email || arg.user || arg.userId;\n\t\t\t\t\t\tif (typeof value === 'string' && value.length > 0) {\n\t\t\t\t\t\t\tauthorizedReaders.push(value);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (authorizedReaders.length === 0) {\n\t\t\t\t\tauthorizedReaders = ['tool:' + method];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst metadata = { \n\t\t\t\t\tid, \n\t\t\t\t\tsource: { type: 'tool', operation: method, toolName: method, timestamp: Date.now() },\n\t\t\t\t\treaders: { type: 'restricted', readers: authorizedReaders },\n\t\t\t\t\tdeps: [],\n\t\t\t\t\tdependencies: []\n\t\t\t\t};\n\t\t\t\tthis.metadata.set(id, metadata);\n\t\t\t\tthis.deepTaintObject(result, metadata);\n\t\t\t}\n\t\t\t\n\t\t\treturn result;\n\t\t}\n\t\treturn undefined;\n\t},\n\t\n\ttrackTemplate(expressions, quasis) {\n\t\tlet result = '';\n\t\tlet toolMetadata = null;\n\t\t\n\t\tfor (let i = 0; i < quasis.length; i++) {\n\t\t\tresult += quasis[i] || '';\n\t\t\tif (i < expressions.length) {\n\t\t\t\tconst expr = expressions[i];\n\t\t\t\tresult += String(expr);\n\t\t\t\t\n\t\t\t\tif (!toolMetadata) {\n\t\t\t\t\ttoolMetadata = this.checkProvenance(expr);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (toolMetadata) {\n\t\t\tthis.registerTaintedPrimitive(result, toolMetadata);\n\t\t}\n\t\t\n\t\treturn result;\n\t},\n\t\n\t// Propagate taint from source to result for native method calls\n\tpropagateTaint(source, args, result) {\n\t\tif (__inTrackingCall) return result;\n\t\t\n\t\t__inTrackingCall = true;\n\t\ttry {\n\t\t\t// Check if source or any arg is tainted\n\t\t\tlet metadata = this.checkProvenanceInternal(source);\n\t\t\t\n\t\t\tif (!metadata && args) {\n\t\t\t\tfor (let i = 0; i < args.length; i++) {\n\t\t\t\t\tmetadata = this.checkProvenanceInternal(args[i]);\n\t\t\t\t\tif (metadata) break;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// Propagate taint to result\n\t\t\tif (metadata) {\n\t\t\t\tif (typeof result === 'string' || typeof result === 'number') {\n\t\t\t\t\tthis.registerTaintedPrimitive(result, metadata);\n\t\t\t\t} else if (Array.isArray(result)) {\n\t\t\t\t\tthis.deepTaintObject(result, metadata);\n\t\t\t\t} else if (typeof result === 'object' && result !== null) {\n\t\t\t\t\tthis.deepTaintObject(result, metadata);\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\t__inTrackingCall = false;\n\t\t}\n\t\t\n\t\treturn result;\n\t},\n\t\n\tgetMetadata(value) {\n\t\tconst id = typeof value === 'object' && value && value.__prov_id__;\n\t\treturn id ? this.metadata.get(id) : null;\n\t},\n\t\n\tgetAllMetadata() {\n\t\treturn Array.from(this.metadata.entries());\n\t},\n\t\n\t// Internal provenance check (no re-entry guard - caller must set it)\n\tcheckProvenanceInternal(value) {\n\t\tif (value === null || value === undefined) return null;\n\t\t\n\t\t// Fast path: check WeakMap for objects\n\t\tif (typeof value === 'object' && this.taintedObjects.has(value)) {\n\t\t\treturn this.taintedObjects.get(value);\n\t\t}\n\t\t\n\t\t// Check object __prov_id__\n\t\tif (typeof value === 'object' && value.__prov_id__) {\n\t\t\tconst meta = this.metadata.get(value.__prov_id__);\n\t\t\tif (meta && meta.source && meta.source.type === 'tool') {\n\t\t\t\treturn meta;\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Check primitive taint\n\t\tif (typeof value === 'string' || typeof value === 'number') {\n\t\t\tconst taintedKey = 'tainted:' + String(value);\n\t\t\tconst taintedMeta = this.metadata.get(taintedKey);\n\t\t\tif (taintedMeta && taintedMeta.source && taintedMeta.source.type === 'tool') {\n\t\t\t\treturn taintedMeta;\n\t\t\t}\n\t\t\t\n\t\t\t// Check primitive map (object:key:value format)\n\t\t\tfor (const [key, meta] of this.metadata.entries()) {\n\t\t\t\t// Skip non-string keys (could be Symbols)\n\t\t\t\tif (typeof key !== 'string') continue;\n\t\t\t\tif (!key.startsWith('tainted:') && key.includes(':')) {\n\t\t\t\t\tconst parts = key.split(':');\n\t\t\t\t\tif (parts.length >= 3) {\n\t\t\t\t\t\tconst primitiveValue = parts.slice(2).join(':');\n\t\t\t\t\t\tif (primitiveValue === String(value) && meta.source && meta.source.type === 'tool') {\n\t\t\t\t\t\t\treturn meta;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// Check hints (cross-execution)\n\t\t\tconst digest = this.computeDigest(value);\n\t\t\tif (digest) {\n\t\t\t\tconst hintMeta = this.hints.get(digest);\n\t\t\t\tif (hintMeta && hintMeta.source && hintMeta.source.type === 'tool') {\n\t\t\t\t\treturn hintMeta;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// Check substring containment in hint values\n\t\t\tif (typeof value === 'string' && this.hintValues && this.hintValues.size > 0) {\n\t\t\t\tfor (const [hintValue, meta] of this.hintValues.entries()) {\n\t\t\t\t\tif (value.includes(hintValue) && meta.source && meta.source.type === 'tool') {\n\t\t\t\t\t\treturn meta;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Recursively check object properties\n\t\tif (typeof value === 'object') {\n\t\t\tconst keys = Object.keys(value);\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst nestedMeta = this.checkProvenanceInternal(value[keys[i]]);\n\t\t\t\tif (nestedMeta) return nestedMeta;\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn null;\n\t},\n\t\n\t// Public provenance check with re-entry guard\n\tcheckProvenance(value) {\n\t\tif (__inTrackingCall) return null;\n\t\t\n\t\t__inTrackingCall = true;\n\t\ttry {\n\t\t\treturn this.checkProvenanceInternal(value);\n\t\t} finally {\n\t\t\t__inTrackingCall = false;\n\t\t}\n\t}\n};\n\n// ============================================================================\n// NATIVE METHOD INTERCEPTION\n// We store originals and wrap methods with taint propagation\n// ============================================================================\n\nconst __originals = {\n\tString_toUpperCase: String.prototype.toUpperCase,\n\tString_toLowerCase: String.prototype.toLowerCase,\n\tString_slice: String.prototype.slice,\n\tString_substring: String.prototype.substring,\n\tString_substr: String.prototype.substr,\n\tString_trim: String.prototype.trim,\n\tString_trimStart: String.prototype.trimStart,\n\tString_trimEnd: String.prototype.trimEnd,\n\tString_replace: String.prototype.replace,\n\tString_replaceAll: String.prototype.replaceAll,\n\tString_split: String.prototype.split,\n\tString_charAt: String.prototype.charAt,\n\tString_concat: String.prototype.concat,\n\tString_padStart: String.prototype.padStart,\n\tString_padEnd: String.prototype.padEnd,\n\tString_repeat: String.prototype.repeat,\n\tString_normalize: String.prototype.normalize,\n\t\n\tArray_map: Array.prototype.map,\n\tArray_filter: Array.prototype.filter,\n\tArray_reduce: Array.prototype.reduce,\n\tArray_reduceRight: Array.prototype.reduceRight,\n\tArray_join: Array.prototype.join,\n\tArray_slice: Array.prototype.slice,\n\tArray_concat: Array.prototype.concat,\n\tArray_flat: Array.prototype.flat,\n\tArray_flatMap: Array.prototype.flatMap,\n\tArray_find: Array.prototype.find,\n\tArray_every: Array.prototype.every,\n\tArray_some: Array.prototype.some,\n\t\n\tNumber_toFixed: Number.prototype.toFixed,\n\tNumber_toPrecision: Number.prototype.toPrecision,\n\tNumber_toExponential: Number.prototype.toExponential,\n\t\n\tJSON_stringify: JSON.stringify,\n\tJSON_parse: JSON.parse,\n\t\n\tString_ctor: String,\n\tNumber_ctor: Number,\n\tparseInt_fn: parseInt,\n\tparseFloat_fn: parseFloat,\n};\n\n// String method wrappers - use this.valueOf() to get primitive for provenance check\nString.prototype.toUpperCase = function() {\n\tconst result = __originals.String_toUpperCase.call(this);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\nString.prototype.toLowerCase = function() {\n\tconst result = __originals.String_toLowerCase.call(this);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\nString.prototype.slice = function(start, end) {\n\tconst result = __originals.String_slice.call(this, start, end);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\nString.prototype.substring = function(start, end) {\n\tconst result = __originals.String_substring.call(this, start, end);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\nString.prototype.substr = function(start, length) {\n\tconst result = __originals.String_substr.call(this, start, length);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\nString.prototype.trim = function() {\n\tconst result = __originals.String_trim.call(this);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\nString.prototype.trimStart = function() {\n\tconst result = __originals.String_trimStart.call(this);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\nString.prototype.trimEnd = function() {\n\tconst result = __originals.String_trimEnd.call(this);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\nString.prototype.replace = function(searchValue, replaceValue) {\n\tconst result = __originals.String_replace.call(this, searchValue, replaceValue);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\nString.prototype.replaceAll = function(searchValue, replaceValue) {\n\tconst result = __originals.String_replaceAll.call(this, searchValue, replaceValue);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\nString.prototype.split = function(separator, limit) {\n\tconst result = __originals.String_split.call(this, separator, limit);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\nString.prototype.charAt = function(index) {\n\tconst result = __originals.String_charAt.call(this, index);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\nString.prototype.concat = function(...args) {\n\tconst result = __originals.String_concat.apply(this, args);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, args, result);\n};\n\nString.prototype.padStart = function(targetLength, padString) {\n\tconst result = __originals.String_padStart.call(this, targetLength, padString);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\nString.prototype.padEnd = function(targetLength, padString) {\n\tconst result = __originals.String_padEnd.call(this, targetLength, padString);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\nString.prototype.repeat = function(count) {\n\tconst result = __originals.String_repeat.call(this, count);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\nString.prototype.normalize = function(form) {\n\tconst result = __originals.String_normalize.call(this, form);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\n// Array method wrappers\nArray.prototype.map = function(callback, thisArg) {\n\tconst result = __originals.Array_map.call(this, callback, thisArg);\n\treturn __astTracker.propagateTaint(this, [], result);\n};\n\nArray.prototype.filter = function(callback, thisArg) {\n\tconst result = __originals.Array_filter.call(this, callback, thisArg);\n\treturn __astTracker.propagateTaint(this, [], result);\n};\n\nArray.prototype.reduce = function(callback, initialValue) {\n\tconst result = arguments.length > 1 \n\t\t? __originals.Array_reduce.call(this, callback, initialValue)\n\t\t: __originals.Array_reduce.call(this, callback);\n\treturn __astTracker.propagateTaint(this, [], result);\n};\n\nArray.prototype.reduceRight = function(callback, initialValue) {\n\tconst result = arguments.length > 1\n\t\t? __originals.Array_reduceRight.call(this, callback, initialValue)\n\t\t: __originals.Array_reduceRight.call(this, callback);\n\treturn __astTracker.propagateTaint(this, [], result);\n};\n\nArray.prototype.join = function(separator) {\n\tconst result = __originals.Array_join.call(this, separator);\n\treturn __astTracker.propagateTaint(this, [], result);\n};\n\nArray.prototype.slice = function(start, end) {\n\tconst result = __originals.Array_slice.call(this, start, end);\n\treturn __astTracker.propagateTaint(this, [], result);\n};\n\nArray.prototype.concat = function(...args) {\n\tconst result = __originals.Array_concat.apply(this, args);\n\treturn __astTracker.propagateTaint(this, args, result);\n};\n\nArray.prototype.flat = function(depth) {\n\tconst result = __originals.Array_flat.call(this, depth);\n\treturn __astTracker.propagateTaint(this, [], result);\n};\n\nArray.prototype.flatMap = function(callback, thisArg) {\n\tconst result = __originals.Array_flatMap.call(this, callback, thisArg);\n\treturn __astTracker.propagateTaint(this, [], result);\n};\n\nArray.prototype.find = function(callback, thisArg) {\n\tconst result = __originals.Array_find.call(this, callback, thisArg);\n\treturn __astTracker.propagateTaint(this, [], result);\n};\n\nArray.prototype.every = function(callback, thisArg) {\n\treturn __originals.Array_every.call(this, callback, thisArg);\n};\n\nArray.prototype.some = function(callback, thisArg) {\n\treturn __originals.Array_some.call(this, callback, thisArg);\n};\n\n// Number method wrappers - use this.valueOf() to get primitive for provenance check\nNumber.prototype.toFixed = function(digits) {\n\tconst result = __originals.Number_toFixed.call(this, digits);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\nNumber.prototype.toPrecision = function(precision) {\n\tconst result = __originals.Number_toPrecision.call(this, precision);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\nNumber.prototype.toExponential = function(fractionDigits) {\n\tconst result = __originals.Number_toExponential.call(this, fractionDigits);\n\tconst primitiveThis = typeof this === 'object' ? this.valueOf() : this;\n\treturn __astTracker.propagateTaint(primitiveThis, [], result);\n};\n\n// JSON wrappers\nJSON.stringify = function(value, replacer, space) {\n\tconst result = __originals.JSON_stringify(value, replacer, space);\n\treturn __astTracker.propagateTaint(value, [], result);\n};\n\nJSON.parse = function(text, reviver) {\n\tconst result = __originals.JSON_parse(text, reviver);\n\t// If input was tainted, taint the parsed object\n\tif (!__inTrackingCall) {\n\t\t__inTrackingCall = true;\n\t\ttry {\n\t\t\tconst inputMeta = __astTracker.checkProvenanceInternal(text);\n\t\t\tif (inputMeta && result && typeof result === 'object') {\n\t\t\t\t__astTracker.deepTaintObject(result, inputMeta);\n\t\t\t}\n\t\t} finally {\n\t\t\t__inTrackingCall = false;\n\t\t}\n\t}\n\treturn result;\n};\n\n// Global function wrappers\nconst __OrigString = __originals.String_ctor;\nglobalThis.String = function(value) {\n\tif (new.target) {\n\t\treturn new __OrigString(value);\n\t}\n\tconst result = __OrigString(value);\n\treturn __astTracker.propagateTaint(value, [], result);\n};\nObject.setPrototypeOf(globalThis.String, __OrigString);\nglobalThis.String.prototype = __OrigString.prototype;\nglobalThis.String.fromCharCode = __OrigString.fromCharCode;\nglobalThis.String.fromCodePoint = __OrigString.fromCodePoint;\nglobalThis.String.raw = __OrigString.raw;\n\nconst __OrigNumber = __originals.Number_ctor;\nglobalThis.Number = function(value) {\n\tif (new.target) {\n\t\treturn new __OrigNumber(value);\n\t}\n\tconst result = __OrigNumber(value);\n\treturn __astTracker.propagateTaint(value, [], result);\n};\nObject.setPrototypeOf(globalThis.Number, __OrigNumber);\nglobalThis.Number.prototype = __OrigNumber.prototype;\nglobalThis.Number.isNaN = __OrigNumber.isNaN;\nglobalThis.Number.isFinite = __OrigNumber.isFinite;\nglobalThis.Number.isInteger = __OrigNumber.isInteger;\nglobalThis.Number.isSafeInteger = __OrigNumber.isSafeInteger;\nglobalThis.Number.parseFloat = __OrigNumber.parseFloat;\nglobalThis.Number.parseInt = __OrigNumber.parseInt;\nglobalThis.Number.MAX_VALUE = __OrigNumber.MAX_VALUE;\nglobalThis.Number.MIN_VALUE = __OrigNumber.MIN_VALUE;\nglobalThis.Number.NaN = __OrigNumber.NaN;\nglobalThis.Number.NEGATIVE_INFINITY = __OrigNumber.NEGATIVE_INFINITY;\nglobalThis.Number.POSITIVE_INFINITY = __OrigNumber.POSITIVE_INFINITY;\nglobalThis.Number.MAX_SAFE_INTEGER = __OrigNumber.MAX_SAFE_INTEGER;\nglobalThis.Number.MIN_SAFE_INTEGER = __OrigNumber.MIN_SAFE_INTEGER;\nglobalThis.Number.EPSILON = __OrigNumber.EPSILON;\n\nglobalThis.parseInt = function(string, radix) {\n\tconst result = __originals.parseInt_fn(string, radix);\n\treturn __astTracker.propagateTaint(string, [], result);\n};\n\nglobalThis.parseFloat = function(string) {\n\tconst result = __originals.parseFloat_fn(string);\n\treturn __astTracker.propagateTaint(string, [], result);\n};\n\n// ============================================================================\n// GLOBAL TRACKING FUNCTIONS\n// ============================================================================\n\nglobalThis.__track = (v, s, d) => __astTracker.track(v, s, d);\nglobalThis.__track_binary = (l, r, o) => __astTracker.trackBinary(l, r, o);\nglobalThis.__track_assign = (n, v) => __astTracker.trackAssign(n, v);\nglobalThis.__track_method = (o, m, a) => __astTracker.trackMethod(o, m, a);\nglobalThis.__track_template = (e, q) => __astTracker.trackTemplate(e, q);\nglobalThis.__get_provenance = (v) => __astTracker.getMetadata(v);\nglobalThis.__get_all_metadata = () => __astTracker.getAllMetadata();\nglobalThis.__check_provenance = (v) => __astTracker.checkProvenance(v);\n\nglobalThis.__mark_tainted = (value) => {\n\tif (__inTrackingCall) return value;\n\t__inTrackingCall = true;\n\ttry {\n\t\tconst digest = __astTracker.computeDigest(value);\n\t\tif (digest) {\n\t\t\tconst hintMeta = __astTracker.hints.get(digest);\n\t\t\tif (hintMeta) {\n\t\t\t\t__astTracker.registerTaintedPrimitive(value, hintMeta);\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (typeof value === 'string' && __astTracker.hintValues && __astTracker.hintValues.size > 0) {\n\t\t\tfor (const [hintValue, metadata] of __astTracker.hintValues.entries()) {\n\t\t\t\tif (value.includes(hintValue)) {\n\t\t\t\t\t__astTracker.registerTaintedPrimitive(value, metadata);\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} finally {\n\t\t__inTrackingCall = false;\n\t}\n\treturn value;\n};\n";
|
|
7
12
|
//# sourceMappingURL=ast-tracking-runtime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-tracking-runtime.d.ts","sourceRoot":"","sources":["../../src/executor/ast-tracking-runtime.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ast-tracking-runtime.d.ts","sourceRoot":"","sources":["../../src/executor/ast-tracking-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,2s5BAqzBhC,CAAC"}
|