@contrast/common 1.8.0 → 1.9.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/lib/constants.d.ts +274 -0
- package/lib/constants.d.ts.map +1 -1
- package/lib/constants.js +135 -1
- package/lib/constants.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +8 -1
- package/lib/index.js.map +1 -1
- package/lib/signatures/fs.d.ts +4 -0
- package/lib/signatures/fs.d.ts.map +1 -0
- package/lib/signatures/fs.js +58 -0
- package/lib/signatures/fs.js.map +1 -0
- package/lib/signatures/index.d.ts +2 -1
- package/lib/signatures/index.d.ts.map +1 -1
- package/lib/signatures/index.js +20 -313
- package/lib/signatures/index.js.map +1 -1
- package/lib/signatures/mongodb.d.ts +3 -0
- package/lib/signatures/mongodb.d.ts.map +1 -0
- package/lib/signatures/mongodb.js +46 -0
- package/lib/signatures/mongodb.js.map +1 -0
- package/lib/signatures/mssql.d.ts +2 -1
- package/lib/signatures/mssql.d.ts.map +1 -1
- package/lib/signatures/mssql.js +3 -3
- package/lib/signatures/mssql.js.map +1 -1
- package/lib/types.d.ts +10 -0
- package/lib/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/constants.ts +136 -0
- package/src/index.ts +7 -0
- package/src/signatures/fs.ts +65 -0
- package/src/signatures/index.ts +23 -315
- package/src/signatures/mongodb.ts +46 -0
- package/src/signatures/mssql.ts +7 -5
- package/src/types.ts +11 -0
package/src/constants.ts
CHANGED
|
@@ -94,5 +94,141 @@ export enum InputType {
|
|
|
94
94
|
UNKNOWN = 'UNKNOWN',
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
+
export enum DataflowTag {
|
|
98
|
+
XML_ENCODED = 'XML_ENCODED',
|
|
99
|
+
XML_DECODED = 'XML_DECODED',
|
|
100
|
+
HTML_ENCODED = 'HTML_ENCODED',
|
|
101
|
+
HTML_DECODED = 'HTML_DECODED',
|
|
102
|
+
URL_ENCODED = 'URL_ENCODED',
|
|
103
|
+
URL_DECODED = 'URL_DECODED',
|
|
104
|
+
CSS_ENCODED = 'CSS_ENCODED',
|
|
105
|
+
CSS_DECODED = 'CSS_DECODED',
|
|
106
|
+
BASE64_ENCODED = 'BASE64_ENCODED',
|
|
107
|
+
BASE64_DECODED = 'BASE64_DECODED',
|
|
108
|
+
JAVASCRIPT_ENCODED = 'JAVASCRIPT_ENCODED',
|
|
109
|
+
JAVASCRIPT_DECODED = 'JAVASCRIPT_DECODED',
|
|
110
|
+
JAVA_ENCODED = 'JAVA_ENCODED',
|
|
111
|
+
JAVA_DECODED = 'JAVA_DECODED',
|
|
112
|
+
CSV_ENCODED = 'CSV_ENCODED',
|
|
113
|
+
CSV_DECODED = 'CSV_DECODED',
|
|
114
|
+
SQL_ENCODED = 'SQL_ENCODED',
|
|
115
|
+
SQL_DECODED = 'SQL_DECODED',
|
|
116
|
+
LDAP_ENCODED = 'LDAP_ENCODED',
|
|
117
|
+
LDAP_DECODED = 'LDAP_DECODED',
|
|
118
|
+
XPATH_ENCODED = 'XPATH_ENCODED',
|
|
119
|
+
XPATH_DECODED = 'XPATH_DECODED',
|
|
120
|
+
OS_ENCODED = 'OS_ENCODED',
|
|
121
|
+
OS_DECODED = 'OS_DECODED',
|
|
122
|
+
VBSCRIPT_ENCODED = 'VBSCRIPT_ENCODED',
|
|
123
|
+
VBSCRIPT_DECODED = 'VBSCRIPT_DECODED',
|
|
124
|
+
POTENTIAL_SANITIZED = 'POTENTIAL_SANITIZED',
|
|
125
|
+
POTENTIAL_VALIDATED = 'POTENTIAL_VALIDATED',
|
|
126
|
+
NO_CONTROL_CHARS = 'NO_CONTROL_CHARS',
|
|
127
|
+
CUSTOM = 'CUSTOM_CATCH_ALL',
|
|
128
|
+
// custom encoded/validated tags, only for data flow rules
|
|
129
|
+
CUSTOM_ENCODED = 'CUSTOM_ENCODED',
|
|
130
|
+
CUSTOM_ENCODED_CMD_INJECTION = 'CUSTOM_ENCODED_CMD_INJECTION',
|
|
131
|
+
CUSTOM_ENCODED_EXPRESSION_LANGUAGE_INJECTION = 'CUSTOM_ENCODED_EXPRESSION_LANGUAGE_INJECTION',
|
|
132
|
+
CUSTOM_ENCODED_HEADER_INJECTION = 'CUSTOM_ENCODED_HEADER_INJECTION',
|
|
133
|
+
CUSTOM_ENCODED_HQL_INJECTION = 'CUSTOM_ENCODED_HQL_INJECTION',
|
|
134
|
+
CUSTOM_ENCODED_LDAP_INJECTION = 'CUSTOM_ENCODED_LDAP_INJECTION',
|
|
135
|
+
CUSTOM_ENCODED_LOG_INJECTION = 'CUSTOM_ENCODED_LOG_INJECTION',
|
|
136
|
+
CUSTOM_ENCODED_NOSQL_INJECTIOn = 'CUSTOM_ENCODED_NOSQL_INJECTION',
|
|
137
|
+
CUSTOM_ENCODED_PATH_TRAVERSAL = 'CUSTOM_ENCODED_PATH_TRAVERSAL',
|
|
138
|
+
CUSTOM_ENCODED_REDOS = 'CUSTOM_ENCODED_REDOS',
|
|
139
|
+
CUSTOM_ENCODED_REFLECTED_XSS = 'CUSTOM_ENCODED_REFLECTED_XSS',
|
|
140
|
+
CUSTOM_ENCODED_REFLECTION_INJECTION = 'CUSTOM_ENCODED_REFLECTION_INJECTION',
|
|
141
|
+
CUSTOM_ENCODED_SMTP_INJECTION = 'CUSTOM_ENCODED_SMTP_INJECTION',
|
|
142
|
+
CUSTOM_ENCODED_SQL_INJECTION = 'CUSTOM_ENCODED_SQL_INJECTION',
|
|
143
|
+
CUSTOM_ENCODED_SSRF = 'CUSTOM_ENCODED_SSRF',
|
|
144
|
+
CUSTOM_ENCODED_STORED_XSS = 'CUSTOM_ENCODED_STORED_XSS',
|
|
145
|
+
CUSTOM_ENCODED_TRUST_BOUNDARY_VIOLATION = 'CUSTOM_ENCODED_TRUST_BOUNDARY_VIOLATION',
|
|
146
|
+
CUSTOM_ENCODED_UNSAFE_CODE_EXECUTION = 'CUSTOM_ENCODED_UNSAFE_CODE_EXECUTION',
|
|
147
|
+
CUSTOM_ENCODED_UNSAFE_READLINE = 'CUSTOM_ENCODED_UNSAFE_READLINE',
|
|
148
|
+
CUSTOM_ENCODED_UNSAFE_XML_DECODE = 'CUSTOM_ENCODED_UNSAFE_XML_DECODE',
|
|
149
|
+
CUSTOM_ENCODED_UNTRUSTED_DESERIALIZATION = 'CUSTOM_ENCODED_UNTRUSTED_DESERIALIZATION',
|
|
150
|
+
CUSTOM_ENCODED_UNVALIDATED_FORWARD = 'CUSTOM_ENCODED_UNVALIDATED_FORWARD',
|
|
151
|
+
CUSTOM_ENCODED_UNVALIDATED_REDIRECT = 'CUSTOM_ENCODED_UNVALIDATED_REDIRECT',
|
|
152
|
+
CUSTOM_ENCODED_XPATH_INJECTION = 'CUSTOM_ENCODED_XPATH_INJECTION',
|
|
153
|
+
CUSTOM_ENCODED_XXE = 'CUSTOM_ENCODED_XXE',
|
|
154
|
+
CUSTOM_SECURITY_CONTROL_APPLIED = 'CUSTOM_SECURITY_CONTROL_APPLIED',
|
|
155
|
+
CUSTOM_VALIDATED = 'CUSTOM_VALIDATED',
|
|
156
|
+
CUSTOM_VALIDATED_CMD_INJECTION = 'CUSTOM_VALIDATED_CMD_INJECTION',
|
|
157
|
+
CUSTOM_VALIDATED_EXPRESSION_LANGUAGE_INJECTION = 'CUSTOM_VALIDATED_EXPRESSION_LANGUAGE_INJECTION',
|
|
158
|
+
CUSTOM_VALIDATED_HEADER_INJECTION = 'CUSTOM_VALIDATED_HEADER_INJECTION',
|
|
159
|
+
CUSTOM_VALIDATED_HQL_INJECTION = 'CUSTOM_VALIDATED_HQL_INJECTION',
|
|
160
|
+
CUSTOM_VALIDATED_LDAP_INJECTION = 'CUSTOM_VALIDATED_LDAP_INJECTION',
|
|
161
|
+
CUSTOM_VALIDATED_LOG_INJECTION = 'CUSTOM_VALIDATED_LOG_INJECTION',
|
|
162
|
+
CUSTOM_VALIDATED_NOSQL_INJECTION = 'CUSTOM_VALIDATED_NOSQL_INJECTION',
|
|
163
|
+
CUSTOM_VALIDATED_PATH_TRAVERSAL = 'CUSTOM_VALIDATED_PATH_TRAVERSAL',
|
|
164
|
+
CUSTOM_VALIDATED_REDOS = 'CUSTOM_VALIDATED_REDOS',
|
|
165
|
+
CUSTOM_VALIDATED_REFLECTED_XSS = 'CUSTOM_VALIDATED_REFLECTED_XSS',
|
|
166
|
+
CUSTOM_VALIDATED_REFLECTION_INJECTION = 'CUSTOM_VALIDATED_REFLECTION_INJECTION',
|
|
167
|
+
CUSTOM_VALIDATED_SMTP_INJECTION = 'CUSTOM_VALIDATED_SMTP_INJECTION',
|
|
168
|
+
CUSTOM_VALIDATED_SQL_INJECTION = 'CUSTOM_VALIDATED_SQL_INJECTION',
|
|
169
|
+
CUSTOM_VALIDATED_SSRF = 'CUSTOM_VALIDATED_SSRF',
|
|
170
|
+
CUSTOM_VALIDATED_STORED_XSS = 'CUSTOM_VALIDATED_STORED_XSS',
|
|
171
|
+
CUSTOM_VALIDATED_TRUST_BOUNDARY_VIOLATION = 'CUSTOM_VALIDATED_TRUST_BOUNDARY_VIOLATION',
|
|
172
|
+
CUSTOM_VALIDATED_UNSAFE_CODE_EXECUTION = 'CUSTOM_VALIDATED_UNSAFE_CODE_EXECUTION',
|
|
173
|
+
CUSTOM_VALIDATED_UNSAFE_READLINE = 'CUSTOM_VALIDATED_UNSAFE_READLINE',
|
|
174
|
+
CUSTOM_VALIDATED_UNSAFE_XML_DECODE = 'CUSTOM_VALIDATED_UNSAFE_XML_DECODE',
|
|
175
|
+
CUSTOM_VALIDATED_UNTRUSTED_DESERIALIZATION = 'CUSTOM_VALIDATED_UNTRUSTED_DESERIALIZATION',
|
|
176
|
+
CUSTOM_VALIDATED_UNVALIDATED_FORWARD = 'CUSTOM_VALIDATED_UNVALIDATED_FORWARD',
|
|
177
|
+
CUSTOM_VALIDATED_UNVALIDATED_REDIRECT = 'CUSTOM_VALIDATED_UNVALIDATED_REDIRECT',
|
|
178
|
+
CUSTOM_VALIDATED_XPATH_INJECTION = 'CUSTOM_VALIDATED_XPATH_INJECTION',
|
|
179
|
+
CUSTOM_VALIDATED_XXE = 'CUSTOM_VALIDATED_XXE',
|
|
180
|
+
// tracked_string range tags
|
|
181
|
+
NO_NEWLINES = 'NO_NEWLINES',
|
|
182
|
+
UNTRUSTED = 'UNTRUSTED',
|
|
183
|
+
CROSS_SITE = 'CROSS_SITE',
|
|
184
|
+
LIMITED_CHARS = 'LIMITED_CHARS',
|
|
185
|
+
ALPHANUM_SPACE_HYPHEN = 'ALPHANUM_SPACE_HYPHEN',
|
|
186
|
+
STRING_TYPE_CHECKED = 'STRING_TYPE_CHECKED',
|
|
187
|
+
DATABASE_WRITE = 'DATABASE_WRITE',
|
|
188
|
+
HEADER = 'HEADER',
|
|
189
|
+
COOKIE = 'COOKIE',
|
|
190
|
+
WEAK_URL_ENCODED = 'WEAK_URL_ENCODED',
|
|
191
|
+
}
|
|
192
|
+
|
|
97
193
|
export const BLOCKING_MODES = ['block', 'block_at_perimeter'];
|
|
98
194
|
|
|
195
|
+
export const FS_METHODS = [
|
|
196
|
+
{ name: 'access', promises: true, sync: true, indices: [0] },
|
|
197
|
+
{ name: 'appendFile', promises: true, sync: true, indices: [0] },
|
|
198
|
+
{ name: 'chmod', promises: true, sync: true, indices: [0] },
|
|
199
|
+
{ name: 'chown', promises: true, sync: true, indices: [0] },
|
|
200
|
+
{ name: 'copyFile', promises: true, sync: true, indices: [0, 1] },
|
|
201
|
+
{ name: 'cp', promises: true, sync: true, indices: [0, 1] },
|
|
202
|
+
{ name: 'createReadStream', promises: false, sync: false, indices: [0] },
|
|
203
|
+
{ name: 'createWriteStream', promises: false, sync: false, indices: [0] },
|
|
204
|
+
{ name: 'exists', promises: false, sync: true, indices: [0] },
|
|
205
|
+
{ name: 'lchmod', promises: true, sync: true, indices: [0] },
|
|
206
|
+
{ name: 'lchown', promises: true, sync: true, indices: [0] },
|
|
207
|
+
{ name: 'link', promises: true, sync: true, indices: [0] },
|
|
208
|
+
{ name: 'lstat', promises: true, sync: true, indices: [0] },
|
|
209
|
+
{ name: 'lutimes', promises: true, sync: true, indices: [0] },
|
|
210
|
+
{ name: 'mkdir', promises: true, sync: true, indices: [0] },
|
|
211
|
+
{ name: 'mkdtemp', promises: true, sync: true, indices: [0] },
|
|
212
|
+
{ name: 'open', promises: true, sync: true, indices: [0] },
|
|
213
|
+
{ name: 'openAsBlob', promises: false, sync: false, indices: [0] },
|
|
214
|
+
{ name: 'opendir', promises: true, sync: true, indices: [0] },
|
|
215
|
+
{ name: 'readdir', promises: true, sync: true, indices: [0] },
|
|
216
|
+
{ name: 'readFile', promises: true, sync: true, indices: [0] },
|
|
217
|
+
{ name: 'readlink', promises: true, sync: true, indices: [0] },
|
|
218
|
+
{ name: 'realpath', promises: true, sync: true, indices: [0] },
|
|
219
|
+
{ name: 'rename', promises: true, sync: true, indices: [0, 1] },
|
|
220
|
+
{ name: 'rmdir', promises: true, sync: true, indices: [0] },
|
|
221
|
+
{ name: 'rm', promises: true, sync: true, indices: [0] },
|
|
222
|
+
{ name: 'stat', promises: true, sync: true, indices: [0] },
|
|
223
|
+
{ name: 'statfs', promises: true, sync: true, indices: [0] },
|
|
224
|
+
{ name: 'symlink', promises: true, sync: true, indices: [0, 1] },
|
|
225
|
+
{ name: 'truncate', promises: true, sync: true, indices: [0] },
|
|
226
|
+
{ name: 'unlink', promises: true, sync: true, indices: [0] },
|
|
227
|
+
{ name: 'unwatchFile', promises: false, sync: false, indices: [0] },
|
|
228
|
+
{ name: 'utimes', promises: true, sync: true, indices: [0] },
|
|
229
|
+
{ name: 'watch', promises: true, sync: false, indices: [0] },
|
|
230
|
+
{ name: 'watchFile', promises: false, sync: false, indices: [0] },
|
|
231
|
+
{ name: 'writeFile', promises: true, sync: true, indices: [0] },
|
|
232
|
+
] as const;
|
|
233
|
+
|
|
234
|
+
|
package/src/index.ts
CHANGED
|
@@ -282,3 +282,10 @@ const { trim: origTrim } = String.prototype;
|
|
|
282
282
|
export function trim(str: string, ...args: []) {
|
|
283
283
|
return origTrim.call(str, ...args);
|
|
284
284
|
}
|
|
285
|
+
|
|
286
|
+
import { inspect as originalInspect } from 'util';
|
|
287
|
+
export function inspect(...args: any) {
|
|
288
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
289
|
+
// @ts-ignore
|
|
290
|
+
return originalInspect.call(null, ...args);
|
|
291
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright: 2022 Contrast Security, Inc
|
|
3
|
+
* Contact: support@contrastsecurity.com
|
|
4
|
+
* License: Commercial
|
|
5
|
+
|
|
6
|
+
* NOTICE: This Software and the patented inventions embodied within may only be
|
|
7
|
+
* used as part of Contrast Security’s commercial offerings. Even though it is
|
|
8
|
+
* made available through public repositories, use of this Software is subject to
|
|
9
|
+
* the applicable End User Licensing Agreement found at
|
|
10
|
+
* https://www.contrastsecurity.com/enduser-terms-0317a or as otherwise agreed
|
|
11
|
+
* between Contrast Security and the End User. The Software may not be reverse
|
|
12
|
+
* engineered, modified, repackaged, sold, redistributed or otherwise used in a
|
|
13
|
+
* way not consistent with the End User License Agreement.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { FS_METHODS } from '../constants';
|
|
17
|
+
import { Signature } from '../types';
|
|
18
|
+
|
|
19
|
+
const fs = new Map<string, Signature>(
|
|
20
|
+
FS_METHODS.reduce((sigs, method) => {
|
|
21
|
+
sigs.push([
|
|
22
|
+
`fs.${method.name}`,
|
|
23
|
+
{
|
|
24
|
+
moduleName: 'fs',
|
|
25
|
+
methodName: method.name,
|
|
26
|
+
isModule: true,
|
|
27
|
+
}
|
|
28
|
+
]);
|
|
29
|
+
|
|
30
|
+
if (method.sync) {
|
|
31
|
+
sigs.push([
|
|
32
|
+
`fs.${method.name}Sync`,
|
|
33
|
+
{
|
|
34
|
+
moduleName: 'fs',
|
|
35
|
+
methodName: `${method.name}Sync`,
|
|
36
|
+
isModule: true,
|
|
37
|
+
}
|
|
38
|
+
]);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (method.promises) {
|
|
42
|
+
sigs.push([
|
|
43
|
+
`fs.promises.${method.name}`,
|
|
44
|
+
{
|
|
45
|
+
moduleName: 'fs.promises',
|
|
46
|
+
methodName: method.name,
|
|
47
|
+
isModule: true,
|
|
48
|
+
}
|
|
49
|
+
]);
|
|
50
|
+
|
|
51
|
+
sigs.push([
|
|
52
|
+
`fsPromises.${method.name}`,
|
|
53
|
+
{
|
|
54
|
+
moduleName: 'fsPromises',
|
|
55
|
+
methodName: method.name,
|
|
56
|
+
isModule: true,
|
|
57
|
+
}
|
|
58
|
+
]);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return sigs;
|
|
62
|
+
}, [] as [string, Signature][])
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
export default fs;
|
package/src/signatures/index.ts
CHANGED
|
@@ -13,10 +13,15 @@
|
|
|
13
13
|
* way not consistent with the End User License Agreement.
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
+
import mongodb from './mongodb';
|
|
16
17
|
import mssql from './mssql';
|
|
18
|
+
import fs from './fs';
|
|
19
|
+
import { Signature } from '../types';
|
|
17
20
|
|
|
18
|
-
export const signatures
|
|
21
|
+
export const signatures = new Map<string, Signature>(
|
|
19
22
|
[
|
|
23
|
+
...fs,
|
|
24
|
+
...mongodb,
|
|
20
25
|
...mssql,
|
|
21
26
|
[
|
|
22
27
|
'Url.prototype.parse',
|
|
@@ -414,15 +419,6 @@ export const signatures: Map<string, any> = new Map(
|
|
|
414
419
|
isModule: true,
|
|
415
420
|
}
|
|
416
421
|
],
|
|
417
|
-
[
|
|
418
|
-
'mongodb.Collection.prototype.rename',
|
|
419
|
-
{
|
|
420
|
-
moduleName: 'mongodb',
|
|
421
|
-
version: '>=3.3.0',
|
|
422
|
-
methodName: 'Collection.prototype.rename',
|
|
423
|
-
isModule: true,
|
|
424
|
-
}
|
|
425
|
-
],
|
|
426
422
|
[
|
|
427
423
|
'marsdb.Collection.prototype.find',
|
|
428
424
|
{
|
|
@@ -601,6 +597,22 @@ export const signatures: Map<string, any> = new Map(
|
|
|
601
597
|
isModule: true,
|
|
602
598
|
}
|
|
603
599
|
],
|
|
600
|
+
[
|
|
601
|
+
'child_process.execFile',
|
|
602
|
+
{
|
|
603
|
+
moduleName: 'child_process',
|
|
604
|
+
methodName: 'execFile',
|
|
605
|
+
isModule: true,
|
|
606
|
+
}
|
|
607
|
+
],
|
|
608
|
+
[
|
|
609
|
+
'child_process.execFileSync',
|
|
610
|
+
{
|
|
611
|
+
moduleName: 'child_process',
|
|
612
|
+
methodName: 'execFileSync',
|
|
613
|
+
isModule: true,
|
|
614
|
+
}
|
|
615
|
+
],
|
|
604
616
|
[
|
|
605
617
|
'Math.random',
|
|
606
618
|
{
|
|
@@ -1292,310 +1304,6 @@ export const signatures: Map<string, any> = new Map(
|
|
|
1292
1304
|
target: 'R',
|
|
1293
1305
|
}
|
|
1294
1306
|
],
|
|
1295
|
-
[
|
|
1296
|
-
'fs.access',
|
|
1297
|
-
{
|
|
1298
|
-
moduleName: 'fs',
|
|
1299
|
-
methodName: 'access',
|
|
1300
|
-
isModule: true,
|
|
1301
|
-
}
|
|
1302
|
-
],
|
|
1303
|
-
[
|
|
1304
|
-
'fs.accessSync',
|
|
1305
|
-
{
|
|
1306
|
-
moduleName: 'fs',
|
|
1307
|
-
methodName: 'accessSync',
|
|
1308
|
-
isModule: true,
|
|
1309
|
-
}
|
|
1310
|
-
],
|
|
1311
|
-
[
|
|
1312
|
-
'fs.copyFile',
|
|
1313
|
-
{
|
|
1314
|
-
moduleName: 'fs',
|
|
1315
|
-
methodName: 'copyFile',
|
|
1316
|
-
isModule: true,
|
|
1317
|
-
}
|
|
1318
|
-
],
|
|
1319
|
-
[
|
|
1320
|
-
'fs.copyFileSync',
|
|
1321
|
-
{
|
|
1322
|
-
moduleName: 'fs',
|
|
1323
|
-
methodName: 'copyFileSync',
|
|
1324
|
-
isModule: true,
|
|
1325
|
-
}
|
|
1326
|
-
],
|
|
1327
|
-
[
|
|
1328
|
-
'fs.appendFile',
|
|
1329
|
-
{
|
|
1330
|
-
moduleName: 'fs',
|
|
1331
|
-
methodName: 'appendFile',
|
|
1332
|
-
isModule: true,
|
|
1333
|
-
}
|
|
1334
|
-
],
|
|
1335
|
-
[
|
|
1336
|
-
'fs.appendFileSync',
|
|
1337
|
-
{
|
|
1338
|
-
moduleName: 'fs',
|
|
1339
|
-
methodName: 'appendFileSync',
|
|
1340
|
-
isModule: true,
|
|
1341
|
-
}
|
|
1342
|
-
],
|
|
1343
|
-
[
|
|
1344
|
-
'fs.writeFile',
|
|
1345
|
-
{
|
|
1346
|
-
moduleName: 'fs',
|
|
1347
|
-
methodName: 'writeFile',
|
|
1348
|
-
isModule: true,
|
|
1349
|
-
}
|
|
1350
|
-
],
|
|
1351
|
-
[
|
|
1352
|
-
'fs.writeFileSync',
|
|
1353
|
-
{
|
|
1354
|
-
moduleName: 'fs',
|
|
1355
|
-
methodName: 'writeFileSync',
|
|
1356
|
-
isModule: true,
|
|
1357
|
-
}
|
|
1358
|
-
],
|
|
1359
|
-
[
|
|
1360
|
-
'fs.createWriteStream',
|
|
1361
|
-
{
|
|
1362
|
-
moduleName: 'fs',
|
|
1363
|
-
methodName: 'createWriteStream',
|
|
1364
|
-
isModule: true,
|
|
1365
|
-
}
|
|
1366
|
-
],
|
|
1367
|
-
[
|
|
1368
|
-
'fs.createReadStream',
|
|
1369
|
-
{
|
|
1370
|
-
moduleName: 'fs',
|
|
1371
|
-
methodName: 'createReadStream',
|
|
1372
|
-
isModule: true,
|
|
1373
|
-
}
|
|
1374
|
-
],
|
|
1375
|
-
[
|
|
1376
|
-
'fs.unlink',
|
|
1377
|
-
{
|
|
1378
|
-
moduleName: 'fs',
|
|
1379
|
-
methodName: 'unlink',
|
|
1380
|
-
isModule: true,
|
|
1381
|
-
}
|
|
1382
|
-
],
|
|
1383
|
-
[
|
|
1384
|
-
'fs.unlinkSync',
|
|
1385
|
-
{
|
|
1386
|
-
moduleName: 'fs',
|
|
1387
|
-
methodName: 'unlinkSync',
|
|
1388
|
-
isModule: true,
|
|
1389
|
-
}
|
|
1390
|
-
],
|
|
1391
|
-
[
|
|
1392
|
-
'fs.truncate',
|
|
1393
|
-
{
|
|
1394
|
-
moduleName: 'fs',
|
|
1395
|
-
methodName: 'truncate',
|
|
1396
|
-
isModule: true,
|
|
1397
|
-
}
|
|
1398
|
-
],
|
|
1399
|
-
[
|
|
1400
|
-
'fs.truncateSync',
|
|
1401
|
-
{
|
|
1402
|
-
moduleName: 'fs',
|
|
1403
|
-
methodName: 'truncateSync',
|
|
1404
|
-
isModule: true,
|
|
1405
|
-
}
|
|
1406
|
-
],
|
|
1407
|
-
[
|
|
1408
|
-
'fs.rmdir',
|
|
1409
|
-
{
|
|
1410
|
-
moduleName: 'fs',
|
|
1411
|
-
methodName: 'rmdir',
|
|
1412
|
-
isModule: true,
|
|
1413
|
-
}
|
|
1414
|
-
],
|
|
1415
|
-
[
|
|
1416
|
-
'fs.rmdirSync',
|
|
1417
|
-
{
|
|
1418
|
-
moduleName: 'fs',
|
|
1419
|
-
methodName: 'rmdirSync',
|
|
1420
|
-
isModule: true,
|
|
1421
|
-
}
|
|
1422
|
-
],
|
|
1423
|
-
[
|
|
1424
|
-
'fs.rename',
|
|
1425
|
-
{
|
|
1426
|
-
moduleName: 'fs',
|
|
1427
|
-
methodName: 'rename',
|
|
1428
|
-
isModule: true,
|
|
1429
|
-
}
|
|
1430
|
-
],
|
|
1431
|
-
[
|
|
1432
|
-
'fs.renameSync',
|
|
1433
|
-
{
|
|
1434
|
-
moduleName: 'fs',
|
|
1435
|
-
methodName: 'renameSync',
|
|
1436
|
-
isModule: true,
|
|
1437
|
-
}
|
|
1438
|
-
],
|
|
1439
|
-
[
|
|
1440
|
-
'fs.readFile',
|
|
1441
|
-
{
|
|
1442
|
-
moduleName: 'fs',
|
|
1443
|
-
methodName: 'readFile',
|
|
1444
|
-
isModule: true,
|
|
1445
|
-
}
|
|
1446
|
-
],
|
|
1447
|
-
[
|
|
1448
|
-
'fs.readFileSync',
|
|
1449
|
-
{
|
|
1450
|
-
moduleName: 'fs',
|
|
1451
|
-
methodName: 'readFileSync',
|
|
1452
|
-
isModule: true,
|
|
1453
|
-
}
|
|
1454
|
-
],
|
|
1455
|
-
[
|
|
1456
|
-
'fs.readdir',
|
|
1457
|
-
{
|
|
1458
|
-
moduleName: 'fs',
|
|
1459
|
-
methodName: 'readdir',
|
|
1460
|
-
isModule: true,
|
|
1461
|
-
}
|
|
1462
|
-
],
|
|
1463
|
-
[
|
|
1464
|
-
'fs.readdirSync',
|
|
1465
|
-
{
|
|
1466
|
-
moduleName: 'fs',
|
|
1467
|
-
methodName: 'readdirSync',
|
|
1468
|
-
isModule: true,
|
|
1469
|
-
}
|
|
1470
|
-
],
|
|
1471
|
-
[
|
|
1472
|
-
'fs.open',
|
|
1473
|
-
{
|
|
1474
|
-
moduleName: 'fs',
|
|
1475
|
-
methodName: 'open',
|
|
1476
|
-
isModule: true,
|
|
1477
|
-
}
|
|
1478
|
-
],
|
|
1479
|
-
[
|
|
1480
|
-
'fs.openSync',
|
|
1481
|
-
{
|
|
1482
|
-
moduleName: 'fs',
|
|
1483
|
-
methodName: 'openSync',
|
|
1484
|
-
isModule: true,
|
|
1485
|
-
}
|
|
1486
|
-
],
|
|
1487
|
-
[
|
|
1488
|
-
'fs.mkdir',
|
|
1489
|
-
{
|
|
1490
|
-
moduleName: 'fs',
|
|
1491
|
-
methodName: 'mkdir',
|
|
1492
|
-
isModule: true,
|
|
1493
|
-
}
|
|
1494
|
-
],
|
|
1495
|
-
[
|
|
1496
|
-
'fs.mkdirSync',
|
|
1497
|
-
{
|
|
1498
|
-
moduleName: 'fs',
|
|
1499
|
-
methodName: 'mkdirSync',
|
|
1500
|
-
isModule: true,
|
|
1501
|
-
}
|
|
1502
|
-
],
|
|
1503
|
-
[
|
|
1504
|
-
'fs.readlink',
|
|
1505
|
-
{
|
|
1506
|
-
moduleName: 'fs',
|
|
1507
|
-
methodName: 'readlink',
|
|
1508
|
-
isModule: true,
|
|
1509
|
-
}
|
|
1510
|
-
],
|
|
1511
|
-
[
|
|
1512
|
-
'fs.readlinkSync',
|
|
1513
|
-
{
|
|
1514
|
-
moduleName: 'fs',
|
|
1515
|
-
methodName: 'readlinkSync',
|
|
1516
|
-
isModule: true,
|
|
1517
|
-
}
|
|
1518
|
-
],
|
|
1519
|
-
[
|
|
1520
|
-
'fs.symlink',
|
|
1521
|
-
{
|
|
1522
|
-
moduleName: 'fs',
|
|
1523
|
-
methodName: 'symlink',
|
|
1524
|
-
isModule: true,
|
|
1525
|
-
}
|
|
1526
|
-
],
|
|
1527
|
-
[
|
|
1528
|
-
'fs.symlinkSync',
|
|
1529
|
-
{
|
|
1530
|
-
moduleName: 'fs',
|
|
1531
|
-
methodName: 'symlinkSync',
|
|
1532
|
-
isModule: true,
|
|
1533
|
-
}
|
|
1534
|
-
],
|
|
1535
|
-
[
|
|
1536
|
-
'fs.chmod',
|
|
1537
|
-
{
|
|
1538
|
-
moduleName: 'fs',
|
|
1539
|
-
methodName: 'chmod',
|
|
1540
|
-
isModule: true,
|
|
1541
|
-
}
|
|
1542
|
-
],
|
|
1543
|
-
[
|
|
1544
|
-
'fs.chmodSync',
|
|
1545
|
-
{
|
|
1546
|
-
moduleName: 'fs',
|
|
1547
|
-
methodName: 'chmodSync',
|
|
1548
|
-
isModule: true,
|
|
1549
|
-
}
|
|
1550
|
-
],
|
|
1551
|
-
[
|
|
1552
|
-
'fs.lchmod',
|
|
1553
|
-
{
|
|
1554
|
-
moduleName: 'fs',
|
|
1555
|
-
methodName: 'lchmod',
|
|
1556
|
-
isModule: true,
|
|
1557
|
-
}
|
|
1558
|
-
],
|
|
1559
|
-
[
|
|
1560
|
-
'fs.lchmodSync',
|
|
1561
|
-
{
|
|
1562
|
-
moduleName: 'fs',
|
|
1563
|
-
methodName: 'lchmodSync',
|
|
1564
|
-
isModule: true,
|
|
1565
|
-
}
|
|
1566
|
-
],
|
|
1567
|
-
[
|
|
1568
|
-
'fs.chown',
|
|
1569
|
-
{
|
|
1570
|
-
moduleName: 'fs',
|
|
1571
|
-
methodName: 'chown',
|
|
1572
|
-
isModule: true,
|
|
1573
|
-
}
|
|
1574
|
-
],
|
|
1575
|
-
[
|
|
1576
|
-
'fs.chownSync',
|
|
1577
|
-
{
|
|
1578
|
-
moduleName: 'fs',
|
|
1579
|
-
methodName: 'chownSync',
|
|
1580
|
-
isModule: true,
|
|
1581
|
-
}
|
|
1582
|
-
],
|
|
1583
|
-
[
|
|
1584
|
-
'fs.lchown',
|
|
1585
|
-
{
|
|
1586
|
-
moduleName: 'fs',
|
|
1587
|
-
methodName: 'lchown',
|
|
1588
|
-
isModule: true,
|
|
1589
|
-
}
|
|
1590
|
-
],
|
|
1591
|
-
[
|
|
1592
|
-
'fs.lchownSync',
|
|
1593
|
-
{
|
|
1594
|
-
moduleName: 'fs',
|
|
1595
|
-
methodName: 'lchownSync',
|
|
1596
|
-
isModule: true,
|
|
1597
|
-
}
|
|
1598
|
-
],
|
|
1599
1307
|
[
|
|
1600
1308
|
'querystring.escape',
|
|
1601
1309
|
{
|
|
@@ -2412,5 +2120,5 @@ export const signatures: Map<string, any> = new Map(
|
|
|
2412
2120
|
isModule: true,
|
|
2413
2121
|
}
|
|
2414
2122
|
]
|
|
2415
|
-
]
|
|
2123
|
+
] as [string, Signature][]
|
|
2416
2124
|
);
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright: 2022 Contrast Security, Inc
|
|
3
|
+
* Contact: support@contrastsecurity.com
|
|
4
|
+
* License: Commercial
|
|
5
|
+
|
|
6
|
+
* NOTICE: This Software and the patented inventions embodied within may only be
|
|
7
|
+
* used as part of Contrast Security’s commercial offerings. Even though it is
|
|
8
|
+
* made available through public repositories, use of this Software is subject to
|
|
9
|
+
* the applicable End User Licensing Agreement found at
|
|
10
|
+
* https://www.contrastsecurity.com/enduser-terms-0317a or as otherwise agreed
|
|
11
|
+
* between Contrast Security and the End User. The Software may not be reverse
|
|
12
|
+
* engineered, modified, repackaged, sold, redistributed or otherwise used in a
|
|
13
|
+
* way not consistent with the End User License Agreement.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
const collectionSignatures: [string, any][] = [
|
|
17
|
+
'find',
|
|
18
|
+
'findOne',
|
|
19
|
+
'findAndModify',
|
|
20
|
+
'findOneAndDelete',
|
|
21
|
+
'findOneAndReplace',
|
|
22
|
+
'findOneAndUpdate',
|
|
23
|
+
'remove',
|
|
24
|
+
'removeOne',
|
|
25
|
+
'replaceOne',
|
|
26
|
+
'removeMany',
|
|
27
|
+
'save',
|
|
28
|
+
'update',
|
|
29
|
+
'updateOne',
|
|
30
|
+
'updateMany',
|
|
31
|
+
'deleteOne',
|
|
32
|
+
'deleteMany',
|
|
33
|
+
].map((method) => [
|
|
34
|
+
`mongodb.Collection.prototype.${method}`,
|
|
35
|
+
{
|
|
36
|
+
moduleName: 'mongodb',
|
|
37
|
+
methodName: `Collection.prototype.${method}`,
|
|
38
|
+
isModule: true,
|
|
39
|
+
}
|
|
40
|
+
]);
|
|
41
|
+
|
|
42
|
+
const mongodb: Map<string, any> = new Map([
|
|
43
|
+
...collectionSignatures,
|
|
44
|
+
]);
|
|
45
|
+
|
|
46
|
+
export default mongodb;
|
package/src/signatures/mssql.ts
CHANGED
|
@@ -13,14 +13,16 @@
|
|
|
13
13
|
* way not consistent with the End User License Agreement.
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
+
import { Signature } from '../types';
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
|
|
19
|
+
const mssql = new Map<string, Signature>([
|
|
18
20
|
[
|
|
19
21
|
'mssql/lib/base/prepared-statement.prototype.prepare',
|
|
20
22
|
{
|
|
21
23
|
moduleName: 'mssql',
|
|
22
24
|
version: '>=6.4.0',
|
|
23
|
-
|
|
25
|
+
fileName: 'lib/base/prepared-statement.js',
|
|
24
26
|
methodName: 'PreparedStatement.prototype.prepare',
|
|
25
27
|
isModule: true,
|
|
26
28
|
},
|
|
@@ -30,7 +32,7 @@ const mssql: Map<string, any> = new Map([
|
|
|
30
32
|
{
|
|
31
33
|
moduleName: 'mssql',
|
|
32
34
|
version: '>=6.4.0',
|
|
33
|
-
|
|
35
|
+
fileName: 'lib/base/request.js',
|
|
34
36
|
methodName: 'Request.prototype.batch',
|
|
35
37
|
isModule: true,
|
|
36
38
|
},
|
|
@@ -40,11 +42,11 @@ const mssql: Map<string, any> = new Map([
|
|
|
40
42
|
{
|
|
41
43
|
moduleName: 'mssql',
|
|
42
44
|
version: '>=6.4.0',
|
|
43
|
-
|
|
45
|
+
fileName: 'lib/base/request.js',
|
|
44
46
|
methodName: 'Request.prototype.query',
|
|
45
47
|
isModule: true,
|
|
46
48
|
},
|
|
47
49
|
],
|
|
48
|
-
]);
|
|
50
|
+
] as [string, Signature][]);
|
|
49
51
|
|
|
50
52
|
export default mssql;
|
package/src/types.ts
CHANGED
|
@@ -21,6 +21,17 @@ export interface Installable {
|
|
|
21
21
|
uninstall?(): void | Promise<void>;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
export interface Signature {
|
|
25
|
+
moduleName: string;
|
|
26
|
+
methodName: string;
|
|
27
|
+
fileName?: string;
|
|
28
|
+
version?: string;
|
|
29
|
+
isModule: boolean;
|
|
30
|
+
isConstructor?: boolean;
|
|
31
|
+
source?: 'O' | 'P' | 'R';
|
|
32
|
+
target?: 'O' | 'P' | 'R';
|
|
33
|
+
}
|
|
34
|
+
|
|
24
35
|
export interface AppInfo {
|
|
25
36
|
os: {
|
|
26
37
|
type: string;
|