verification-layer 0.26.0 → 0.27.1
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/ai/config.d.ts +7 -0
- package/dist/ai/config.d.ts.map +1 -1
- package/dist/ai/config.js +7 -0
- package/dist/ai/config.js.map +1 -1
- package/dist/ai/rules/triage.d.ts.map +1 -1
- package/dist/ai/rules/triage.js +43 -16
- package/dist/ai/rules/triage.js.map +1 -1
- package/dist/ai/scanner.d.ts.map +1 -1
- package/dist/ai/scanner.js +5 -0
- package/dist/ai/scanner.js.map +1 -1
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/rule-catalog.json +164 -10
- package/dist/rules/catalog.d.ts +6 -4
- package/dist/rules/catalog.d.ts.map +1 -1
- package/dist/rules/catalog.js +45 -7
- package/dist/rules/catalog.js.map +1 -1
- package/dist/rules/catalog.test.js +25 -0
- package/dist/rules/catalog.test.js.map +1 -1
- package/dist/scan.js +1 -1
- package/dist/scan.js.map +1 -1
- package/dist/scanners/encryption/index.d.ts +4 -14
- package/dist/scanners/encryption/index.d.ts.map +1 -1
- package/dist/scanners/encryption/index.js +18 -42
- package/dist/scanners/encryption/index.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/rule-catalog.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"package": "verification-layer",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"total":
|
|
3
|
+
"version": "0.27.1",
|
|
4
|
+
"total": 143,
|
|
5
5
|
"counts": {
|
|
6
6
|
"phi-exposure": 29,
|
|
7
|
-
"encryption":
|
|
7
|
+
"encryption": 20,
|
|
8
8
|
"audit-logging": 8,
|
|
9
9
|
"access-control": 77,
|
|
10
10
|
"data-retention": 9
|
|
@@ -1258,23 +1258,177 @@
|
|
|
1258
1258
|
"scanner": "audit"
|
|
1259
1259
|
},
|
|
1260
1260
|
{
|
|
1261
|
-
"id": "enc-
|
|
1261
|
+
"id": "enc-md5",
|
|
1262
1262
|
"category": "encryption",
|
|
1263
1263
|
"severity": "high",
|
|
1264
|
-
"title": "
|
|
1265
|
-
"description": "
|
|
1264
|
+
"title": "MD5 hash function",
|
|
1265
|
+
"description": "MD5 hash function is not suitable for protecting PHI.",
|
|
1266
1266
|
"recommendation": "Use AES-256-GCM for encryption and SHA-256 or stronger for hashing.",
|
|
1267
1267
|
"hipaaReference": "§164.312(a)(2)(iv), §164.312(e)(2)(ii)",
|
|
1268
1268
|
"source": "pattern",
|
|
1269
1269
|
"scanner": "encryption"
|
|
1270
1270
|
},
|
|
1271
1271
|
{
|
|
1272
|
-
"id": "enc-
|
|
1272
|
+
"id": "enc-sha1",
|
|
1273
|
+
"category": "encryption",
|
|
1274
|
+
"severity": "medium",
|
|
1275
|
+
"title": "SHA1 hash function",
|
|
1276
|
+
"description": "SHA1 hash function is not suitable for protecting PHI.",
|
|
1277
|
+
"recommendation": "Use AES-256-GCM for encryption and SHA-256 or stronger for hashing.",
|
|
1278
|
+
"hipaaReference": "§164.312(a)(2)(iv), §164.312(e)(2)(ii)",
|
|
1279
|
+
"source": "pattern",
|
|
1280
|
+
"scanner": "encryption"
|
|
1281
|
+
},
|
|
1282
|
+
{
|
|
1283
|
+
"id": "enc-des",
|
|
1284
|
+
"category": "encryption",
|
|
1285
|
+
"severity": "critical",
|
|
1286
|
+
"title": "DES encryption",
|
|
1287
|
+
"description": "DES encryption is not suitable for protecting PHI.",
|
|
1288
|
+
"recommendation": "Use AES-256-GCM for encryption and SHA-256 or stronger for hashing.",
|
|
1289
|
+
"hipaaReference": "§164.312(a)(2)(iv), §164.312(e)(2)(ii)",
|
|
1290
|
+
"source": "pattern",
|
|
1291
|
+
"scanner": "encryption"
|
|
1292
|
+
},
|
|
1293
|
+
{
|
|
1294
|
+
"id": "enc-rc4",
|
|
1295
|
+
"category": "encryption",
|
|
1296
|
+
"severity": "critical",
|
|
1297
|
+
"title": "RC4 encryption",
|
|
1298
|
+
"description": "RC4 encryption is not suitable for protecting PHI.",
|
|
1299
|
+
"recommendation": "Use AES-256-GCM for encryption and SHA-256 or stronger for hashing.",
|
|
1300
|
+
"hipaaReference": "§164.312(a)(2)(iv), §164.312(e)(2)(ii)",
|
|
1301
|
+
"source": "pattern",
|
|
1302
|
+
"scanner": "encryption"
|
|
1303
|
+
},
|
|
1304
|
+
{
|
|
1305
|
+
"id": "enc-deprecated-cipher",
|
|
1306
|
+
"category": "encryption",
|
|
1307
|
+
"severity": "high",
|
|
1308
|
+
"title": "Deprecated cipher method",
|
|
1309
|
+
"description": "Deprecated cipher method is not suitable for protecting PHI.",
|
|
1310
|
+
"recommendation": "Use AES-256-GCM for encryption and SHA-256 or stronger for hashing.",
|
|
1311
|
+
"hipaaReference": "§164.312(a)(2)(iv), §164.312(e)(2)(ii)",
|
|
1312
|
+
"source": "pattern",
|
|
1313
|
+
"scanner": "encryption"
|
|
1314
|
+
},
|
|
1315
|
+
{
|
|
1316
|
+
"id": "enc-ecb-mode",
|
|
1317
|
+
"category": "encryption",
|
|
1318
|
+
"severity": "high",
|
|
1319
|
+
"title": "ECB mode encryption",
|
|
1320
|
+
"description": "ECB mode encryption is not suitable for protecting PHI.",
|
|
1321
|
+
"recommendation": "Use AES-256-GCM for encryption and SHA-256 or stronger for hashing.",
|
|
1322
|
+
"hipaaReference": "§164.312(a)(2)(iv), §164.312(e)(2)(ii)",
|
|
1323
|
+
"source": "pattern",
|
|
1324
|
+
"scanner": "encryption"
|
|
1325
|
+
},
|
|
1326
|
+
{
|
|
1327
|
+
"id": "enc-http-url",
|
|
1273
1328
|
"category": "encryption",
|
|
1274
1329
|
"severity": "high",
|
|
1275
|
-
"title": "
|
|
1276
|
-
"description": "Unencrypted
|
|
1277
|
-
"recommendation": "Enforce TLS 1.2+ for
|
|
1330
|
+
"title": "Unencrypted HTTP URL",
|
|
1331
|
+
"description": "Unencrypted HTTP URL may expose PHI in transit or at rest.",
|
|
1332
|
+
"recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
|
|
1333
|
+
"hipaaReference": "§164.312(e)(1)",
|
|
1334
|
+
"source": "pattern",
|
|
1335
|
+
"scanner": "encryption"
|
|
1336
|
+
},
|
|
1337
|
+
{
|
|
1338
|
+
"id": "enc-ssl-disabled",
|
|
1339
|
+
"category": "encryption",
|
|
1340
|
+
"severity": "critical",
|
|
1341
|
+
"title": "SSL disabled",
|
|
1342
|
+
"description": "SSL disabled may expose PHI in transit or at rest.",
|
|
1343
|
+
"recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
|
|
1344
|
+
"hipaaReference": "§164.312(e)(1)",
|
|
1345
|
+
"source": "pattern",
|
|
1346
|
+
"scanner": "encryption"
|
|
1347
|
+
},
|
|
1348
|
+
{
|
|
1349
|
+
"id": "enc-ssl-verify-disabled",
|
|
1350
|
+
"category": "encryption",
|
|
1351
|
+
"severity": "critical",
|
|
1352
|
+
"title": "SSL verification disabled",
|
|
1353
|
+
"description": "SSL verification disabled may expose PHI in transit or at rest.",
|
|
1354
|
+
"recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
|
|
1355
|
+
"hipaaReference": "§164.312(e)(1)",
|
|
1356
|
+
"source": "pattern",
|
|
1357
|
+
"scanner": "encryption"
|
|
1358
|
+
},
|
|
1359
|
+
{
|
|
1360
|
+
"id": "enc-tls-cert-validation-disabled",
|
|
1361
|
+
"category": "encryption",
|
|
1362
|
+
"severity": "critical",
|
|
1363
|
+
"title": "TLS certificate validation disabled",
|
|
1364
|
+
"description": "TLS certificate validation disabled may expose PHI in transit or at rest.",
|
|
1365
|
+
"recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
|
|
1366
|
+
"hipaaReference": "§164.312(e)(1)",
|
|
1367
|
+
"source": "pattern",
|
|
1368
|
+
"scanner": "encryption"
|
|
1369
|
+
},
|
|
1370
|
+
{
|
|
1371
|
+
"id": "enc-backup-encryption-disabled",
|
|
1372
|
+
"category": "encryption",
|
|
1373
|
+
"severity": "critical",
|
|
1374
|
+
"title": "Backup encryption disabled",
|
|
1375
|
+
"description": "Backup encryption disabled may expose PHI in transit or at rest.",
|
|
1376
|
+
"recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
|
|
1377
|
+
"hipaaReference": "§164.312(e)(1)",
|
|
1378
|
+
"source": "pattern",
|
|
1379
|
+
"scanner": "encryption"
|
|
1380
|
+
},
|
|
1381
|
+
{
|
|
1382
|
+
"id": "enc-db-backup-no-ssl",
|
|
1383
|
+
"category": "encryption",
|
|
1384
|
+
"severity": "high",
|
|
1385
|
+
"title": "Database backup without SSL",
|
|
1386
|
+
"description": "Database backup without SSL may expose PHI in transit or at rest.",
|
|
1387
|
+
"recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
|
|
1388
|
+
"hipaaReference": "§164.312(e)(1)",
|
|
1389
|
+
"source": "pattern",
|
|
1390
|
+
"scanner": "encryption"
|
|
1391
|
+
},
|
|
1392
|
+
{
|
|
1393
|
+
"id": "enc-backup-file-unencrypted",
|
|
1394
|
+
"category": "encryption",
|
|
1395
|
+
"severity": "high",
|
|
1396
|
+
"title": "Unencrypted backup file format",
|
|
1397
|
+
"description": "Unencrypted backup file format may expose PHI in transit or at rest.",
|
|
1398
|
+
"recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
|
|
1399
|
+
"hipaaReference": "§164.312(e)(1)",
|
|
1400
|
+
"source": "pattern",
|
|
1401
|
+
"scanner": "encryption"
|
|
1402
|
+
},
|
|
1403
|
+
{
|
|
1404
|
+
"id": "enc-phi-backup-unencrypted",
|
|
1405
|
+
"category": "encryption",
|
|
1406
|
+
"severity": "critical",
|
|
1407
|
+
"title": "PHI backup without encryption",
|
|
1408
|
+
"description": "PHI backup without encryption may expose PHI in transit or at rest.",
|
|
1409
|
+
"recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
|
|
1410
|
+
"hipaaReference": "§164.312(e)(1)",
|
|
1411
|
+
"source": "pattern",
|
|
1412
|
+
"scanner": "encryption"
|
|
1413
|
+
},
|
|
1414
|
+
{
|
|
1415
|
+
"id": "enc-s3-backup-no-sse",
|
|
1416
|
+
"category": "encryption",
|
|
1417
|
+
"severity": "high",
|
|
1418
|
+
"title": "S3 backup without server-side encryption",
|
|
1419
|
+
"description": "S3 backup without server-side encryption may expose PHI in transit or at rest.",
|
|
1420
|
+
"recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
|
|
1421
|
+
"hipaaReference": "§164.312(e)(1)",
|
|
1422
|
+
"source": "pattern",
|
|
1423
|
+
"scanner": "encryption"
|
|
1424
|
+
},
|
|
1425
|
+
{
|
|
1426
|
+
"id": "enc-backup-storage-unencrypted",
|
|
1427
|
+
"category": "encryption",
|
|
1428
|
+
"severity": "medium",
|
|
1429
|
+
"title": "Backup storage without encryption specified",
|
|
1430
|
+
"description": "Backup storage without encryption specified may expose PHI in transit or at rest.",
|
|
1431
|
+
"recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
|
|
1278
1432
|
"hipaaReference": "§164.312(e)(1)",
|
|
1279
1433
|
"source": "pattern",
|
|
1280
1434
|
"scanner": "encryption"
|
package/dist/rules/catalog.d.ts
CHANGED
|
@@ -7,10 +7,12 @@
|
|
|
7
7
|
* Three forms of built-in rules are folded in here:
|
|
8
8
|
* 1. Exported pattern arrays (e.g. PHI_PATTERNS, ALL_*_PATTERNS).
|
|
9
9
|
* 2. Inline rule arrays that live in a scanner's index.ts (ACCESS_CONTROL_ISSUES,
|
|
10
|
-
* RETENTION_ISSUES, SECURITY_PATTERNS
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
10
|
+
* RETENTION_ISSUES, SECURITY_PATTERNS, WEAK_CRYPTO_PATTERNS,
|
|
11
|
+
* MISSING_ENCRYPTION_PATTERNS).
|
|
12
|
+
* 3. Scanners that build findings inline with dynamic per-finding ids. The
|
|
13
|
+
* audit scanner exposes an explicit metadata array of its STABLE rule
|
|
14
|
+
* families (AUDIT_RULES) — fixed ids only. (Encryption now carries a stable
|
|
15
|
+
* `id` on every pattern, so each distinct check is listed individually.)
|
|
14
16
|
*
|
|
15
17
|
* The category of a rule is ALWAYS the owning scanner's canonical `.category`
|
|
16
18
|
* (the AI rules are normalized from their short tokens). A module-load
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/rules/catalog.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/rules/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AA0B1D,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;AAEzB,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AAE9E,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAwKD,mFAAmF;AACnF,eAAO,MAAM,YAAY,EAAE,WAAW,EAAmB,CAAC;AAE1D,iCAAiC;AACjC,wBAAgB,WAAW,IAAI,WAAW,EAAE,CAE3C;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,EAAE,CAEpE;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAQ5D"}
|
package/dist/rules/catalog.js
CHANGED
|
@@ -7,10 +7,12 @@
|
|
|
7
7
|
* Three forms of built-in rules are folded in here:
|
|
8
8
|
* 1. Exported pattern arrays (e.g. PHI_PATTERNS, ALL_*_PATTERNS).
|
|
9
9
|
* 2. Inline rule arrays that live in a scanner's index.ts (ACCESS_CONTROL_ISSUES,
|
|
10
|
-
* RETENTION_ISSUES, SECURITY_PATTERNS
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
10
|
+
* RETENTION_ISSUES, SECURITY_PATTERNS, WEAK_CRYPTO_PATTERNS,
|
|
11
|
+
* MISSING_ENCRYPTION_PATTERNS).
|
|
12
|
+
* 3. Scanners that build findings inline with dynamic per-finding ids. The
|
|
13
|
+
* audit scanner exposes an explicit metadata array of its STABLE rule
|
|
14
|
+
* families (AUDIT_RULES) — fixed ids only. (Encryption now carries a stable
|
|
15
|
+
* `id` on every pattern, so each distinct check is listed individually.)
|
|
14
16
|
*
|
|
15
17
|
* The category of a rule is ALWAYS the owning scanner's canonical `.category`
|
|
16
18
|
* (the AI rules are normalized from their short tokens). A module-load
|
|
@@ -36,9 +38,9 @@ import { ALL_REVOCATION_PATTERNS } from '../scanners/revocation/patterns.js';
|
|
|
36
38
|
import { ACCESS_CONTROL_ISSUES } from '../scanners/access/index.js';
|
|
37
39
|
import { RETENTION_ISSUES } from '../scanners/retention/index.js';
|
|
38
40
|
import { SECURITY_PATTERNS } from '../scanners/security/index.js';
|
|
41
|
+
import { WEAK_CRYPTO_PATTERNS, MISSING_ENCRYPTION_PATTERNS } from '../scanners/encryption/index.js';
|
|
39
42
|
// Form 3 — stable families for scanners that emit dynamic per-finding ids
|
|
40
43
|
import { AUDIT_RULES } from '../scanners/audit/index.js';
|
|
41
|
-
import { ENCRYPTION_RULES } from '../scanners/encryption/index.js';
|
|
42
44
|
const SEVERITIES = ['critical', 'high', 'medium', 'low', 'info'];
|
|
43
45
|
function normalizeSeverity(severity) {
|
|
44
46
|
const value = severity.toLowerCase();
|
|
@@ -85,6 +87,41 @@ function fromAiRules() {
|
|
|
85
87
|
};
|
|
86
88
|
});
|
|
87
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* The encryption scanner builds findings inline (with `<id>-<line>` finding ids),
|
|
92
|
+
* so its checks are mapped to catalog entries directly from the two pattern
|
|
93
|
+
* arrays. Each pattern carries a stable `id` and an `issue` (its short title);
|
|
94
|
+
* we attach an accurate HIPAA-relevant description, fix recommendation, and the
|
|
95
|
+
* same HIPAA reference the scanner emits. Detection logic is unchanged — these
|
|
96
|
+
* are the same checks, now enumerated individually.
|
|
97
|
+
*/
|
|
98
|
+
const WEAK_CRYPTO_HIPAA_REF = '§164.312(a)(2)(iv), §164.312(e)(2)(ii)';
|
|
99
|
+
const MISSING_ENCRYPTION_HIPAA_REF = '§164.312(e)(1)';
|
|
100
|
+
function encryptionRules() {
|
|
101
|
+
const weak = WEAK_CRYPTO_PATTERNS.map((pattern) => ({
|
|
102
|
+
id: pattern.id,
|
|
103
|
+
category: 'encryption',
|
|
104
|
+
severity: normalizeSeverity(pattern.severity),
|
|
105
|
+
title: pattern.issue,
|
|
106
|
+
description: `${pattern.issue} is not suitable for protecting PHI.`,
|
|
107
|
+
recommendation: 'Use AES-256-GCM for encryption and SHA-256 or stronger for hashing.',
|
|
108
|
+
hipaaReference: WEAK_CRYPTO_HIPAA_REF,
|
|
109
|
+
source: 'pattern',
|
|
110
|
+
scanner: 'encryption',
|
|
111
|
+
}));
|
|
112
|
+
const missing = MISSING_ENCRYPTION_PATTERNS.map((pattern) => ({
|
|
113
|
+
id: pattern.id,
|
|
114
|
+
category: 'encryption',
|
|
115
|
+
severity: normalizeSeverity(pattern.severity),
|
|
116
|
+
title: pattern.issue,
|
|
117
|
+
description: `${pattern.issue} may expose PHI in transit or at rest.`,
|
|
118
|
+
recommendation: 'Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.',
|
|
119
|
+
hipaaReference: MISSING_ENCRYPTION_HIPAA_REF,
|
|
120
|
+
source: 'pattern',
|
|
121
|
+
scanner: 'encryption',
|
|
122
|
+
}));
|
|
123
|
+
return [...weak, ...missing];
|
|
124
|
+
}
|
|
88
125
|
function buildCatalog() {
|
|
89
126
|
const rules = [
|
|
90
127
|
// Form 1 — exported pattern arrays (category = owning scanner's .category)
|
|
@@ -104,9 +141,10 @@ function buildCatalog() {
|
|
|
104
141
|
...fromScanner('access', 'access-control', ACCESS_CONTROL_ISSUES),
|
|
105
142
|
...fromScanner('retention', 'data-retention', RETENTION_ISSUES),
|
|
106
143
|
...fromScanner('security', 'access-control', SECURITY_PATTERNS),
|
|
107
|
-
// Form 3 —
|
|
144
|
+
// Form 3 — dynamic-id scanners
|
|
108
145
|
...fromScanner('audit', 'audit-logging', AUDIT_RULES),
|
|
109
|
-
|
|
146
|
+
// Encryption: one catalog entry per distinct check (stable ids on patterns).
|
|
147
|
+
...encryptionRules(),
|
|
110
148
|
// AI rules (normalized categories)
|
|
111
149
|
...fromAiRules(),
|
|
112
150
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/rules/catalog.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/rules/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,mCAAmC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,iEAAiE;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAEpG,0EAA0E;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAiCzD,MAAM,UAAU,GAA+B,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAE7F,SAAS,iBAAiB,CAAC,QAAgB;IACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,OAAQ,UAAgC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtD,CAAC,CAAE,KAAyB;QAC5B,CAAC,CAAC,MAAM,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAClB,OAAe,EACf,QAAkB,EAClB,KAAgC;IAEhC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,QAAQ;QACR,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC1C,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE;QACzC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,MAAM,EAAE,SAAkB;QAC1B,OAAO;KACR,CAAC,CAAC,CAAC;AACN,CAAC;AAED,gFAAgF;AAChF,MAAM,eAAe,GAA6B;IAChD,GAAG,EAAE,cAAc;IACnB,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,eAAe;IACtB,MAAM,EAAE,gBAAgB;IACxB,SAAS,EAAE,gBAAgB;CAC5B,CAAC;AAEF,SAAS,WAAW;IAClB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,CAAC,QAAQ,SAAS,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/F,CAAC;QACD,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,QAAQ;YACR,+EAA+E;YAC/E,QAAQ,EAAE,MAAe;YACzB,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,WAAW,EAAE,IAAI,CAAC,IAAI;YACtB,MAAM,EAAE,IAAa;YACrB,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,qBAAqB,GAAG,wCAAwC,CAAC;AACvE,MAAM,4BAA4B,GAAG,gBAAgB,CAAC;AAEtD,SAAS,eAAe;IACtB,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAe,EAAE,CAAC,CAAC;QAC/D,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC7C,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,sCAAsC;QACnE,cAAc,EAAE,qEAAqE;QACrF,cAAc,EAAE,qBAAqB;QACrC,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,YAAY;KACtB,CAAC,CAAC,CAAC;IACJ,MAAM,OAAO,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAC,OAAO,EAAe,EAAE,CAAC,CAAC;QACzE,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC7C,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,wCAAwC;QACrE,cAAc,EAAE,kFAAkF;QAClG,cAAc,EAAE,4BAA4B;QAC5C,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,YAAY;KACtB,CAAC,CAAC,CAAC;IACJ,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,KAAK,GAAkB;QAC3B,2EAA2E;QAC3E,GAAG,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,YAAY,CAAC;QACnD,GAAG,WAAW,CAAC,QAAQ,EAAE,gBAAgB,EAAE,kBAAkB,CAAC;QAC9D,GAAG,WAAW,CAAC,WAAW,EAAE,gBAAgB,EAAE,uBAAuB,CAAC;QACtE,GAAG,WAAW,CAAC,cAAc,EAAE,gBAAgB,EAAE,yBAAyB,CAAC;QAC3E,GAAG,WAAW,CAAC,eAAe,EAAE,eAAe,EAAE,0BAA0B,CAAC;QAC5E,GAAG,WAAW,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;QACpE,GAAG,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,kBAAkB,CAAC;QAC7D,GAAG,WAAW,CAAC,aAAa,EAAE,gBAAgB,EAAE,wBAAwB,CAAC;QACzE,GAAG,WAAW,CAAC,aAAa,EAAE,YAAY,EAAE,uBAAuB,CAAC;QACpE,GAAG,WAAW,CAAC,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,CAAC;QAC3D,GAAG,WAAW,CAAC,cAAc,EAAE,gBAAgB,EAAE,yBAAyB,CAAC;QAC3E,GAAG,WAAW,CAAC,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,CAAC;QACvE,gDAAgD;QAChD,GAAG,WAAW,CAAC,QAAQ,EAAE,gBAAgB,EAAE,qBAAqB,CAAC;QACjE,GAAG,WAAW,CAAC,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;QAC/D,GAAG,WAAW,CAAC,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,CAAC;QAC/D,+BAA+B;QAC/B,GAAG,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,CAAC;QACrD,6EAA6E;QAC7E,GAAG,eAAe,EAAE;QACpB,mCAAmC;QACnC,GAAG,WAAW,EAAE;KACjB,CAAC;IAEF,+EAA+E;IAC/E,uDAAuD;IACvD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC5C,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACtB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,wCAAwC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAEnC,4EAA4E;IAC5E,oEAAoE;IACpE,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,YAAY,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,IAAI,KAAK,CACb,4CAA4C,MAAM,cAAc,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClG,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,MAAM,YAAY,GAAkB,YAAY,EAAE,CAAC;AAE1D,iCAAiC;AACjC,MAAM,UAAU,WAAW;IACzB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,kBAAkB,CAAC,QAAkB;IACnD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AACnE,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAC1B,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -42,6 +42,31 @@ describe('built-in rule catalog', () => {
|
|
|
42
42
|
expect(retentionIds).toContain(id);
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
|
+
it('lists every distinct encryption check with stable ids (no collapsed families)', () => {
|
|
46
|
+
const encryption = getRulesByCategory('encryption');
|
|
47
|
+
const ids = encryption.map((r) => r.id);
|
|
48
|
+
// 16 encryption-scanner patterns + 3 credentials + 1 AI (HIPAA-SEC-001)
|
|
49
|
+
expect(encryption.length).toBe(20);
|
|
50
|
+
// The collapsed families must be gone.
|
|
51
|
+
expect(ids).not.toContain('enc-weak');
|
|
52
|
+
expect(ids).not.toContain('enc-missing');
|
|
53
|
+
// Every distinct check is now individually enumerated.
|
|
54
|
+
const expectedEncryptionScannerIds = [
|
|
55
|
+
'enc-md5', 'enc-sha1', 'enc-des', 'enc-rc4', 'enc-deprecated-cipher', 'enc-ecb-mode',
|
|
56
|
+
'enc-http-url', 'enc-ssl-disabled', 'enc-ssl-verify-disabled',
|
|
57
|
+
'enc-tls-cert-validation-disabled', 'enc-backup-encryption-disabled',
|
|
58
|
+
'enc-db-backup-no-ssl', 'enc-backup-file-unencrypted', 'enc-phi-backup-unencrypted',
|
|
59
|
+
'enc-s3-backup-no-sse', 'enc-backup-storage-unencrypted',
|
|
60
|
+
];
|
|
61
|
+
for (const id of expectedEncryptionScannerIds) {
|
|
62
|
+
expect(ids).toContain(id);
|
|
63
|
+
}
|
|
64
|
+
// Severities are preserved from the patterns (not flattened to one value).
|
|
65
|
+
const desRule = encryption.find((r) => r.id === 'enc-des');
|
|
66
|
+
expect(desRule?.severity).toBe('critical');
|
|
67
|
+
const sha1Rule = encryption.find((r) => r.id === 'enc-sha1');
|
|
68
|
+
expect(sha1Rule?.severity).toBe('medium');
|
|
69
|
+
});
|
|
45
70
|
it('normalizes severity to lowercase and marks AI rules as info', () => {
|
|
46
71
|
const severities = new Set(['critical', 'high', 'medium', 'low', 'info']);
|
|
47
72
|
for (const rule of RULE_CATALOG) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.test.js","sourceRoot":"","sources":["../../src/rules/catalog.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"catalog.test.js","sourceRoot":"","sources":["../../src/rules/catalog.test.ts"],"names":[],"mappings":"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"}
|
package/dist/scan.js
CHANGED
|
@@ -194,7 +194,7 @@ export async function scan(options) {
|
|
|
194
194
|
return finding;
|
|
195
195
|
});
|
|
196
196
|
// Apply AI triage if enabled and available
|
|
197
|
-
if (config.ai?.enableTriage !== false && isAIAvailable()) {
|
|
197
|
+
if (options.enableAI !== false && config.ai?.enableTriage !== false && isAIAvailable()) {
|
|
198
198
|
try {
|
|
199
199
|
// Load file contents for triage (skip special/virtual files)
|
|
200
200
|
const fileContents = new Map();
|
package/dist/scan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +1,27 @@
|
|
|
1
1
|
import type { Scanner, FixType } from '../../types.js';
|
|
2
2
|
export declare const WEAK_CRYPTO_PATTERNS: ({
|
|
3
|
+
id: string;
|
|
3
4
|
regex: RegExp;
|
|
4
5
|
issue: string;
|
|
5
6
|
severity: "high";
|
|
6
7
|
} | {
|
|
8
|
+
id: string;
|
|
7
9
|
regex: RegExp;
|
|
8
10
|
issue: string;
|
|
9
11
|
severity: "medium";
|
|
10
12
|
} | {
|
|
13
|
+
id: string;
|
|
11
14
|
regex: RegExp;
|
|
12
15
|
issue: string;
|
|
13
16
|
severity: "critical";
|
|
14
17
|
})[];
|
|
15
18
|
export declare const MISSING_ENCRYPTION_PATTERNS: Array<{
|
|
19
|
+
id: string;
|
|
16
20
|
regex: RegExp;
|
|
17
21
|
issue: string;
|
|
18
22
|
severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
|
|
19
23
|
checkSafe?: boolean;
|
|
20
24
|
fixType?: FixType;
|
|
21
25
|
}>;
|
|
22
|
-
/**
|
|
23
|
-
* Stable rule families emitted by this scanner for the built-in rule catalog.
|
|
24
|
-
* Findings carry dynamic ids (`enc-weak-<line>`, `enc-missing-<line>`) derived
|
|
25
|
-
* from WEAK_CRYPTO_PATTERNS and MISSING_ENCRYPTION_PATTERNS; these are the FIXED
|
|
26
|
-
* families only — never the per-finding suffix.
|
|
27
|
-
*/
|
|
28
|
-
export declare const ENCRYPTION_RULES: {
|
|
29
|
-
id: string;
|
|
30
|
-
severity: "high";
|
|
31
|
-
title: string;
|
|
32
|
-
description: string;
|
|
33
|
-
recommendation: string;
|
|
34
|
-
hipaaReference: string;
|
|
35
|
-
}[];
|
|
36
26
|
export declare const encryptionScanner: Scanner;
|
|
37
27
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scanners/encryption/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAwB,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAI7E,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scanners/encryption/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAwB,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAI7E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;IAOhC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAYA,CAAC;AAeF,eAAO,MAAM,iBAAiB,EAAE,OA2E/B,CAAC"}
|
|
@@ -2,25 +2,25 @@ import { readFile } from 'fs/promises';
|
|
|
2
2
|
import { isSafeHttpUrl, DEFAULT_CONFIG } from '../../config.js';
|
|
3
3
|
import { getContextLines } from '../../utils/context.js';
|
|
4
4
|
export const WEAK_CRYPTO_PATTERNS = [
|
|
5
|
-
{ regex: /\bmd5\s*\(/i, issue: 'MD5 hash function', severity: 'high' },
|
|
6
|
-
{ regex: /\bsha1\s*\(/i, issue: 'SHA1 hash function', severity: 'medium' },
|
|
7
|
-
{ regex: /\bdes\b/i, issue: 'DES encryption', severity: 'critical' },
|
|
8
|
-
{ regex: /\b(rc4|arcfour)\b/i, issue: 'RC4 encryption', severity: 'critical' },
|
|
9
|
-
{ regex: /createCipher\s*\(/i, issue: 'Deprecated cipher method', severity: 'high' },
|
|
10
|
-
{ regex: /\bECB\b/, issue: 'ECB mode encryption', severity: 'high' },
|
|
5
|
+
{ id: 'enc-md5', regex: /\bmd5\s*\(/i, issue: 'MD5 hash function', severity: 'high' },
|
|
6
|
+
{ id: 'enc-sha1', regex: /\bsha1\s*\(/i, issue: 'SHA1 hash function', severity: 'medium' },
|
|
7
|
+
{ id: 'enc-des', regex: /\bdes\b/i, issue: 'DES encryption', severity: 'critical' },
|
|
8
|
+
{ id: 'enc-rc4', regex: /\b(rc4|arcfour)\b/i, issue: 'RC4 encryption', severity: 'critical' },
|
|
9
|
+
{ id: 'enc-deprecated-cipher', regex: /createCipher\s*\(/i, issue: 'Deprecated cipher method', severity: 'high' },
|
|
10
|
+
{ id: 'enc-ecb-mode', regex: /\bECB\b/, issue: 'ECB mode encryption', severity: 'high' },
|
|
11
11
|
];
|
|
12
12
|
export const MISSING_ENCRYPTION_PATTERNS = [
|
|
13
|
-
{ regex: /http:\/\/(?!localhost|127\.0\.0\.1)/i, issue: 'Unencrypted HTTP URL', severity: 'high', checkSafe: true, fixType: 'http-url' },
|
|
14
|
-
{ regex: /ssl\s*[:=]\s*false/i, issue: 'SSL disabled', severity: 'critical' },
|
|
15
|
-
{ regex: /verify\s*[:=]\s*false.*ssl/i, issue: 'SSL verification disabled', severity: 'critical' },
|
|
16
|
-
{ regex: /rejectUnauthorized\s*:\s*false/i, issue: 'TLS certificate validation disabled', severity: 'critical' },
|
|
13
|
+
{ id: 'enc-http-url', regex: /http:\/\/(?!localhost|127\.0\.0\.1)/i, issue: 'Unencrypted HTTP URL', severity: 'high', checkSafe: true, fixType: 'http-url' },
|
|
14
|
+
{ id: 'enc-ssl-disabled', regex: /ssl\s*[:=]\s*false/i, issue: 'SSL disabled', severity: 'critical' },
|
|
15
|
+
{ id: 'enc-ssl-verify-disabled', regex: /verify\s*[:=]\s*false.*ssl/i, issue: 'SSL verification disabled', severity: 'critical' },
|
|
16
|
+
{ id: 'enc-tls-cert-validation-disabled', regex: /rejectUnauthorized\s*:\s*false/i, issue: 'TLS certificate validation disabled', severity: 'critical' },
|
|
17
17
|
// Unencrypted backup patterns
|
|
18
|
-
{ regex: /backup.*encrypt\s*[:=]\s*false|encrypt\s*[:=]\s*false.*backup/i, issue: 'Backup encryption disabled', severity: 'critical', fixType: 'backup-unencrypted' },
|
|
19
|
-
{ regex: /mysqldump(?!.*--ssl).*password|pg_dump(?!.*--ssl)/i, issue: 'Database backup without SSL', severity: 'high' },
|
|
20
|
-
{ regex: /backup.*(\.sql|\.csv|\.json|\.txt)\b(?!.*encrypt|.*gpg|.*aes)/i, issue: 'Unencrypted backup file format', severity: 'high', fixType: 'backup-unencrypted' },
|
|
21
|
-
{ regex: /writeFile.*backup.*patient|patient.*backup.*writeFile/i, issue: 'PHI backup without encryption', severity: 'critical', fixType: 'backup-unencrypted' },
|
|
22
|
-
{ regex: /s3.*upload.*backup(?!.*encrypt|.*sse|.*kms)/i, issue: 'S3 backup without server-side encryption', severity: 'high' },
|
|
23
|
-
{ regex: /backup.*storage(?!.*encrypt)|storage.*backup(?!.*encrypt)/i, issue: 'Backup storage without encryption specified', severity: 'medium' },
|
|
18
|
+
{ id: 'enc-backup-encryption-disabled', regex: /backup.*encrypt\s*[:=]\s*false|encrypt\s*[:=]\s*false.*backup/i, issue: 'Backup encryption disabled', severity: 'critical', fixType: 'backup-unencrypted' },
|
|
19
|
+
{ id: 'enc-db-backup-no-ssl', regex: /mysqldump(?!.*--ssl).*password|pg_dump(?!.*--ssl)/i, issue: 'Database backup without SSL', severity: 'high' },
|
|
20
|
+
{ id: 'enc-backup-file-unencrypted', regex: /backup.*(\.sql|\.csv|\.json|\.txt)\b(?!.*encrypt|.*gpg|.*aes)/i, issue: 'Unencrypted backup file format', severity: 'high', fixType: 'backup-unencrypted' },
|
|
21
|
+
{ id: 'enc-phi-backup-unencrypted', regex: /writeFile.*backup.*patient|patient.*backup.*writeFile/i, issue: 'PHI backup without encryption', severity: 'critical', fixType: 'backup-unencrypted' },
|
|
22
|
+
{ id: 'enc-s3-backup-no-sse', regex: /s3.*upload.*backup(?!.*encrypt|.*sse|.*kms)/i, issue: 'S3 backup without server-side encryption', severity: 'high' },
|
|
23
|
+
{ id: 'enc-backup-storage-unencrypted', regex: /backup.*storage(?!.*encrypt)|storage.*backup(?!.*encrypt)/i, issue: 'Backup storage without encryption specified', severity: 'medium' },
|
|
24
24
|
];
|
|
25
25
|
/** Detect test, fixture, example, doc, migration, and seed files */
|
|
26
26
|
function isReducedConfidenceFile(filePath) {
|
|
@@ -35,30 +35,6 @@ function isCommentOrNonFunctional(line) {
|
|
|
35
35
|
return true;
|
|
36
36
|
return false;
|
|
37
37
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Stable rule families emitted by this scanner for the built-in rule catalog.
|
|
40
|
-
* Findings carry dynamic ids (`enc-weak-<line>`, `enc-missing-<line>`) derived
|
|
41
|
-
* from WEAK_CRYPTO_PATTERNS and MISSING_ENCRYPTION_PATTERNS; these are the FIXED
|
|
42
|
-
* families only — never the per-finding suffix.
|
|
43
|
-
*/
|
|
44
|
-
export const ENCRYPTION_RULES = [
|
|
45
|
-
{
|
|
46
|
-
id: 'enc-weak',
|
|
47
|
-
severity: 'high',
|
|
48
|
-
title: 'Weak cryptography',
|
|
49
|
-
description: 'Weak or deprecated cryptographic primitive (MD5, SHA1, DES, RC4, ECB mode, or a deprecated cipher method) used where PHI must be protected.',
|
|
50
|
-
recommendation: 'Use AES-256-GCM for encryption and SHA-256 or stronger for hashing.',
|
|
51
|
-
hipaaReference: '§164.312(a)(2)(iv), §164.312(e)(2)(ii)',
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
id: 'enc-missing',
|
|
55
|
-
severity: 'high',
|
|
56
|
-
title: 'Missing or disabled encryption',
|
|
57
|
-
description: 'Unencrypted transport (HTTP), disabled TLS/SSL verification, or unencrypted backups that may expose PHI in transit or at rest.',
|
|
58
|
-
recommendation: 'Enforce TLS 1.2+ for all PHI transmission and encrypt backups at rest.',
|
|
59
|
-
hipaaReference: '§164.312(e)(1)',
|
|
60
|
-
},
|
|
61
|
-
];
|
|
62
38
|
export const encryptionScanner = {
|
|
63
39
|
name: 'Encryption Scanner',
|
|
64
40
|
category: 'encryption',
|
|
@@ -77,7 +53,7 @@ export const encryptionScanner = {
|
|
|
77
53
|
for (const pattern of WEAK_CRYPTO_PATTERNS) {
|
|
78
54
|
if (pattern.regex.test(line)) {
|
|
79
55
|
findings.push({
|
|
80
|
-
id:
|
|
56
|
+
id: `${pattern.id}-${lineNum}`,
|
|
81
57
|
category: 'encryption',
|
|
82
58
|
severity: pattern.severity,
|
|
83
59
|
title: `Weak cryptography: ${pattern.issue}`,
|
|
@@ -105,7 +81,7 @@ export const encryptionScanner = {
|
|
|
105
81
|
continue;
|
|
106
82
|
}
|
|
107
83
|
findings.push({
|
|
108
|
-
id:
|
|
84
|
+
id: `${pattern.id}-${lineNum}`,
|
|
109
85
|
category: 'encryption',
|
|
110
86
|
severity: pattern.severity,
|
|
111
87
|
title: `Encryption issue: ${pattern.issue}`,
|