n8n-workflow 2.3.2 → 2.3.3
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/cjs/expression-evaluator-proxy.d.ts.map +1 -1
- package/dist/cjs/expression-evaluator-proxy.js +1 -1
- package/dist/cjs/expression-evaluator-proxy.js.map +1 -1
- package/dist/cjs/expression-sandboxing.d.ts +1 -1
- package/dist/cjs/expression-sandboxing.d.ts.map +1 -1
- package/dist/cjs/expression-sandboxing.js +39 -3
- package/dist/cjs/expression-sandboxing.js.map +1 -1
- package/dist/cjs/typecheck.tsbuildinfo +1 -1
- package/dist/esm/expression-evaluator-proxy.d.ts.map +1 -1
- package/dist/esm/expression-evaluator-proxy.js +2 -2
- package/dist/esm/expression-evaluator-proxy.js.map +1 -1
- package/dist/esm/expression-sandboxing.d.ts +1 -1
- package/dist/esm/expression-sandboxing.d.ts.map +1 -1
- package/dist/esm/expression-sandboxing.js +37 -1
- package/dist/esm/expression-sandboxing.js.map +1 -1
- package/dist/esm/typecheck.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression-evaluator-proxy.d.ts","sourceRoot":"","sources":["../../src/expression-evaluator-proxy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"expression-evaluator-proxy.d.ts","sourceRoot":"","sources":["../../src/expression-evaluator-proxy.ts"],"names":[],"mappings":"AAIA,KAAK,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;AAClF,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAS3C,eAAO,MAAM,eAAe,GAAI,SAAS,YAAY,SAEpD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,SAEhC,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Tournament } from '@n8n/tournament';
|
|
2
|
-
import { DollarSignValidator,
|
|
2
|
+
import { DollarSignValidator, ThisSanitizer, PrototypeSanitizer } from './expression-sandboxing';
|
|
3
3
|
const errorHandler = () => { };
|
|
4
4
|
const tournamentEvaluator = new Tournament(errorHandler, undefined, undefined, {
|
|
5
|
-
before: [
|
|
5
|
+
before: [ThisSanitizer],
|
|
6
6
|
after: [PrototypeSanitizer, DollarSignValidator],
|
|
7
7
|
});
|
|
8
8
|
const evaluator = tournamentEvaluator.execute.bind(tournamentEvaluator);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression-evaluator-proxy.js","sourceRoot":"","sources":["../../src/expression-evaluator-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,
|
|
1
|
+
{"version":3,"file":"expression-evaluator-proxy.js","sourceRoot":"","sources":["../../src/expression-evaluator-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAKjG,MAAM,YAAY,GAAiB,GAAG,EAAE,GAAE,CAAC,CAAC;AAC5C,MAAM,mBAAmB,GAAG,IAAI,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE;IAC9E,MAAM,EAAE,CAAC,aAAa,CAAC;IACvB,KAAK,EAAE,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;CAChD,CAAC,CAAC;AACH,MAAM,SAAS,GAAc,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAEnF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAqB,EAAE,EAAE;IACxD,mBAAmB,CAAC,YAAY,GAAG,OAAO,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IAC3D,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAC"}
|
|
@@ -4,7 +4,7 @@ export declare const DOLLAR_SIGN_ERROR = "Cannot access \"$\" without calling it
|
|
|
4
4
|
/**
|
|
5
5
|
* Prevents regular functions from binding their `this` to the Node.js global.
|
|
6
6
|
*/
|
|
7
|
-
export declare const
|
|
7
|
+
export declare const ThisSanitizer: ASTBeforeHook;
|
|
8
8
|
/**
|
|
9
9
|
* Validates that the $ identifier is only used in allowed contexts.
|
|
10
10
|
* This prevents user errors like `{{ $ }}` which would return the function object itself.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression-sandboxing.d.ts","sourceRoot":"","sources":["../../src/expression-sandboxing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAA8B,MAAM,iBAAiB,CAAC;AAKpG,eAAO,MAAM,aAAa,eAAe,CAAC;AAG1C,eAAO,MAAM,iBAAiB,yDAAuD,CAAC;
|
|
1
|
+
{"version":3,"file":"expression-sandboxing.d.ts","sourceRoot":"","sources":["../../src/expression-sandboxing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAA8B,MAAM,iBAAiB,CAAC;AAKpG,eAAO,MAAM,aAAa,eAAe,CAAC;AAG1C,eAAO,MAAM,iBAAiB,yDAAuD,CAAC;AAqDtF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,aAgG3B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB,EAAE,YAsDjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,YA8DhC,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,OAM1C,CAAC"}
|
|
@@ -7,6 +7,8 @@ export const DOLLAR_SIGN_ERROR = 'Cannot access "$" without calling it as a func
|
|
|
7
7
|
const EMPTY_CONTEXT = b.objectExpression([
|
|
8
8
|
b.property('init', b.identifier('process'), b.objectExpression([])),
|
|
9
9
|
]);
|
|
10
|
+
const SAFE_GLOBAL = b.objectExpression([]);
|
|
11
|
+
const SAFE_THIS = b.sequenceExpression([b.literal(0), EMPTY_CONTEXT]);
|
|
10
12
|
/**
|
|
11
13
|
* Helper to check if an expression is a valid property access with $ as the property.
|
|
12
14
|
* Returns true for obj.$ or obj.nested.$ but false for bare $ or other expression contexts.
|
|
@@ -37,10 +39,11 @@ const isValidDollarPropertyAccess = (expr) => {
|
|
|
37
39
|
(object.type === 'Identifier' || object.type === 'MemberExpression');
|
|
38
40
|
return isPropertyDollar && !isObjectDollar && isObjectValid;
|
|
39
41
|
};
|
|
42
|
+
const GLOBAL_IDENTIFIERS = new Set(['globalThis']);
|
|
40
43
|
/**
|
|
41
44
|
* Prevents regular functions from binding their `this` to the Node.js global.
|
|
42
45
|
*/
|
|
43
|
-
export const
|
|
46
|
+
export const ThisSanitizer = (ast, dataNode) => {
|
|
44
47
|
astVisit(ast, {
|
|
45
48
|
visitCallExpression(path) {
|
|
46
49
|
const { node } = path;
|
|
@@ -89,6 +92,39 @@ export const FunctionThisSanitizer = (ast, dataNode) => {
|
|
|
89
92
|
path.replace(boundFunction);
|
|
90
93
|
return false;
|
|
91
94
|
},
|
|
95
|
+
visitIdentifier(path) {
|
|
96
|
+
this.traverse(path);
|
|
97
|
+
const { node } = path;
|
|
98
|
+
if (GLOBAL_IDENTIFIERS.has(node.name)) {
|
|
99
|
+
const parent = path.parent;
|
|
100
|
+
const isPropertyName = typeof parent === 'object' &&
|
|
101
|
+
parent !== null &&
|
|
102
|
+
'name' in parent &&
|
|
103
|
+
parent.name === 'property';
|
|
104
|
+
if (!isPropertyName)
|
|
105
|
+
path.replace(SAFE_GLOBAL);
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
visitThisExpression(path) {
|
|
109
|
+
this.traverse(path);
|
|
110
|
+
/**
|
|
111
|
+
* Replace `this` with a safe context object.
|
|
112
|
+
* This prevents arrow functions from accessing the real global context:
|
|
113
|
+
*
|
|
114
|
+
* ```js
|
|
115
|
+
* (() => this?.process)() // becomes (() => (0, { process: {} })?.process)()
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* Arrow functions don't have their own `this` binding - they inherit from
|
|
119
|
+
* the outer lexical scope. Without this fix, `this` inside an arrow function
|
|
120
|
+
* would resolve to the Node.js global object, exposing process.env and other
|
|
121
|
+
* sensitive data.
|
|
122
|
+
*
|
|
123
|
+
* We use SAFE_THIS (a sequence expression) instead of EMPTY_CONTEXT directly
|
|
124
|
+
* to ensure the object literal is unambiguously parsed as an expression.
|
|
125
|
+
*/
|
|
126
|
+
path.replace(SAFE_THIS);
|
|
127
|
+
},
|
|
92
128
|
});
|
|
93
129
|
};
|
|
94
130
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression-sandboxing.js","sourceRoot":"","sources":["../../src/expression-sandboxing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,WAAW,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEpG,OAAO,EAAE,4BAA4B,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;AAC1C,MAAM,mBAAmB,GAAG,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,iBAAiB,GAAG,oDAAoD,CAAC;AAEtF,MAAM,aAAa,GAAG,CAAC,CAAC,gBAAgB,CAAC;IACxC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;CACnE,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,2BAA2B,GAAG,CAAC,IAAa,EAAW,EAAE;IAC9D,IACC,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACb,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,KAAK,kBAAkB;QAChC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC;QACrB,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,EAClB,CAAC;QACF,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAE3B,yBAAyB;IACzB,MAAM,gBAAgB,GACrB,OAAO,QAAQ,KAAK,QAAQ;QAC5B,QAAQ,KAAK,IAAI;QACjB,MAAM,IAAI,QAAQ;QAClB,QAAQ,CAAC,IAAI,KAAK,GAAG,CAAC;IAEvB,kDAAkD;IAClD,MAAM,cAAc,GACnB,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC;IAE1F,sEAAsE;IACtE,yDAAyD;IACzD,MAAM,aAAa,GAClB,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,MAAM,IAAI,MAAM;QAChB,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC;IAEtE,OAAO,gBAAgB,IAAI,CAAC,cAAc,IAAI,aAAa,CAAC;AAC7D,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"expression-sandboxing.js","sourceRoot":"","sources":["../../src/expression-sandboxing.ts"],"names":[],"mappings":"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"}
|