circle-ir 4.14.2 → 4.16.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.
Files changed (168) hide show
  1. package/configs/sinks/golang.json +4 -4
  2. package/dist/analysis/config-loader.d.ts.map +1 -1
  3. package/dist/analysis/config-loader.js +11 -7
  4. package/dist/analysis/config-loader.js.map +1 -1
  5. package/dist/analysis/const-table-lookup.d.ts +29 -0
  6. package/dist/analysis/const-table-lookup.d.ts.map +1 -0
  7. package/dist/analysis/const-table-lookup.js +145 -0
  8. package/dist/analysis/const-table-lookup.js.map +1 -0
  9. package/dist/analysis/constant-caller-gate.d.ts +39 -0
  10. package/dist/analysis/constant-caller-gate.d.ts.map +1 -0
  11. package/dist/analysis/constant-caller-gate.js +298 -0
  12. package/dist/analysis/constant-caller-gate.js.map +1 -0
  13. package/dist/analysis/constant-propagation/evaluator.d.ts.map +1 -1
  14. package/dist/analysis/constant-propagation/evaluator.js +3 -1
  15. package/dist/analysis/constant-propagation/evaluator.js.map +1 -1
  16. package/dist/analysis/constant-propagation/patterns.d.ts +19 -0
  17. package/dist/analysis/constant-propagation/patterns.d.ts.map +1 -1
  18. package/dist/analysis/constant-propagation/patterns.js +33 -0
  19. package/dist/analysis/constant-propagation/patterns.js.map +1 -1
  20. package/dist/analysis/constant-propagation/propagator.d.ts +59 -0
  21. package/dist/analysis/constant-propagation/propagator.d.ts.map +1 -1
  22. package/dist/analysis/constant-propagation/propagator.js +396 -49
  23. package/dist/analysis/constant-propagation/propagator.js.map +1 -1
  24. package/dist/analysis/constant-propagation/types.d.ts +9 -0
  25. package/dist/analysis/constant-propagation/types.d.ts.map +1 -1
  26. package/dist/analysis/findings.d.ts.map +1 -1
  27. package/dist/analysis/findings.js +149 -4
  28. package/dist/analysis/findings.js.map +1 -1
  29. package/dist/analysis/go-strings-replacer.d.ts +21 -0
  30. package/dist/analysis/go-strings-replacer.d.ts.map +1 -0
  31. package/dist/analysis/go-strings-replacer.js +145 -0
  32. package/dist/analysis/go-strings-replacer.js.map +1 -0
  33. package/dist/analysis/interprocedural.d.ts.map +1 -1
  34. package/dist/analysis/interprocedural.js +148 -0
  35. package/dist/analysis/interprocedural.js.map +1 -1
  36. package/dist/analysis/java-array-element-keys.d.ts +14 -0
  37. package/dist/analysis/java-array-element-keys.d.ts.map +1 -0
  38. package/dist/analysis/java-array-element-keys.js +36 -0
  39. package/dist/analysis/java-array-element-keys.js.map +1 -0
  40. package/dist/analysis/java-canonical-prefix.d.ts +42 -0
  41. package/dist/analysis/java-canonical-prefix.d.ts.map +1 -0
  42. package/dist/analysis/java-canonical-prefix.js +145 -0
  43. package/dist/analysis/java-canonical-prefix.js.map +1 -0
  44. package/dist/analysis/java-crlf-strip.d.ts +30 -0
  45. package/dist/analysis/java-crlf-strip.d.ts.map +1 -0
  46. package/dist/analysis/java-crlf-strip.js +195 -0
  47. package/dist/analysis/java-crlf-strip.js.map +1 -0
  48. package/dist/analysis/js-crlf-strip.d.ts +26 -0
  49. package/dist/analysis/js-crlf-strip.d.ts.map +1 -0
  50. package/dist/analysis/js-crlf-strip.js +244 -0
  51. package/dist/analysis/js-crlf-strip.js.map +1 -0
  52. package/dist/analysis/passes/cleartext-credential-transport-pass.d.ts +2 -0
  53. package/dist/analysis/passes/cleartext-credential-transport-pass.d.ts.map +1 -1
  54. package/dist/analysis/passes/cleartext-credential-transport-pass.js +64 -12
  55. package/dist/analysis/passes/cleartext-credential-transport-pass.js.map +1 -1
  56. package/dist/analysis/passes/cross-file-pass.d.ts.map +1 -1
  57. package/dist/analysis/passes/cross-file-pass.js +43 -0
  58. package/dist/analysis/passes/cross-file-pass.js.map +1 -1
  59. package/dist/analysis/passes/csharp-sanitizer-credit.d.ts +12 -0
  60. package/dist/analysis/passes/csharp-sanitizer-credit.d.ts.map +1 -1
  61. package/dist/analysis/passes/csharp-sanitizer-credit.js +127 -12
  62. package/dist/analysis/passes/csharp-sanitizer-credit.js.map +1 -1
  63. package/dist/analysis/passes/interprocedural-pass.d.ts +28 -0
  64. package/dist/analysis/passes/interprocedural-pass.d.ts.map +1 -1
  65. package/dist/analysis/passes/interprocedural-pass.js +20 -1
  66. package/dist/analysis/passes/interprocedural-pass.js.map +1 -1
  67. package/dist/analysis/passes/language-sources-pass.d.ts +76 -2
  68. package/dist/analysis/passes/language-sources-pass.d.ts.map +1 -1
  69. package/dist/analysis/passes/language-sources-pass.js +2045 -156
  70. package/dist/analysis/passes/language-sources-pass.js.map +1 -1
  71. package/dist/analysis/passes/param-source-flow-gate-pass.d.ts +8 -0
  72. package/dist/analysis/passes/param-source-flow-gate-pass.d.ts.map +1 -1
  73. package/dist/analysis/passes/param-source-flow-gate-pass.js +214 -6
  74. package/dist/analysis/passes/param-source-flow-gate-pass.js.map +1 -1
  75. package/dist/analysis/passes/plaintext-password-storage-pass.d.ts +6 -0
  76. package/dist/analysis/passes/plaintext-password-storage-pass.d.ts.map +1 -1
  77. package/dist/analysis/passes/plaintext-password-storage-pass.js +160 -0
  78. package/dist/analysis/passes/plaintext-password-storage-pass.js.map +1 -1
  79. package/dist/analysis/passes/scan-secrets-pass.d.ts +1 -1
  80. package/dist/analysis/passes/scan-secrets-pass.d.ts.map +1 -1
  81. package/dist/analysis/passes/scan-secrets-pass.js +7 -1
  82. package/dist/analysis/passes/scan-secrets-pass.js.map +1 -1
  83. package/dist/analysis/passes/sink-filter-pass.d.ts +1 -1
  84. package/dist/analysis/passes/sink-filter-pass.d.ts.map +1 -1
  85. package/dist/analysis/passes/sink-filter-pass.js +509 -27
  86. package/dist/analysis/passes/sink-filter-pass.js.map +1 -1
  87. package/dist/analysis/passes/taint-matcher-pass.d.ts.map +1 -1
  88. package/dist/analysis/passes/taint-matcher-pass.js +2 -2
  89. package/dist/analysis/passes/taint-matcher-pass.js.map +1 -1
  90. package/dist/analysis/passes/taint-propagation-pass.d.ts.map +1 -1
  91. package/dist/analysis/passes/taint-propagation-pass.js +1606 -60
  92. package/dist/analysis/passes/taint-propagation-pass.js.map +1 -1
  93. package/dist/analysis/passes/weak-hash-pass.d.ts +6 -0
  94. package/dist/analysis/passes/weak-hash-pass.d.ts.map +1 -1
  95. package/dist/analysis/passes/weak-hash-pass.js +191 -4
  96. package/dist/analysis/passes/weak-hash-pass.js.map +1 -1
  97. package/dist/analysis/passes/weak-random-pass.d.ts +5 -0
  98. package/dist/analysis/passes/weak-random-pass.d.ts.map +1 -1
  99. package/dist/analysis/passes/weak-random-pass.js +30 -0
  100. package/dist/analysis/passes/weak-random-pass.js.map +1 -1
  101. package/dist/analysis/project-callee-escape-gate.d.ts +40 -0
  102. package/dist/analysis/project-callee-escape-gate.d.ts.map +1 -0
  103. package/dist/analysis/project-callee-escape-gate.js +243 -0
  104. package/dist/analysis/project-callee-escape-gate.js.map +1 -0
  105. package/dist/analysis/rust-literal-guard-rebind.d.ts +34 -0
  106. package/dist/analysis/rust-literal-guard-rebind.d.ts.map +1 -0
  107. package/dist/analysis/rust-literal-guard-rebind.js +197 -0
  108. package/dist/analysis/rust-literal-guard-rebind.js.map +1 -0
  109. package/dist/analysis/rust-literal-guard.d.ts +33 -0
  110. package/dist/analysis/rust-literal-guard.d.ts.map +1 -0
  111. package/dist/analysis/rust-literal-guard.js +422 -0
  112. package/dist/analysis/rust-literal-guard.js.map +1 -0
  113. package/dist/analysis/scalar-derivation.d.ts +33 -0
  114. package/dist/analysis/scalar-derivation.d.ts.map +1 -0
  115. package/dist/analysis/scalar-derivation.js +368 -0
  116. package/dist/analysis/scalar-derivation.js.map +1 -0
  117. package/dist/analysis/taint-matcher.d.ts +2 -2
  118. package/dist/analysis/taint-matcher.d.ts.map +1 -1
  119. package/dist/analysis/taint-matcher.js +695 -34
  120. package/dist/analysis/taint-matcher.js.map +1 -1
  121. package/dist/analysis/taint-propagation.d.ts +26 -1
  122. package/dist/analysis/taint-propagation.d.ts.map +1 -1
  123. package/dist/analysis/taint-propagation.js +375 -24
  124. package/dist/analysis/taint-propagation.js.map +1 -1
  125. package/dist/analyzer.d.ts +16 -2
  126. package/dist/analyzer.d.ts.map +1 -1
  127. package/dist/analyzer.js +19 -2
  128. package/dist/analyzer.js.map +1 -1
  129. package/dist/browser/circle-ir.js +25539 -19200
  130. package/dist/core/circle-ir-core.cjs +3945 -2126
  131. package/dist/core/circle-ir-core.js +3945 -2126
  132. package/dist/core/extractors/calls.d.ts +12 -1
  133. package/dist/core/extractors/calls.d.ts.map +1 -1
  134. package/dist/core/extractors/calls.js +332 -22
  135. package/dist/core/extractors/calls.js.map +1 -1
  136. package/dist/core/extractors/dfg.js +336 -10
  137. package/dist/core/extractors/dfg.js.map +1 -1
  138. package/dist/core/extractors/types.d.ts +5 -1
  139. package/dist/core/extractors/types.d.ts.map +1 -1
  140. package/dist/core/extractors/types.js +62 -0
  141. package/dist/core/extractors/types.js.map +1 -1
  142. package/dist/graph/analysis-pass.d.ts +6 -1
  143. package/dist/graph/analysis-pass.d.ts.map +1 -1
  144. package/dist/graph/analysis-pass.js +2 -1
  145. package/dist/graph/analysis-pass.js.map +1 -1
  146. package/dist/graph/code-graph.d.ts +9 -0
  147. package/dist/graph/code-graph.d.ts.map +1 -1
  148. package/dist/graph/code-graph.js +11 -0
  149. package/dist/graph/code-graph.js.map +1 -1
  150. package/dist/navigation/navigation-index.d.ts +134 -14
  151. package/dist/navigation/navigation-index.d.ts.map +1 -1
  152. package/dist/navigation/navigation-index.js +1158 -104
  153. package/dist/navigation/navigation-index.js.map +1 -1
  154. package/dist/navigation/types.d.ts +59 -2
  155. package/dist/navigation/types.d.ts.map +1 -1
  156. package/dist/resolution/cross-file.d.ts +16 -0
  157. package/dist/resolution/cross-file.d.ts.map +1 -1
  158. package/dist/resolution/cross-file.js +110 -42
  159. package/dist/resolution/cross-file.js.map +1 -1
  160. package/dist/resolution/type-hierarchy.d.ts +3 -0
  161. package/dist/resolution/type-hierarchy.d.ts.map +1 -1
  162. package/dist/resolution/type-hierarchy.js +45 -1
  163. package/dist/resolution/type-hierarchy.js.map +1 -1
  164. package/dist/types/index.d.ts +33 -0
  165. package/dist/types/index.d.ts.map +1 -1
  166. package/dist/types/index.js.map +1 -1
  167. package/dist/wasm/web-tree-sitter.wasm +0 -0
  168. package/package.json +3 -3
@@ -0,0 +1,195 @@
1
+ /**
2
+ * Which of CR / LF a Java `String.replace` / `replaceAll` call strips as a
3
+ * match of its own (cognium-dev#562 / #605).
4
+ *
5
+ * Shared by the inline-chain credit (`taint-matcher.ts`) and the helper-body
6
+ * credit (`language-sources-pass.ts`), so a pattern is judged the same way
7
+ * wherever it appears.
8
+ *
9
+ * The literal is first decoded from Java source (`"\\r"` and `"\r"` both
10
+ * become a CR atom for the regex engine, `"\\\\r"` becomes a literal
11
+ * backslash followed by `r`), then the regex is read one atom at a time.
12
+ */
13
+ /** Decode the escape sequences of the body of a Java string / char literal. */
14
+ export function decodeJavaLiteral(raw) {
15
+ return raw.replace(/\\(?:u+([0-9a-fA-F]{4})|([0-3][0-7]{0,2}|[4-7][0-7]?)|([btnfrs"'\\]))/g, (_m, hex, oct, simple) => {
16
+ if (hex !== undefined)
17
+ return String.fromCharCode(parseInt(hex, 16));
18
+ if (oct !== undefined)
19
+ return String.fromCharCode(parseInt(oct, 8));
20
+ switch (simple) {
21
+ case 'b': return '\b';
22
+ case 't': return '\t';
23
+ case 'n': return '\n';
24
+ case 'f': return '\f';
25
+ case 'r': return '\r';
26
+ case 's': return ' ';
27
+ default: return simple;
28
+ }
29
+ });
30
+ }
31
+ /** One regex atom at `i`: an escape (`\r`, `\n`, `\\`, `\t`…) or a single character. */
32
+ function readAtom(s, i) {
33
+ const c = s[i];
34
+ if (c === '\\' && i + 1 < s.length) {
35
+ const n = s[i + 1];
36
+ return { atom: n === 'r' ? 'cr' : n === 'n' ? 'lf' : 'other', end: i + 2 };
37
+ }
38
+ return { atom: c === '\r' ? 'cr' : c === '\n' ? 'lf' : 'other', end: i + 1 };
39
+ }
40
+ /** True when the quantifier text lets a single repetition match (min <= 1 <= max). */
41
+ function quantifierAllowsOne(q) {
42
+ if (q === '')
43
+ return true;
44
+ const m = /^(?:(\*)|(\+)|(\?)|\{(\d+)(?:(,)(\d*))?\})[+?]?$/.exec(q);
45
+ if (!m)
46
+ return false;
47
+ if (m[1] || m[2] || m[3])
48
+ return true;
49
+ const min = Number(m[4]);
50
+ const max = m[5] ? (m[6] === '' ? Infinity : Number(m[6])) : min;
51
+ return min <= 1 && max >= 1;
52
+ }
53
+ const NONE = { cr: false, lf: false };
54
+ /** Coverage of one alternative: a lone CR/LF atom or a non-negated class holding one, with a quantifier. */
55
+ function alternativeCoverage(alt) {
56
+ if (alt === '')
57
+ return NONE;
58
+ let cr = false;
59
+ let lf = false;
60
+ let i;
61
+ if (alt[0] === '[') {
62
+ if (alt[1] === '^')
63
+ return NONE;
64
+ i = 1;
65
+ let closed = false;
66
+ while (i < alt.length) {
67
+ if (alt[i] === ']' && i > 1) {
68
+ closed = true;
69
+ i++;
70
+ break;
71
+ }
72
+ if (alt[i] === '[' || (alt[i] === '&' && alt[i + 1] === '&'))
73
+ return NONE;
74
+ const { atom, end } = readAtom(alt, i);
75
+ if (atom === 'cr')
76
+ cr = true;
77
+ else if (atom === 'lf')
78
+ lf = true;
79
+ i = end;
80
+ }
81
+ if (!closed)
82
+ return NONE;
83
+ }
84
+ else {
85
+ const { atom, end } = readAtom(alt, 0);
86
+ if (atom === 'other')
87
+ return NONE;
88
+ cr = atom === 'cr';
89
+ lf = atom === 'lf';
90
+ i = end;
91
+ }
92
+ return quantifierAllowsOne(alt.slice(i)) ? { cr, lf } : NONE;
93
+ }
94
+ /** Split `s` at top-level `|` (outside classes, groups and escapes). */
95
+ function splitAlternatives(s) {
96
+ const alts = [];
97
+ let depth = 0;
98
+ let inClass = false;
99
+ let cur = '';
100
+ for (let i = 0; i < s.length; i++) {
101
+ const c = s[i];
102
+ if (c === '\\') {
103
+ cur += c + (s[i + 1] ?? '');
104
+ i++;
105
+ continue;
106
+ }
107
+ if (inClass) {
108
+ if (c === ']')
109
+ inClass = false;
110
+ cur += c;
111
+ continue;
112
+ }
113
+ if (c === '[') {
114
+ inClass = true;
115
+ cur += c;
116
+ continue;
117
+ }
118
+ if (c === '(')
119
+ depth++;
120
+ else if (c === ')')
121
+ depth--;
122
+ if (c === '|' && depth === 0) {
123
+ alts.push(cur);
124
+ cur = '';
125
+ continue;
126
+ }
127
+ cur += c;
128
+ }
129
+ alts.push(cur);
130
+ return alts;
131
+ }
132
+ /** If `s` is one `(?:…)` / `(…)` group, optionally quantified, its body and quantifier. */
133
+ function unwrapGroup(s) {
134
+ const open = /^\((?:\?:)?/.exec(s);
135
+ if (!open)
136
+ return null;
137
+ let depth = 0;
138
+ let inClass = false;
139
+ for (let i = 0; i < s.length; i++) {
140
+ const c = s[i];
141
+ if (c === '\\') {
142
+ i++;
143
+ continue;
144
+ }
145
+ if (inClass) {
146
+ if (c === ']')
147
+ inClass = false;
148
+ continue;
149
+ }
150
+ if (c === '[') {
151
+ inClass = true;
152
+ continue;
153
+ }
154
+ if (c === '(')
155
+ depth++;
156
+ else if (c === ')' && --depth === 0) {
157
+ return { body: s.slice(open[0].length, i), quantifier: s.slice(i + 1) };
158
+ }
159
+ }
160
+ return null;
161
+ }
162
+ /**
163
+ * CR / LF coverage of a `replace` / `replaceAll` call from the raw source text
164
+ * of its first literal argument (the text between the quotes).
165
+ *
166
+ * `replace` is a plain-text match: only a lone CR or LF removes one. `replaceAll`
167
+ * is a regex: only a top-level alternation (optionally inside one `(?:…)` /
168
+ * `(…)` group, which may carry a quantifier) whose alternatives are a lone
169
+ * `\r` / `\n` atom or a non-negated class holding one, each quantified so that
170
+ * a single repetition matches, removes a lone CR or LF. A longer sequence
171
+ * (`\r\n`, `x\r\ny`) or a negated class does not.
172
+ */
173
+ export function javaReplaceCrLfCoverage(method, rawFrom) {
174
+ const value = decodeJavaLiteral(rawFrom);
175
+ if (method === 'replace')
176
+ return { cr: value === '\r', lf: value === '\n' };
177
+ let body = value;
178
+ const group = unwrapGroup(value);
179
+ if (group) {
180
+ if (!quantifierAllowsOne(group.quantifier))
181
+ return NONE;
182
+ body = group.body;
183
+ }
184
+ let cr = false;
185
+ let lf = false;
186
+ for (const alt of splitAlternatives(body)) {
187
+ const c = alternativeCoverage(alt);
188
+ if (c.cr)
189
+ cr = true;
190
+ if (c.lf)
191
+ lf = true;
192
+ }
193
+ return { cr, lf };
194
+ }
195
+ //# sourceMappingURL=java-crlf-strip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"java-crlf-strip.js","sourceRoot":"","sources":["../../src/analysis/java-crlf-strip.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Whether a JavaScript / TypeScript `String.replace` chain strips CR and LF
3
+ * (cognium-dev#562, the JS half of the Java rule in `java-crlf-strip.ts`).
4
+ *
5
+ * The decision is made by running the chain's own literal patterns against a
6
+ * short probe string, so a regex is judged by what it matches rather than by how
7
+ * it is spelled (`/[\r\n]/g`, `/\r|\n/g`, `/\s+/g` and `/[\x00-\x1f]/g` all
8
+ * strip both). Only literal arguments are understood: a pattern held in a
9
+ * variable, a `new RegExp(...)`, or a replacement that is a function or a
10
+ * non-literal makes the whole chain `undecided`, and the caller keeps the credit
11
+ * the class-less `replace` row gave before.
12
+ */
13
+ export type JsReplaceVerdict = 'strips-crlf' | 'leaves-crlf' | 'undecided';
14
+ /**
15
+ * Verdict for the replace chain whose text is `chainText` (the receiver plus the
16
+ * `.method(...)` segments after it).
17
+ */
18
+ export declare function jsReplaceChainVerdict(chainText: string): JsReplaceVerdict;
19
+ /**
20
+ * The text of the call chain that starts at (line, column): the receiver
21
+ * expression plus the `.method(...)` segments after it, up to the first
22
+ * character that cannot continue the chain at nesting depth 0. String and regex
23
+ * literals are skipped as units. The chain may continue over following lines.
24
+ */
25
+ export declare function jsChainTextAt(sourceLines: string[], line: number, column: number): string;
26
+ //# sourceMappingURL=js-crlf-strip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-crlf-strip.d.ts","sourceRoot":"","sources":["../../src/analysis/js-crlf-strip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,aAAa,GAAG,WAAW,CAAC;AAiI3E;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAazE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA2BzF"}
@@ -0,0 +1,244 @@
1
+ /**
2
+ * Whether a JavaScript / TypeScript `String.replace` chain strips CR and LF
3
+ * (cognium-dev#562, the JS half of the Java rule in `java-crlf-strip.ts`).
4
+ *
5
+ * The decision is made by running the chain's own literal patterns against a
6
+ * short probe string, so a regex is judged by what it matches rather than by how
7
+ * it is spelled (`/[\r\n]/g`, `/\r|\n/g`, `/\s+/g` and `/[\x00-\x1f]/g` all
8
+ * strip both). Only literal arguments are understood: a pattern held in a
9
+ * variable, a `new RegExp(...)`, or a replacement that is a function or a
10
+ * non-literal makes the whole chain `undecided`, and the caller keeps the credit
11
+ * the class-less `replace` row gave before.
12
+ */
13
+ const MAX_PATTERN_LENGTH = 200;
14
+ /** String methods that may follow a replace in a judged chain without changing its CR / LF coverage. */
15
+ const NEUTRAL_AFTER_REPLACE = new Set([
16
+ 'replace', 'replaceAll', 'trim', 'trimStart', 'trimEnd', 'toString',
17
+ 'toLowerCase', 'toUpperCase', 'slice', 'substring',
18
+ ]);
19
+ /** Probe text: lone and doubled CR / LF, a CRLF pair and neutral characters. */
20
+ const PROBE = 'a\r\rb\n\nc\r\nd\n\re x\t';
21
+ function readQuoted(s, i) {
22
+ const q = s[i];
23
+ if (q !== '"' && q !== "'" && q !== '`')
24
+ return null;
25
+ let out = '';
26
+ for (let j = i + 1; j < s.length; j++) {
27
+ const c = s[j];
28
+ if (c === q)
29
+ return { value: out, end: j + 1 };
30
+ if (q === '`' && c === '$' && s[j + 1] === '{')
31
+ return null;
32
+ if (c === '\\') {
33
+ const n = s[j + 1];
34
+ if (n === undefined)
35
+ return null;
36
+ switch (n) {
37
+ case 'n':
38
+ out += '\n';
39
+ j++;
40
+ continue;
41
+ case 'r':
42
+ out += '\r';
43
+ j++;
44
+ continue;
45
+ case 't':
46
+ out += '\t';
47
+ j++;
48
+ continue;
49
+ case '0':
50
+ out += '\0';
51
+ j++;
52
+ continue;
53
+ case 'x': {
54
+ const h = /^[0-9a-fA-F]{2}/.exec(s.slice(j + 2, j + 4));
55
+ if (!h)
56
+ return null;
57
+ out += String.fromCharCode(parseInt(h[0], 16));
58
+ j += 3;
59
+ continue;
60
+ }
61
+ case 'u': {
62
+ const h = /^[0-9a-fA-F]{4}/.exec(s.slice(j + 2, j + 6));
63
+ if (!h)
64
+ return null;
65
+ out += String.fromCharCode(parseInt(h[0], 16));
66
+ j += 5;
67
+ continue;
68
+ }
69
+ default:
70
+ out += n;
71
+ j++;
72
+ continue;
73
+ }
74
+ }
75
+ if (c === '\n' && q !== '`')
76
+ return null;
77
+ out += c;
78
+ }
79
+ return null;
80
+ }
81
+ function readRegexLiteral(s, i) {
82
+ if (s[i] !== '/')
83
+ return null;
84
+ let inClass = false;
85
+ for (let j = i + 1; j < s.length; j++) {
86
+ const c = s[j];
87
+ if (c === '\n')
88
+ return null;
89
+ if (c === '\\') {
90
+ j++;
91
+ continue;
92
+ }
93
+ if (inClass) {
94
+ if (c === ']')
95
+ inClass = false;
96
+ continue;
97
+ }
98
+ if (c === '[') {
99
+ inClass = true;
100
+ continue;
101
+ }
102
+ if (c === '/') {
103
+ const flags = /^[dgimsuvy]*/.exec(s.slice(j + 1))[0];
104
+ return { source: s.slice(i + 1, j), flags, end: j + 1 + flags.length };
105
+ }
106
+ }
107
+ return null;
108
+ }
109
+ const skipWs = (s, i) => {
110
+ while (i < s.length && /\s/.test(s[i]))
111
+ i++;
112
+ return i;
113
+ };
114
+ /**
115
+ * Parse every `.replace(<literal>, <string literal>)` / `.replaceAll(...)` step
116
+ * of a chain, in source order. Returns null when any step is not literal.
117
+ */
118
+ function parseSteps(chainText) {
119
+ const steps = [];
120
+ const callRe = /\.\s*(replaceAll|replace)\s*\(/g;
121
+ let m;
122
+ while ((m = callRe.exec(chainText)) !== null) {
123
+ const kind = m[1];
124
+ let i = skipWs(chainText, m.index + m[0].length);
125
+ let pattern;
126
+ const rx = readRegexLiteral(chainText, i);
127
+ if (rx) {
128
+ if (rx.source.length > MAX_PATTERN_LENGTH)
129
+ return null;
130
+ try {
131
+ pattern = new RegExp(rx.source, rx.flags);
132
+ }
133
+ catch {
134
+ return null;
135
+ }
136
+ i = rx.end;
137
+ }
138
+ else {
139
+ const str = readQuoted(chainText, i);
140
+ if (!str)
141
+ return null;
142
+ pattern = str.value;
143
+ i = str.end;
144
+ }
145
+ i = skipWs(chainText, i);
146
+ if (chainText[i] !== ',')
147
+ return null;
148
+ i = skipWs(chainText, i + 1);
149
+ const rep = readQuoted(chainText, i);
150
+ if (!rep)
151
+ return null;
152
+ i = skipWs(chainText, rep.end);
153
+ if (chainText[i] !== ')')
154
+ return null;
155
+ steps.push({ kind, pattern, replacement: rep.value });
156
+ callRe.lastIndex = i + 1;
157
+ }
158
+ return steps;
159
+ }
160
+ function run(steps, input) {
161
+ let s = input;
162
+ try {
163
+ for (const st of steps) {
164
+ if (st.kind === 'replaceAll' && st.pattern instanceof RegExp && !st.pattern.global)
165
+ return null;
166
+ s = st.kind === 'replaceAll'
167
+ ? s.replaceAll(st.pattern, st.replacement)
168
+ : s.replace(st.pattern, st.replacement);
169
+ }
170
+ }
171
+ catch {
172
+ return null;
173
+ }
174
+ return s;
175
+ }
176
+ /**
177
+ * Verdict for the replace chain whose text is `chainText` (the receiver plus the
178
+ * `.method(...)` segments after it).
179
+ */
180
+ export function jsReplaceChainVerdict(chainText) {
181
+ const steps = parseSteps(chainText);
182
+ if (!steps || steps.length === 0)
183
+ return 'undecided';
184
+ // Another transform after the first replace may strip CR / LF on its own
185
+ // (`.split("\r").join("")`): the chain is only judged when every later
186
+ // segment is a replace or a harmless string method.
187
+ const first = chainText.search(/\.\s*(?:replaceAll|replace)\s*\(/);
188
+ for (const seg of chainText.slice(first + 1).matchAll(/\.\s*([A-Za-z_$][\w$]*)\s*\(/g)) {
189
+ if (!NEUTRAL_AFTER_REPLACE.has(seg[1]))
190
+ return 'undecided';
191
+ }
192
+ const out = run(steps, PROBE);
193
+ if (out === null)
194
+ return 'undecided';
195
+ return out.includes('\r') || out.includes('\n') ? 'leaves-crlf' : 'strips-crlf';
196
+ }
197
+ /**
198
+ * The text of the call chain that starts at (line, column): the receiver
199
+ * expression plus the `.method(...)` segments after it, up to the first
200
+ * character that cannot continue the chain at nesting depth 0. String and regex
201
+ * literals are skipped as units. The chain may continue over following lines.
202
+ */
203
+ export function jsChainTextAt(sourceLines, line, column) {
204
+ const text = [(sourceLines[line - 1] ?? '').slice(column), ...sourceLines.slice(line, line + 7)].join('\n');
205
+ let depth = 0;
206
+ let prevSig = '';
207
+ let i = 0;
208
+ for (; i < text.length; i++) {
209
+ const c = text[i];
210
+ if (c === '"' || c === "'" || c === '`') {
211
+ for (i++; i < text.length && text[i] !== c; i++)
212
+ if (text[i] === '\\')
213
+ i++;
214
+ prevSig = c;
215
+ continue;
216
+ }
217
+ if (c === '/' && depth > 0 && (prevSig === '(' || prevSig === ',')) {
218
+ const rx = readRegexLiteral(text, i);
219
+ if (rx) {
220
+ i = rx.end - 1;
221
+ prevSig = '/';
222
+ continue;
223
+ }
224
+ }
225
+ if (c === '(' || c === '[' || c === '{') {
226
+ depth++;
227
+ prevSig = c;
228
+ continue;
229
+ }
230
+ if (c === ')' || c === ']' || c === '}') {
231
+ if (depth === 0)
232
+ break;
233
+ depth--;
234
+ prevSig = c;
235
+ continue;
236
+ }
237
+ if (depth === 0 && !/[\w$.\s]/.test(c))
238
+ break;
239
+ if (!/\s/.test(c))
240
+ prevSig = c;
241
+ }
242
+ return text.slice(0, i);
243
+ }
244
+ //# sourceMappingURL=js-crlf-strip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-crlf-strip.js","sourceRoot":"","sources":["../../src/analysis/js-crlf-strip.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,8 @@ export declare class CleartextCredentialTransportPass implements AnalysisPass<Cl
37
37
  readonly name = "cleartext-credential-transport";
38
38
  readonly category: 'security';
39
39
  run(ctx: PassContext): CleartextCredentialTransportResult;
40
+ /** `http.request('http://…')` whose credential body is written afterwards (#670). */
41
+ private detectNodeRequestBody;
40
42
  private detect;
41
43
  }
42
44
  //# sourceMappingURL=cleartext-credential-transport-pass.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cleartext-credential-transport-pass.d.ts","sourceRoot":"","sources":["../../../src/analysis/passes/cleartext-credential-transport-pass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAU9E,MAAM,WAAW,kCAAkC;IACjD,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC,CAAC;CACJ;AA0CD,qBAAa,gCACX,YAAW,YAAY,CAAC,kCAAkC,CAAC;IAE3D,QAAQ,CAAC,IAAI,oCAAoC;IACjD,QAAQ,CAAC,QAAQ,EAAG,UAAU,CAAU;IAExC,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,kCAAkC,CAkCxD;IAED,OAAO,CAAC,MAAM;CA8Ff"}
1
+ {"version":3,"file":"cleartext-credential-transport-pass.d.ts","sourceRoot":"","sources":["../../../src/analysis/passes/cleartext-credential-transport-pass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAU9E,MAAM,WAAW,kCAAkC;IACjD,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC,CAAC;CACJ;AAyED,qBAAa,gCACX,YAAW,YAAY,CAAC,kCAAkC,CAAC;IAE3D,QAAQ,CAAC,IAAI,oCAAoC;IACjD,QAAQ,CAAC,QAAQ,EAAG,UAAU,CAAU;IAExC,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,kCAAkC,CAmCxD;IAED,qFAAqF;IACrF,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,MAAM;CA8Ff"}
@@ -51,19 +51,56 @@ function anyArgCarriesCredential(call, startPos) {
51
51
  // Direct identifier (`requests.post(url, password)` shape).
52
52
  if (argLooksLikeCredential(a))
53
53
  return true;
54
- // Inline object literal: `{ password: pw, ... }`.
55
- const expr = (a.expression ?? '').trim();
56
- if (!expr)
57
- continue;
58
- // Look for credential-keyword as a key OR value identifier.
59
- if (/(?:["'`]?(?:password|passwd|pwd|secret|api[_-]?key|auth[_-]?token|credential)["'`]?\s*[:=])/i
60
- .test(expr)) {
54
+ if (textCarriesCredential(a.expression ?? ''))
61
55
  return true;
62
- }
63
- // Look for credential identifier appearing as a word.
64
- if (/\b(?:password|passwd|pwd|secret|api_key|api-key|apiKey|auth_token|authToken|credential)\w*\b/i
65
- .test(expr)) {
56
+ }
57
+ return false;
58
+ }
59
+ /** True if an expression mentions a credential keyword as a key or a word. */
60
+ function textCarriesCredential(text) {
61
+ const expr = text.trim();
62
+ if (!expr)
63
+ return false;
64
+ // Inline object literal: `{ password: pw, ... }` — keyword as a key.
65
+ if (/(?:["'`]?(?:password|passwd|pwd|secret|api[_-]?key|auth[_-]?token|credential)["'`]?\s*[:=])/i
66
+ .test(expr)) {
67
+ return true;
68
+ }
69
+ // Credential identifier appearing as a word.
70
+ return /\b(?:password|passwd|pwd|secret|api_key|api-key|apiKey|auth_token|authToken|credential)\w*\b/i
71
+ .test(expr);
72
+ }
73
+ /**
74
+ * #670 — node `const r = http.request('http://…', opts)` whose body is sent
75
+ * later with `r.write(x)` / `r.end(x)` on that same binding. Credits `x` when
76
+ * its own text, or the text of the definition of `x` that reaches the write,
77
+ * carries a credential keyword.
78
+ */
79
+ function nodeRequestWritesCredential(call, graph, lines) {
80
+ const text = lines[call.location.line - 1] ?? '';
81
+ const bound = /(?:const|let|var)\s+([A-Za-z_$][\w$]*)\s*=\s*https?\s*\.\s*request\s*\(/.exec(text);
82
+ if (!bound)
83
+ return false;
84
+ const reqVar = bound[1];
85
+ const reqDef = graph.defsAtLine(call.location.line).find((d) => d.variable === reqVar);
86
+ if (!reqDef)
87
+ return false;
88
+ for (const w of graph.ir.calls) {
89
+ if (w.receiver !== reqVar || (w.method_name !== 'write' && w.method_name !== 'end'))
90
+ continue;
91
+ // The write must use this request object: its reaching def is the binding.
92
+ const use = graph.usesAtLine(w.location.line).find((u) => u.variable === reqVar);
93
+ if (!use || use.def_id !== reqDef.id)
94
+ continue;
95
+ if (anyArgCarriesCredential(w, 0))
66
96
  return true;
97
+ for (const a of w.arguments) {
98
+ if (!a.variable)
99
+ continue;
100
+ const argUse = graph.usesAtLine(w.location.line).find((u) => u.variable === a.variable);
101
+ const def = argUse?.def_id != null ? graph.defById.get(argUse.def_id) : undefined;
102
+ if (def && textCarriesCredential(lines[def.line - 1] ?? ''))
103
+ return true;
67
104
  }
68
105
  }
69
106
  return false;
@@ -75,8 +112,9 @@ export class CleartextCredentialTransportPass {
75
112
  const { graph, language } = ctx;
76
113
  const file = graph.ir.meta.file;
77
114
  const findings = [];
115
+ const lines = ctx.code.split('\n');
78
116
  for (const call of graph.ir.calls) {
79
- const detection = this.detect(call, language);
117
+ const detection = this.detect(call, language) ?? this.detectNodeRequestBody(call, language, graph, lines);
80
118
  if (!detection)
81
119
  continue;
82
120
  const { api, url } = detection;
@@ -101,6 +139,20 @@ export class CleartextCredentialTransportPass {
101
139
  }
102
140
  return { findings };
103
141
  }
142
+ /** `http.request('http://…')` whose credential body is written afterwards (#670). */
143
+ detectNodeRequestBody(call, language, graph, lines) {
144
+ if (language !== 'javascript' && language !== 'typescript')
145
+ return null;
146
+ if (call.method_name !== 'request')
147
+ return null;
148
+ const recvLower = (call.receiver ?? '').toLowerCase();
149
+ if (recvLower !== 'http' && !recvLower.endsWith('.http'))
150
+ return null;
151
+ const url = literalAt(call, 0);
152
+ if (!isInsecureHttpUrl(url))
153
+ return null;
154
+ return nodeRequestWritesCredential(call, graph, lines) ? { api: 'http.request', url: url } : null;
155
+ }
104
156
  detect(call, language) {
105
157
  const method = call.method_name ?? '';
106
158
  const receiver = call.receiver ?? '';
@@ -1 +1 @@
1
- {"version":3,"file":"cleartext-credential-transport-pass.js","sourceRoot":"","sources":["../../../src/analysis/passes/cleartext-credential-transport-pass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cleartext-credential-transport-pass.js","sourceRoot":"","sources":["../../../src/analysis/passes/cleartext-credential-transport-pass.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cross-file-pass.d.ts","sourceRoot":"","sources":["../../../src/analysis/passes/cross-file-pass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EAKd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAKjE,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,8CAA8C;IAC9C,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,uCAAuC;IACvC,aAAa,EAAE,aAAa,CAAC;IAC7B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,aAAa;IACxB,GAAG,CACD,YAAY,EAAE,YAAY;IAC1B,2EAA2E;IAC3E,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAClC,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CAiRrB;CACF"}
1
+ {"version":3,"file":"cross-file-pass.d.ts","sourceRoot":"","sources":["../../../src/analysis/passes/cross-file-pass.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EAKd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAOjE,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,8CAA8C;IAC9C,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,uCAAuC;IACvC,aAAa,EAAE,aAAa,CAAC;IAC7B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,aAAa;IACxB,GAAG,CACD,YAAY,EAAE,YAAY;IAC1B,2EAA2E;IAC3E,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAClC,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CA6RrB;CACF"}