circle-ir 3.185.0 → 3.186.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 +85 -0
- package/dist/analysis/config-loader.js.map +1 -1
- package/dist/browser/circle-ir.js +85 -0
- package/dist/core/circle-ir-core.cjs +85 -0
- package/dist/core/circle-ir-core.js +85 -0
- package/package.json +1 -1
|
@@ -13397,6 +13397,91 @@ var DEFAULT_SANITIZERS = [
|
|
|
13397
13397
|
// Command injection - shell escaping
|
|
13398
13398
|
{ method: "quote", class: "shell", removes: ["command_injection"] },
|
|
13399
13399
|
{ method: "escape", class: "shell-escape", removes: ["command_injection"] },
|
|
13400
|
+
// JS/Node — additional XSS/HTML encoders (cognium-dev #213 sixth slice).
|
|
13401
|
+
//
|
|
13402
|
+
// he.encode(x) / he.escape(x) — `he` npm package
|
|
13403
|
+
// sanitizeHtml(x) — `sanitize-html` npm
|
|
13404
|
+
// xss(x) / filterXSS(x) — `xss` npm (Yahoo)
|
|
13405
|
+
// escapeHtml(x) / escapeHTML(x) — common bare helpers
|
|
13406
|
+
// entities.encode(x) / entities.escape(x) — `entities` npm
|
|
13407
|
+
// xssFilters.inHTMLData(x) / inHTMLComment(x) / uriInHTMLData(x)
|
|
13408
|
+
// — `xss-filters` npm (Yahoo)
|
|
13409
|
+
//
|
|
13410
|
+
// `external_taint_escape` is included alongside `xss` — the CWE-668
|
|
13411
|
+
// fallback fires on any call receiving tainted data that the engine
|
|
13412
|
+
// does not otherwise recognize. Since these functions are explicitly
|
|
13413
|
+
// registered as sanitizers (they PURIFY input), they should also
|
|
13414
|
+
// suppress the fallback so a `res.send(sanitizeHtml(x))` flow does
|
|
13415
|
+
// not report an external-taint-escape at the sanitizer call itself.
|
|
13416
|
+
{ method: "encode", class: "he", removes: ["xss", "external_taint_escape"] },
|
|
13417
|
+
{ method: "escape", class: "he", removes: ["xss", "external_taint_escape"] },
|
|
13418
|
+
{ method: "sanitizeHtml", removes: ["xss", "external_taint_escape"] },
|
|
13419
|
+
{ method: "xss", removes: ["xss", "external_taint_escape"] },
|
|
13420
|
+
{ method: "filterXSS", removes: ["xss", "external_taint_escape"] },
|
|
13421
|
+
{ method: "escapeHtml", removes: ["xss", "external_taint_escape"] },
|
|
13422
|
+
{ method: "escapeHTML", removes: ["xss", "external_taint_escape"] },
|
|
13423
|
+
{ method: "encode", class: "entities", removes: ["xss", "external_taint_escape"] },
|
|
13424
|
+
{ method: "escape", class: "entities", removes: ["xss", "external_taint_escape"] },
|
|
13425
|
+
// xss-filters: context-specific helpers, all XSS-safe by construction.
|
|
13426
|
+
{ method: "inHTMLData", class: "xssFilters", removes: ["xss", "external_taint_escape"] },
|
|
13427
|
+
{ method: "inHTMLComment", class: "xssFilters", removes: ["xss", "external_taint_escape"] },
|
|
13428
|
+
{ method: "uriInHTMLData", class: "xssFilters", removes: ["xss", "external_taint_escape"] },
|
|
13429
|
+
// JS/Node — SQL escaping (in addition to the mysql class above).
|
|
13430
|
+
//
|
|
13431
|
+
// SqlString.escape / .escapeId — `sqlstring` npm (raw
|
|
13432
|
+
// escape used by mysql /
|
|
13433
|
+
// node-mysql2 drivers)
|
|
13434
|
+
// pgFormat(sql, ...args) / format(bare) — `pg-format` npm
|
|
13435
|
+
// SQL.raw / SQL(bare) — `sql-template-strings`
|
|
13436
|
+
//
|
|
13437
|
+
// Bare `format` is intentionally NOT registered — it collides with
|
|
13438
|
+
// string.format-style helpers unrelated to SQL. Callers should use the
|
|
13439
|
+
// qualified form.
|
|
13440
|
+
{ method: "escape", class: "SqlString", removes: ["sql_injection", "external_taint_escape"] },
|
|
13441
|
+
{ method: "escapeId", class: "SqlString", removes: ["sql_injection", "external_taint_escape"] },
|
|
13442
|
+
{ method: "format", class: "SqlString", removes: ["sql_injection", "external_taint_escape"] },
|
|
13443
|
+
{ method: "format", class: "pgFormat", removes: ["sql_injection", "external_taint_escape"] },
|
|
13444
|
+
{ method: "ident", class: "pgFormat", removes: ["sql_injection", "external_taint_escape"] },
|
|
13445
|
+
{ method: "literal", class: "pgFormat", removes: ["sql_injection", "external_taint_escape"] },
|
|
13446
|
+
// JS/Node — crypto.randomUUID() and Node's crypto.randomBytes(...)toString()
|
|
13447
|
+
// produce cryptographically-secure typed strings that cannot carry
|
|
13448
|
+
// attacker-injected payload. Registered as type coercion.
|
|
13449
|
+
{ method: "randomUUID", class: "crypto", removes: ["sql_injection", "nosql_injection", "command_injection", "path_traversal", "code_injection", "xss"] },
|
|
13450
|
+
// Bare `randomUUID()` alias — `import { randomUUID } from 'crypto'`.
|
|
13451
|
+
{ method: "randomUUID", removes: ["sql_injection", "nosql_injection", "command_injection", "path_traversal", "code_injection", "xss"] },
|
|
13452
|
+
// JS/Node — URL construction. `new URL(x, base)` (constructor-call
|
|
13453
|
+
// matched by method_name === 'URL') and `URLSearchParams.toString()`
|
|
13454
|
+
// safely encode components for URL context.
|
|
13455
|
+
{ method: "toString", class: "URLSearchParams", removes: ["ssrf", "open_redirect", "xss"] },
|
|
13456
|
+
// Go — additional sanitizers (cognium-dev #213 sixth slice).
|
|
13457
|
+
//
|
|
13458
|
+
// regexp.QuoteMeta(x) — mirror of Python re.escape; strips regex
|
|
13459
|
+
// metacharacters so downstream compile/match
|
|
13460
|
+
// cannot execute attacker-crafted patterns.
|
|
13461
|
+
// bluemonday.Sanitize — dominant Go HTML sanitizer library
|
|
13462
|
+
// (`microcosm-cc/bluemonday`). Called on a
|
|
13463
|
+
// Policy value returned by UGCPolicy() /
|
|
13464
|
+
// StrictPolicy() / etc. Match by method name
|
|
13465
|
+
// alone — Policy is the receiver type.
|
|
13466
|
+
// net.ParseIP(x) — validates the input is a well-formed IP;
|
|
13467
|
+
// returns nil for bad input (developer must
|
|
13468
|
+
// check, but the sanitizer only applies when
|
|
13469
|
+
// the parsed IP flows onward).
|
|
13470
|
+
// sql.Named(name, val) — parameterized query binding.
|
|
13471
|
+
{ method: "QuoteMeta", class: "regexp", removes: ["redos", "code_injection", "external_taint_escape"] },
|
|
13472
|
+
{ method: "Sanitize", class: "bluemonday", removes: ["xss", "external_taint_escape"] },
|
|
13473
|
+
{ method: "Sanitize", class: "Policy", removes: ["xss", "external_taint_escape"] },
|
|
13474
|
+
// Bare `Sanitize` — the receiver is a Policy variable (`p := bluemonday.UGCPolicy(); p.Sanitize(x)`).
|
|
13475
|
+
// `Policy` class-matching only fires when the IR resolves the receiver type;
|
|
13476
|
+
// since Go DFG rarely propagates the type of a locally-assigned variable
|
|
13477
|
+
// from a package factory call, we also register the bare method name.
|
|
13478
|
+
// Narrow FP risk: `Sanitize` bare is uncommon outside bluemonday context.
|
|
13479
|
+
{ method: "Sanitize", removes: ["xss", "external_taint_escape"] },
|
|
13480
|
+
{ method: "SanitizeBytes", class: "bluemonday", removes: ["xss", "external_taint_escape"] },
|
|
13481
|
+
{ method: "SanitizeBytes", class: "Policy", removes: ["xss", "external_taint_escape"] },
|
|
13482
|
+
{ method: "SanitizeBytes", removes: ["xss", "external_taint_escape"] },
|
|
13483
|
+
{ method: "ParseIP", class: "net", removes: ["ssrf", "command_injection", "path_traversal", "external_taint_escape"] },
|
|
13484
|
+
{ method: "Named", class: "sql", removes: ["sql_injection", "external_taint_escape"] },
|
|
13400
13485
|
// =========================================================================
|
|
13401
13486
|
// Python Sanitizers
|
|
13402
13487
|
// =========================================================================
|
|
@@ -12792,6 +12792,91 @@ var DEFAULT_SANITIZERS = [
|
|
|
12792
12792
|
// Command injection - shell escaping
|
|
12793
12793
|
{ method: "quote", class: "shell", removes: ["command_injection"] },
|
|
12794
12794
|
{ method: "escape", class: "shell-escape", removes: ["command_injection"] },
|
|
12795
|
+
// JS/Node — additional XSS/HTML encoders (cognium-dev #213 sixth slice).
|
|
12796
|
+
//
|
|
12797
|
+
// he.encode(x) / he.escape(x) — `he` npm package
|
|
12798
|
+
// sanitizeHtml(x) — `sanitize-html` npm
|
|
12799
|
+
// xss(x) / filterXSS(x) — `xss` npm (Yahoo)
|
|
12800
|
+
// escapeHtml(x) / escapeHTML(x) — common bare helpers
|
|
12801
|
+
// entities.encode(x) / entities.escape(x) — `entities` npm
|
|
12802
|
+
// xssFilters.inHTMLData(x) / inHTMLComment(x) / uriInHTMLData(x)
|
|
12803
|
+
// — `xss-filters` npm (Yahoo)
|
|
12804
|
+
//
|
|
12805
|
+
// `external_taint_escape` is included alongside `xss` — the CWE-668
|
|
12806
|
+
// fallback fires on any call receiving tainted data that the engine
|
|
12807
|
+
// does not otherwise recognize. Since these functions are explicitly
|
|
12808
|
+
// registered as sanitizers (they PURIFY input), they should also
|
|
12809
|
+
// suppress the fallback so a `res.send(sanitizeHtml(x))` flow does
|
|
12810
|
+
// not report an external-taint-escape at the sanitizer call itself.
|
|
12811
|
+
{ method: "encode", class: "he", removes: ["xss", "external_taint_escape"] },
|
|
12812
|
+
{ method: "escape", class: "he", removes: ["xss", "external_taint_escape"] },
|
|
12813
|
+
{ method: "sanitizeHtml", removes: ["xss", "external_taint_escape"] },
|
|
12814
|
+
{ method: "xss", removes: ["xss", "external_taint_escape"] },
|
|
12815
|
+
{ method: "filterXSS", removes: ["xss", "external_taint_escape"] },
|
|
12816
|
+
{ method: "escapeHtml", removes: ["xss", "external_taint_escape"] },
|
|
12817
|
+
{ method: "escapeHTML", removes: ["xss", "external_taint_escape"] },
|
|
12818
|
+
{ method: "encode", class: "entities", removes: ["xss", "external_taint_escape"] },
|
|
12819
|
+
{ method: "escape", class: "entities", removes: ["xss", "external_taint_escape"] },
|
|
12820
|
+
// xss-filters: context-specific helpers, all XSS-safe by construction.
|
|
12821
|
+
{ method: "inHTMLData", class: "xssFilters", removes: ["xss", "external_taint_escape"] },
|
|
12822
|
+
{ method: "inHTMLComment", class: "xssFilters", removes: ["xss", "external_taint_escape"] },
|
|
12823
|
+
{ method: "uriInHTMLData", class: "xssFilters", removes: ["xss", "external_taint_escape"] },
|
|
12824
|
+
// JS/Node — SQL escaping (in addition to the mysql class above).
|
|
12825
|
+
//
|
|
12826
|
+
// SqlString.escape / .escapeId — `sqlstring` npm (raw
|
|
12827
|
+
// escape used by mysql /
|
|
12828
|
+
// node-mysql2 drivers)
|
|
12829
|
+
// pgFormat(sql, ...args) / format(bare) — `pg-format` npm
|
|
12830
|
+
// SQL.raw / SQL(bare) — `sql-template-strings`
|
|
12831
|
+
//
|
|
12832
|
+
// Bare `format` is intentionally NOT registered — it collides with
|
|
12833
|
+
// string.format-style helpers unrelated to SQL. Callers should use the
|
|
12834
|
+
// qualified form.
|
|
12835
|
+
{ method: "escape", class: "SqlString", removes: ["sql_injection", "external_taint_escape"] },
|
|
12836
|
+
{ method: "escapeId", class: "SqlString", removes: ["sql_injection", "external_taint_escape"] },
|
|
12837
|
+
{ method: "format", class: "SqlString", removes: ["sql_injection", "external_taint_escape"] },
|
|
12838
|
+
{ method: "format", class: "pgFormat", removes: ["sql_injection", "external_taint_escape"] },
|
|
12839
|
+
{ method: "ident", class: "pgFormat", removes: ["sql_injection", "external_taint_escape"] },
|
|
12840
|
+
{ method: "literal", class: "pgFormat", removes: ["sql_injection", "external_taint_escape"] },
|
|
12841
|
+
// JS/Node — crypto.randomUUID() and Node's crypto.randomBytes(...)toString()
|
|
12842
|
+
// produce cryptographically-secure typed strings that cannot carry
|
|
12843
|
+
// attacker-injected payload. Registered as type coercion.
|
|
12844
|
+
{ method: "randomUUID", class: "crypto", removes: ["sql_injection", "nosql_injection", "command_injection", "path_traversal", "code_injection", "xss"] },
|
|
12845
|
+
// Bare `randomUUID()` alias — `import { randomUUID } from 'crypto'`.
|
|
12846
|
+
{ method: "randomUUID", removes: ["sql_injection", "nosql_injection", "command_injection", "path_traversal", "code_injection", "xss"] },
|
|
12847
|
+
// JS/Node — URL construction. `new URL(x, base)` (constructor-call
|
|
12848
|
+
// matched by method_name === 'URL') and `URLSearchParams.toString()`
|
|
12849
|
+
// safely encode components for URL context.
|
|
12850
|
+
{ method: "toString", class: "URLSearchParams", removes: ["ssrf", "open_redirect", "xss"] },
|
|
12851
|
+
// Go — additional sanitizers (cognium-dev #213 sixth slice).
|
|
12852
|
+
//
|
|
12853
|
+
// regexp.QuoteMeta(x) — mirror of Python re.escape; strips regex
|
|
12854
|
+
// metacharacters so downstream compile/match
|
|
12855
|
+
// cannot execute attacker-crafted patterns.
|
|
12856
|
+
// bluemonday.Sanitize — dominant Go HTML sanitizer library
|
|
12857
|
+
// (`microcosm-cc/bluemonday`). Called on a
|
|
12858
|
+
// Policy value returned by UGCPolicy() /
|
|
12859
|
+
// StrictPolicy() / etc. Match by method name
|
|
12860
|
+
// alone — Policy is the receiver type.
|
|
12861
|
+
// net.ParseIP(x) — validates the input is a well-formed IP;
|
|
12862
|
+
// returns nil for bad input (developer must
|
|
12863
|
+
// check, but the sanitizer only applies when
|
|
12864
|
+
// the parsed IP flows onward).
|
|
12865
|
+
// sql.Named(name, val) — parameterized query binding.
|
|
12866
|
+
{ method: "QuoteMeta", class: "regexp", removes: ["redos", "code_injection", "external_taint_escape"] },
|
|
12867
|
+
{ method: "Sanitize", class: "bluemonday", removes: ["xss", "external_taint_escape"] },
|
|
12868
|
+
{ method: "Sanitize", class: "Policy", removes: ["xss", "external_taint_escape"] },
|
|
12869
|
+
// Bare `Sanitize` — the receiver is a Policy variable (`p := bluemonday.UGCPolicy(); p.Sanitize(x)`).
|
|
12870
|
+
// `Policy` class-matching only fires when the IR resolves the receiver type;
|
|
12871
|
+
// since Go DFG rarely propagates the type of a locally-assigned variable
|
|
12872
|
+
// from a package factory call, we also register the bare method name.
|
|
12873
|
+
// Narrow FP risk: `Sanitize` bare is uncommon outside bluemonday context.
|
|
12874
|
+
{ method: "Sanitize", removes: ["xss", "external_taint_escape"] },
|
|
12875
|
+
{ method: "SanitizeBytes", class: "bluemonday", removes: ["xss", "external_taint_escape"] },
|
|
12876
|
+
{ method: "SanitizeBytes", class: "Policy", removes: ["xss", "external_taint_escape"] },
|
|
12877
|
+
{ method: "SanitizeBytes", removes: ["xss", "external_taint_escape"] },
|
|
12878
|
+
{ method: "ParseIP", class: "net", removes: ["ssrf", "command_injection", "path_traversal", "external_taint_escape"] },
|
|
12879
|
+
{ method: "Named", class: "sql", removes: ["sql_injection", "external_taint_escape"] },
|
|
12795
12880
|
// =========================================================================
|
|
12796
12881
|
// Python Sanitizers
|
|
12797
12882
|
// =========================================================================
|
|
@@ -12726,6 +12726,91 @@ var DEFAULT_SANITIZERS = [
|
|
|
12726
12726
|
// Command injection - shell escaping
|
|
12727
12727
|
{ method: "quote", class: "shell", removes: ["command_injection"] },
|
|
12728
12728
|
{ method: "escape", class: "shell-escape", removes: ["command_injection"] },
|
|
12729
|
+
// JS/Node — additional XSS/HTML encoders (cognium-dev #213 sixth slice).
|
|
12730
|
+
//
|
|
12731
|
+
// he.encode(x) / he.escape(x) — `he` npm package
|
|
12732
|
+
// sanitizeHtml(x) — `sanitize-html` npm
|
|
12733
|
+
// xss(x) / filterXSS(x) — `xss` npm (Yahoo)
|
|
12734
|
+
// escapeHtml(x) / escapeHTML(x) — common bare helpers
|
|
12735
|
+
// entities.encode(x) / entities.escape(x) — `entities` npm
|
|
12736
|
+
// xssFilters.inHTMLData(x) / inHTMLComment(x) / uriInHTMLData(x)
|
|
12737
|
+
// — `xss-filters` npm (Yahoo)
|
|
12738
|
+
//
|
|
12739
|
+
// `external_taint_escape` is included alongside `xss` — the CWE-668
|
|
12740
|
+
// fallback fires on any call receiving tainted data that the engine
|
|
12741
|
+
// does not otherwise recognize. Since these functions are explicitly
|
|
12742
|
+
// registered as sanitizers (they PURIFY input), they should also
|
|
12743
|
+
// suppress the fallback so a `res.send(sanitizeHtml(x))` flow does
|
|
12744
|
+
// not report an external-taint-escape at the sanitizer call itself.
|
|
12745
|
+
{ method: "encode", class: "he", removes: ["xss", "external_taint_escape"] },
|
|
12746
|
+
{ method: "escape", class: "he", removes: ["xss", "external_taint_escape"] },
|
|
12747
|
+
{ method: "sanitizeHtml", removes: ["xss", "external_taint_escape"] },
|
|
12748
|
+
{ method: "xss", removes: ["xss", "external_taint_escape"] },
|
|
12749
|
+
{ method: "filterXSS", removes: ["xss", "external_taint_escape"] },
|
|
12750
|
+
{ method: "escapeHtml", removes: ["xss", "external_taint_escape"] },
|
|
12751
|
+
{ method: "escapeHTML", removes: ["xss", "external_taint_escape"] },
|
|
12752
|
+
{ method: "encode", class: "entities", removes: ["xss", "external_taint_escape"] },
|
|
12753
|
+
{ method: "escape", class: "entities", removes: ["xss", "external_taint_escape"] },
|
|
12754
|
+
// xss-filters: context-specific helpers, all XSS-safe by construction.
|
|
12755
|
+
{ method: "inHTMLData", class: "xssFilters", removes: ["xss", "external_taint_escape"] },
|
|
12756
|
+
{ method: "inHTMLComment", class: "xssFilters", removes: ["xss", "external_taint_escape"] },
|
|
12757
|
+
{ method: "uriInHTMLData", class: "xssFilters", removes: ["xss", "external_taint_escape"] },
|
|
12758
|
+
// JS/Node — SQL escaping (in addition to the mysql class above).
|
|
12759
|
+
//
|
|
12760
|
+
// SqlString.escape / .escapeId — `sqlstring` npm (raw
|
|
12761
|
+
// escape used by mysql /
|
|
12762
|
+
// node-mysql2 drivers)
|
|
12763
|
+
// pgFormat(sql, ...args) / format(bare) — `pg-format` npm
|
|
12764
|
+
// SQL.raw / SQL(bare) — `sql-template-strings`
|
|
12765
|
+
//
|
|
12766
|
+
// Bare `format` is intentionally NOT registered — it collides with
|
|
12767
|
+
// string.format-style helpers unrelated to SQL. Callers should use the
|
|
12768
|
+
// qualified form.
|
|
12769
|
+
{ method: "escape", class: "SqlString", removes: ["sql_injection", "external_taint_escape"] },
|
|
12770
|
+
{ method: "escapeId", class: "SqlString", removes: ["sql_injection", "external_taint_escape"] },
|
|
12771
|
+
{ method: "format", class: "SqlString", removes: ["sql_injection", "external_taint_escape"] },
|
|
12772
|
+
{ method: "format", class: "pgFormat", removes: ["sql_injection", "external_taint_escape"] },
|
|
12773
|
+
{ method: "ident", class: "pgFormat", removes: ["sql_injection", "external_taint_escape"] },
|
|
12774
|
+
{ method: "literal", class: "pgFormat", removes: ["sql_injection", "external_taint_escape"] },
|
|
12775
|
+
// JS/Node — crypto.randomUUID() and Node's crypto.randomBytes(...)toString()
|
|
12776
|
+
// produce cryptographically-secure typed strings that cannot carry
|
|
12777
|
+
// attacker-injected payload. Registered as type coercion.
|
|
12778
|
+
{ method: "randomUUID", class: "crypto", removes: ["sql_injection", "nosql_injection", "command_injection", "path_traversal", "code_injection", "xss"] },
|
|
12779
|
+
// Bare `randomUUID()` alias — `import { randomUUID } from 'crypto'`.
|
|
12780
|
+
{ method: "randomUUID", removes: ["sql_injection", "nosql_injection", "command_injection", "path_traversal", "code_injection", "xss"] },
|
|
12781
|
+
// JS/Node — URL construction. `new URL(x, base)` (constructor-call
|
|
12782
|
+
// matched by method_name === 'URL') and `URLSearchParams.toString()`
|
|
12783
|
+
// safely encode components for URL context.
|
|
12784
|
+
{ method: "toString", class: "URLSearchParams", removes: ["ssrf", "open_redirect", "xss"] },
|
|
12785
|
+
// Go — additional sanitizers (cognium-dev #213 sixth slice).
|
|
12786
|
+
//
|
|
12787
|
+
// regexp.QuoteMeta(x) — mirror of Python re.escape; strips regex
|
|
12788
|
+
// metacharacters so downstream compile/match
|
|
12789
|
+
// cannot execute attacker-crafted patterns.
|
|
12790
|
+
// bluemonday.Sanitize — dominant Go HTML sanitizer library
|
|
12791
|
+
// (`microcosm-cc/bluemonday`). Called on a
|
|
12792
|
+
// Policy value returned by UGCPolicy() /
|
|
12793
|
+
// StrictPolicy() / etc. Match by method name
|
|
12794
|
+
// alone — Policy is the receiver type.
|
|
12795
|
+
// net.ParseIP(x) — validates the input is a well-formed IP;
|
|
12796
|
+
// returns nil for bad input (developer must
|
|
12797
|
+
// check, but the sanitizer only applies when
|
|
12798
|
+
// the parsed IP flows onward).
|
|
12799
|
+
// sql.Named(name, val) — parameterized query binding.
|
|
12800
|
+
{ method: "QuoteMeta", class: "regexp", removes: ["redos", "code_injection", "external_taint_escape"] },
|
|
12801
|
+
{ method: "Sanitize", class: "bluemonday", removes: ["xss", "external_taint_escape"] },
|
|
12802
|
+
{ method: "Sanitize", class: "Policy", removes: ["xss", "external_taint_escape"] },
|
|
12803
|
+
// Bare `Sanitize` — the receiver is a Policy variable (`p := bluemonday.UGCPolicy(); p.Sanitize(x)`).
|
|
12804
|
+
// `Policy` class-matching only fires when the IR resolves the receiver type;
|
|
12805
|
+
// since Go DFG rarely propagates the type of a locally-assigned variable
|
|
12806
|
+
// from a package factory call, we also register the bare method name.
|
|
12807
|
+
// Narrow FP risk: `Sanitize` bare is uncommon outside bluemonday context.
|
|
12808
|
+
{ method: "Sanitize", removes: ["xss", "external_taint_escape"] },
|
|
12809
|
+
{ method: "SanitizeBytes", class: "bluemonday", removes: ["xss", "external_taint_escape"] },
|
|
12810
|
+
{ method: "SanitizeBytes", class: "Policy", removes: ["xss", "external_taint_escape"] },
|
|
12811
|
+
{ method: "SanitizeBytes", removes: ["xss", "external_taint_escape"] },
|
|
12812
|
+
{ method: "ParseIP", class: "net", removes: ["ssrf", "command_injection", "path_traversal", "external_taint_escape"] },
|
|
12813
|
+
{ method: "Named", class: "sql", removes: ["sql_injection", "external_taint_escape"] },
|
|
12729
12814
|
// =========================================================================
|
|
12730
12815
|
// Python Sanitizers
|
|
12731
12816
|
// =========================================================================
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "circle-ir",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.186.0",
|
|
4
4
|
"description": "High-performance Static Application Security Testing (SAST) library for detecting security vulnerabilities through taint analysis",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|