circle-ir 3.81.0 → 3.82.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/analysis/config-loader.d.ts.map +1 -1
- package/dist/analysis/config-loader.js +20 -3
- package/dist/analysis/config-loader.js.map +1 -1
- package/dist/analysis/passes/info-disclosure-stacktrace-pass.d.ts +48 -0
- package/dist/analysis/passes/info-disclosure-stacktrace-pass.d.ts.map +1 -0
- package/dist/analysis/passes/info-disclosure-stacktrace-pass.js +222 -0
- package/dist/analysis/passes/info-disclosure-stacktrace-pass.js.map +1 -0
- package/dist/analysis/passes/unrestricted-file-upload-pass.d.ts +46 -0
- package/dist/analysis/passes/unrestricted-file-upload-pass.d.ts.map +1 -0
- package/dist/analysis/passes/unrestricted-file-upload-pass.js +193 -0
- package/dist/analysis/passes/unrestricted-file-upload-pass.js.map +1 -0
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +6 -0
- package/dist/analyzer.js.map +1 -1
- package/dist/browser/circle-ir.js +348 -3
- package/dist/core/circle-ir-core.cjs +20 -3
- package/dist/core/circle-ir-core.js +20 -3
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/analysis/config-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,UAAU,EACX,MAAM,oBAAoB,CAAC;AAE5B;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,CAEjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,CAiB1E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG;IACtD,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC,CAcA;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,MAAM,EAAE,EACxB,YAAY,EAAE,MAAM,EAAE,GACrB,WAAW,CAQb;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,EA2b1C,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAAW,EA4+CtC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/analysis/config-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,UAAU,EACX,MAAM,oBAAoB,CAAC;AAE5B;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,CAEjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,CAiB1E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG;IACtD,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC,CAcA;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,MAAM,EAAE,EACxB,YAAY,EAAE,MAAM,EAAE,GACrB,WAAW,CAQb;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,EA2b1C,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAAW,EA4+CtC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EA+QhD,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAM9C;AAMD;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,EAAE,UAAU,EA8F5C,CAAC"}
|
|
@@ -1966,9 +1966,26 @@ export const DEFAULT_SANITIZERS = [
|
|
|
1966
1966
|
// JSON.parse (data is validated against JSON grammar, prevents XSS/code injection)
|
|
1967
1967
|
{ method: 'parse', class: 'JSON', removes: ['xss', 'code_injection'] },
|
|
1968
1968
|
// Type coercion (removes string-based injections)
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
{ method: '
|
|
1969
|
+
// Sprint 29 (#113): include external_taint_escape — a numeric cast cannot
|
|
1970
|
+
// carry an unvalidated string payload across a function boundary.
|
|
1971
|
+
{ method: 'parseInt', removes: ['sql_injection', 'nosql_injection', 'command_injection', 'xss', 'external_taint_escape', 'path_traversal', 'code_injection'] },
|
|
1972
|
+
{ method: 'parseFloat', removes: ['sql_injection', 'nosql_injection', 'command_injection', 'external_taint_escape', 'path_traversal', 'code_injection'] },
|
|
1973
|
+
{ method: 'Number', removes: ['sql_injection', 'nosql_injection', 'command_injection', 'external_taint_escape', 'path_traversal', 'code_injection'] },
|
|
1974
|
+
// Sprint 29 (#113): bounds-clamp Math.min / Math.max — when used to bound
|
|
1975
|
+
// a numeric/size value (e.g. `Math.min(size, MAX_BYTES)`), the result is
|
|
1976
|
+
// safely bounded and cannot resource-exhaust downstream. Only suppress
|
|
1977
|
+
// external_taint_escape — these helpers do NOT sanitize string injection.
|
|
1978
|
+
{ method: 'min', class: 'Math', removes: ['external_taint_escape'] },
|
|
1979
|
+
{ method: 'max', class: 'Math', removes: ['external_taint_escape'] },
|
|
1980
|
+
// Sprint 29 (#113): allow-list / membership guards — when an external value
|
|
1981
|
+
// is tested against an allow-list (`ALLOWED.includes(x)`, `set.has(x)`,
|
|
1982
|
+
// `list.contains(x)`) before being forwarded, it cannot escape unbounded.
|
|
1983
|
+
// Only suppress `external_taint_escape`; real string-injection sinks should
|
|
1984
|
+
// still rely on their own escaping.
|
|
1985
|
+
{ method: 'includes', removes: ['external_taint_escape'] },
|
|
1986
|
+
{ method: 'has', removes: ['external_taint_escape'] },
|
|
1987
|
+
{ method: 'contains', removes: ['external_taint_escape'] },
|
|
1988
|
+
{ method: 'indexOf', removes: ['external_taint_escape'] },
|
|
1972
1989
|
// Path sanitization
|
|
1973
1990
|
{ method: 'basename', class: 'path', removes: ['path_traversal'] },
|
|
1974
1991
|
{ method: 'normalize', class: 'path', removes: ['path_traversal'] },
|