circle-ir 3.179.0 → 3.181.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 +43 -0
- package/dist/analysis/config-loader.js.map +1 -1
- package/dist/analysis/dependency-versions.d.ts +96 -0
- package/dist/analysis/dependency-versions.d.ts.map +1 -1
- package/dist/analysis/dependency-versions.js +219 -0
- package/dist/analysis/dependency-versions.js.map +1 -1
- package/dist/analysis/passes/deserialization-safety-gate-pass.d.ts.map +1 -1
- package/dist/analysis/passes/deserialization-safety-gate-pass.js +6 -2
- package/dist/analysis/passes/deserialization-safety-gate-pass.js.map +1 -1
- package/dist/analysis/passes/language-sources-pass.d.ts.map +1 -1
- package/dist/analysis/passes/language-sources-pass.js +18 -2
- package/dist/analysis/passes/language-sources-pass.js.map +1 -1
- package/dist/analysis/passes/python-receiver-taint-format-pass.d.ts +64 -0
- package/dist/analysis/passes/python-receiver-taint-format-pass.d.ts.map +1 -0
- package/dist/analysis/passes/python-receiver-taint-format-pass.js +129 -0
- package/dist/analysis/passes/python-receiver-taint-format-pass.js.map +1 -0
- package/dist/analyzer.d.ts +42 -0
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +9 -0
- package/dist/analyzer.js.map +1 -1
- package/dist/browser/circle-ir.js +159 -3
- package/dist/core/circle-ir-core.cjs +43 -0
- package/dist/core/circle-ir-core.js +43 -0
- 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,mBAAmB,EACnB,kBAAkB,EAClB,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;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,mBAAmB,EAAE,GAC7B,kBAAkB,EAAE,CAQtB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,MAAM,EAAE,EACxB,YAAY,EAAE,MAAM,EAAE,EACtB,qBAAqB,GAAE,MAAM,EAAO,GACnC,WAAW,CAYb;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,
|
|
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,mBAAmB,EACnB,kBAAkB,EAClB,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;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,mBAAmB,EAAE,GAC7B,kBAAkB,EAAE,CAQtB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,MAAM,EAAE,EACxB,YAAY,EAAE,MAAM,EAAE,EACtB,qBAAqB,GAAE,MAAM,EAAO,GACnC,WAAW,CAYb;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,EA2jB1C,CAAC;AA+KF,eAAO,MAAM,aAAa,EAAE,WAAW,EA2wDtC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,EAwThD,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,EAiDtD,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAO9C;AAMD;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,EAAE,UAAU,EA8F5C,CAAC"}
|
|
@@ -540,6 +540,35 @@ export const DEFAULT_SOURCES = [
|
|
|
540
540
|
{ method: 'get', class: 'Jedis', type: 'db_input', severity: 'medium', return_tainted: true, languages: ['java'] },
|
|
541
541
|
{ method: 'hget', class: 'Jedis', type: 'db_input', severity: 'medium', return_tainted: true, languages: ['java'] },
|
|
542
542
|
{ method: 'mget', class: 'Jedis', type: 'db_input', severity: 'medium', return_tainted: true, languages: ['java'] },
|
|
543
|
+
// --- Serverless transport channels (cognium-dev #213 first slice) ---
|
|
544
|
+
//
|
|
545
|
+
// AWS Lambda / API Gateway invocation-event properties. The Lambda
|
|
546
|
+
// handler signature `(event, context) => …` (JS/TS) or
|
|
547
|
+
// `def handler(event, context)` (Python) receives an `event` object
|
|
548
|
+
// whose properties carry the untrusted HTTP-request-shaped payload:
|
|
549
|
+
//
|
|
550
|
+
// event.body — request body (string)
|
|
551
|
+
// event.queryStringParameters — `?a=b` params
|
|
552
|
+
// event.multiValueQueryStringParameters — `?a=1&a=2` params
|
|
553
|
+
// event.pathParameters — path template captures
|
|
554
|
+
// event.headers — request headers
|
|
555
|
+
// event.multiValueHeaders — repeated headers
|
|
556
|
+
// event.requestContext — API Gateway request context
|
|
557
|
+
//
|
|
558
|
+
// Vercel Serverless Functions and Cloudflare Workers both use `req`
|
|
559
|
+
// / `request` receivers that are already covered by the Express-
|
|
560
|
+
// style patterns above (line ~398). This block specifically covers
|
|
561
|
+
// the `event`-shaped API Gateway convention that those don't reach.
|
|
562
|
+
{ property: 'body', object: 'event', type: 'http_body', severity: 'high', property_tainted: true, languages: ['javascript', 'typescript'] },
|
|
563
|
+
{ property: 'queryStringParameters', object: 'event', type: 'http_query', severity: 'high', property_tainted: true, languages: ['javascript', 'typescript'] },
|
|
564
|
+
{ property: 'multiValueQueryStringParameters', object: 'event', type: 'http_query', severity: 'high', property_tainted: true, languages: ['javascript', 'typescript'] },
|
|
565
|
+
{ property: 'pathParameters', object: 'event', type: 'http_path', severity: 'high', property_tainted: true, languages: ['javascript', 'typescript'] },
|
|
566
|
+
{ property: 'headers', object: 'event', type: 'http_header', severity: 'high', property_tainted: true, languages: ['javascript', 'typescript'] },
|
|
567
|
+
{ property: 'multiValueHeaders', object: 'event', type: 'http_header', severity: 'high', property_tainted: true, languages: ['javascript', 'typescript'] },
|
|
568
|
+
{ property: 'body', object: 'event', type: 'http_body', severity: 'high', property_tainted: true, languages: ['python'] },
|
|
569
|
+
{ property: 'queryStringParameters', object: 'event', type: 'http_query', severity: 'high', property_tainted: true, languages: ['python'] },
|
|
570
|
+
{ property: 'pathParameters', object: 'event', type: 'http_path', severity: 'high', property_tainted: true, languages: ['python'] },
|
|
571
|
+
{ property: 'headers', object: 'event', type: 'http_header', severity: 'high', property_tainted: true, languages: ['python'] },
|
|
543
572
|
// --- JWT claims (unverified decode — PyJWT / jose / jsonwebtoken / auth0 java-jwt / golang-jwt) ---
|
|
544
573
|
// A JWT's payload is *always* attacker-authored. Even after verification
|
|
545
574
|
// the *contents* of the claims (username, role, custom fields) are not
|
|
@@ -1580,6 +1609,20 @@ export const DEFAULT_SINKS = [
|
|
|
1580
1609
|
// Sandbox/script security
|
|
1581
1610
|
{ method: 'onNewInstance', class: 'SandboxInterceptor', type: 'command_injection', cwe: 'CWE-78', severity: 'critical', arg_positions: [0] },
|
|
1582
1611
|
// Java Log Injection (slf4j / logback / java.util.logging) — CWE-117
|
|
1612
|
+
//
|
|
1613
|
+
// Classification decision — cognium-dev #264: Logger receivers stay
|
|
1614
|
+
// as log_injection (CWE-117), NOT format_string (CWE-134). The real
|
|
1615
|
+
// vulnerability with tainted data flowing into Logger.log(fmt, ...)
|
|
1616
|
+
// is log-forgery via CRLF injection, not format-string exploitation.
|
|
1617
|
+
// A genuine format_string vulnerability requires the FORMAT STRING
|
|
1618
|
+
// itself to be attacker-controlled, which is virtually never the
|
|
1619
|
+
// case in Logger APIs (the format string is a literal at the call
|
|
1620
|
+
// site). Adding format_string sinks for these same receivers would
|
|
1621
|
+
// duplicate the existing log_injection findings on every call site
|
|
1622
|
+
// without adding real signal. The rare edge case where a caller
|
|
1623
|
+
// passes `taintedFmt` at arg[0] is still caught by these entries
|
|
1624
|
+
// (via arg_positions[0] on the SLF4J-family methods), classified as
|
|
1625
|
+
// log_injection.
|
|
1583
1626
|
// Issue #44: log.info/warn/error/debug emit the message argument and any
|
|
1584
1627
|
// {} format arguments to the log stream. Untrusted input forwarded into
|
|
1585
1628
|
// these calls allows log forging (newline injection) and downstream log
|