muaddib-scanner 2.2.1 → 2.2.3

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 (30) hide show
  1. package/README.fr.md +1 -1
  2. package/README.md +1 -1
  3. package/package.json +1 -1
  4. package/src/response/playbooks.js +10 -0
  5. package/src/rules/index.js +23 -0
  6. package/src/scanner/ast.js +71 -0
  7. package/src/scanner/dataflow.js +8 -1
  8. package/datasets/holdout-v2/conditional-os-payload/index.js +0 -36
  9. package/datasets/holdout-v2/conditional-os-payload/package.json +0 -6
  10. package/datasets/holdout-v2/env-var-reconstruction/index.js +0 -21
  11. package/datasets/holdout-v2/env-var-reconstruction/package.json +0 -6
  12. package/datasets/holdout-v2/github-workflow-inject/index.js +0 -36
  13. package/datasets/holdout-v2/github-workflow-inject/package.json +0 -6
  14. package/datasets/holdout-v2/homedir-ssh-key-steal/index.js +0 -29
  15. package/datasets/holdout-v2/homedir-ssh-key-steal/package.json +0 -6
  16. package/datasets/holdout-v2/npm-cache-poison/index.js +0 -38
  17. package/datasets/holdout-v2/npm-cache-poison/package.json +0 -6
  18. package/datasets/holdout-v2/npm-lifecycle-preinstall-curl/package.json +0 -8
  19. package/datasets/holdout-v2/process-env-proxy-getter/index.js +0 -35
  20. package/datasets/holdout-v2/process-env-proxy-getter/package.json +0 -6
  21. package/datasets/holdout-v2/readable-stream-hijack/index.js +0 -44
  22. package/datasets/holdout-v2/readable-stream-hijack/package.json +0 -6
  23. package/datasets/holdout-v2/setTimeout-chain/index.js +0 -50
  24. package/datasets/holdout-v2/setTimeout-chain/package.json +0 -6
  25. package/datasets/holdout-v2/wasm-loader/index.js +0 -46
  26. package/datasets/holdout-v2/wasm-loader/package.json +0 -6
  27. package/metrics/v2.1.5.json +0 -753
  28. package/metrics/v2.2.0.json +0 -753
  29. package/nul +0 -0
  30. /package/assets/{logo2removebg.png → muaddibLogo.png} +0 -0
@@ -1,753 +0,0 @@
1
- {
2
- "version": "2.1.5",
3
- "date": "2026-02-20T13:40:35.266Z",
4
- "groundTruth": {
5
- "detected": 4,
6
- "total": 4,
7
- "tpr": 1,
8
- "details": [
9
- {
10
- "name": "event-stream",
11
- "id": "GT-001",
12
- "score": 25,
13
- "detected": true,
14
- "threshold": 3
15
- },
16
- {
17
- "name": "ua-parser-js",
18
- "id": "GT-002",
19
- "score": 3,
20
- "detected": true,
21
- "threshold": 3
22
- },
23
- {
24
- "name": "coa",
25
- "id": "GT-003",
26
- "score": 23,
27
- "detected": true,
28
- "threshold": 3
29
- },
30
- {
31
- "name": "node-ipc",
32
- "id": "GT-004",
33
- "score": 25,
34
- "detected": true,
35
- "threshold": 3
36
- }
37
- ]
38
- },
39
- "benign": {
40
- "flagged": 0,
41
- "total": 98,
42
- "fpr": 0,
43
- "details": [
44
- {
45
- "name": "express",
46
- "score": 0,
47
- "flagged": false
48
- },
49
- {
50
- "name": "lodash",
51
- "score": 0,
52
- "flagged": false
53
- },
54
- {
55
- "name": "react",
56
- "score": 0,
57
- "flagged": false
58
- },
59
- {
60
- "name": "axios",
61
- "score": 0,
62
- "flagged": false
63
- },
64
- {
65
- "name": "webpack",
66
- "score": 0,
67
- "flagged": false
68
- },
69
- {
70
- "name": "typescript",
71
- "score": 0,
72
- "flagged": false
73
- },
74
- {
75
- "name": "eslint",
76
- "score": 0,
77
- "flagged": false
78
- },
79
- {
80
- "name": "prettier",
81
- "score": 0,
82
- "flagged": false
83
- },
84
- {
85
- "name": "jest",
86
- "score": 0,
87
- "flagged": false
88
- },
89
- {
90
- "name": "mocha",
91
- "score": 0,
92
- "flagged": false
93
- },
94
- {
95
- "name": "next",
96
- "score": 0,
97
- "flagged": false
98
- },
99
- {
100
- "name": "vue",
101
- "score": 0,
102
- "flagged": false
103
- },
104
- {
105
- "name": "moment",
106
- "score": 0,
107
- "flagged": false
108
- },
109
- {
110
- "name": "dayjs",
111
- "score": 0,
112
- "flagged": false
113
- },
114
- {
115
- "name": "uuid",
116
- "score": 0,
117
- "flagged": false
118
- },
119
- {
120
- "name": "chalk",
121
- "score": 0,
122
- "flagged": false
123
- },
124
- {
125
- "name": "commander",
126
- "score": 0,
127
- "flagged": false
128
- },
129
- {
130
- "name": "inquirer",
131
- "score": 0,
132
- "flagged": false
133
- },
134
- {
135
- "name": "yargs",
136
- "score": 0,
137
- "flagged": false
138
- },
139
- {
140
- "name": "dotenv",
141
- "score": 0,
142
- "flagged": false
143
- },
144
- {
145
- "name": "cors",
146
- "score": 10,
147
- "flagged": false
148
- },
149
- {
150
- "name": "body-parser",
151
- "score": 0,
152
- "flagged": false
153
- },
154
- {
155
- "name": "mongoose",
156
- "score": 0,
157
- "flagged": false
158
- },
159
- {
160
- "name": "sequelize",
161
- "score": 0,
162
- "flagged": false
163
- },
164
- {
165
- "name": "passport",
166
- "score": 0,
167
- "flagged": false
168
- },
169
- {
170
- "name": "jsonwebtoken",
171
- "score": 0,
172
- "flagged": false
173
- },
174
- {
175
- "name": "bcrypt",
176
- "score": 0,
177
- "flagged": false
178
- },
179
- {
180
- "name": "nodemailer",
181
- "score": 0,
182
- "flagged": false
183
- },
184
- {
185
- "name": "socket.io",
186
- "score": 0,
187
- "flagged": false
188
- },
189
- {
190
- "name": "redis",
191
- "score": 10,
192
- "flagged": false
193
- },
194
- {
195
- "name": "pg",
196
- "score": 0,
197
- "flagged": false
198
- },
199
- {
200
- "name": "mysql2",
201
- "score": 0,
202
- "flagged": false
203
- },
204
- {
205
- "name": "sqlite3",
206
- "score": 0,
207
- "flagged": false
208
- },
209
- {
210
- "name": "sharp",
211
- "score": 0,
212
- "flagged": false
213
- },
214
- {
215
- "name": "multer",
216
- "score": 0,
217
- "flagged": false
218
- },
219
- {
220
- "name": "formidable",
221
- "score": 0,
222
- "flagged": false
223
- },
224
- {
225
- "name": "cheerio",
226
- "score": 0,
227
- "flagged": false
228
- },
229
- {
230
- "name": "puppeteer",
231
- "score": 0,
232
- "flagged": false
233
- },
234
- {
235
- "name": "playwright",
236
- "score": 0,
237
- "flagged": false
238
- },
239
- {
240
- "name": "cypress",
241
- "score": 10,
242
- "flagged": false
243
- },
244
- {
245
- "name": "electron",
246
- "score": 0,
247
- "flagged": false
248
- },
249
- {
250
- "name": "react-dom",
251
- "score": 0,
252
- "flagged": false
253
- },
254
- {
255
- "name": "react-router",
256
- "score": 0,
257
- "flagged": false
258
- },
259
- {
260
- "name": "redux",
261
- "score": 10,
262
- "flagged": false
263
- },
264
- {
265
- "name": "mobx",
266
- "score": 0,
267
- "flagged": false
268
- },
269
- {
270
- "name": "rxjs",
271
- "score": 0,
272
- "flagged": false
273
- },
274
- {
275
- "name": "ramda",
276
- "score": 0,
277
- "flagged": false
278
- },
279
- {
280
- "name": "underscore",
281
- "score": 0,
282
- "flagged": false
283
- },
284
- {
285
- "name": "async",
286
- "score": 0,
287
- "flagged": false
288
- },
289
- {
290
- "name": "debug",
291
- "score": 0,
292
- "flagged": false
293
- },
294
- {
295
- "name": "minimist",
296
- "score": 0,
297
- "flagged": false
298
- },
299
- {
300
- "name": "glob",
301
- "score": 0,
302
- "flagged": false
303
- },
304
- {
305
- "name": "rimraf",
306
- "score": 0,
307
- "flagged": false
308
- },
309
- {
310
- "name": "mkdirp",
311
- "score": 0,
312
- "flagged": false
313
- },
314
- {
315
- "name": "semver",
316
- "score": 0,
317
- "flagged": false
318
- },
319
- {
320
- "name": "yup",
321
- "score": 0,
322
- "flagged": false
323
- },
324
- {
325
- "name": "zod",
326
- "score": 0,
327
- "flagged": false
328
- },
329
- {
330
- "name": "ajv",
331
- "score": 0,
332
- "flagged": false
333
- },
334
- {
335
- "name": "joi",
336
- "score": 0,
337
- "flagged": false
338
- },
339
- {
340
- "name": "express-validator",
341
- "score": 0,
342
- "flagged": false
343
- },
344
- {
345
- "name": "helmet",
346
- "score": 0,
347
- "flagged": false
348
- },
349
- {
350
- "name": "compression",
351
- "score": 0,
352
- "flagged": false
353
- },
354
- {
355
- "name": "morgan",
356
- "score": 0,
357
- "flagged": false
358
- },
359
- {
360
- "name": "winston",
361
- "score": 0,
362
- "flagged": false
363
- },
364
- {
365
- "name": "pino",
366
- "score": 10,
367
- "flagged": false
368
- },
369
- {
370
- "name": "bunyan",
371
- "score": 0,
372
- "flagged": false
373
- },
374
- {
375
- "name": "dotenv-expand",
376
- "score": 0,
377
- "flagged": false
378
- },
379
- {
380
- "name": "cross-env",
381
- "score": 0,
382
- "flagged": false
383
- },
384
- {
385
- "name": "concurrently",
386
- "score": 0,
387
- "flagged": false
388
- },
389
- {
390
- "name": "nodemon",
391
- "score": 0,
392
- "flagged": false
393
- },
394
- {
395
- "name": "ts-node",
396
- "score": 0,
397
- "flagged": false
398
- },
399
- {
400
- "name": "esbuild",
401
- "score": 0,
402
- "flagged": false
403
- },
404
- {
405
- "name": "rollup",
406
- "score": 0,
407
- "flagged": false
408
- },
409
- {
410
- "name": "vite",
411
- "score": 0,
412
- "flagged": false
413
- },
414
- {
415
- "name": "parcel",
416
- "score": 0,
417
- "flagged": false
418
- },
419
- {
420
- "name": "core-js",
421
- "score": 0,
422
- "flagged": false
423
- },
424
- {
425
- "name": "regenerator-runtime",
426
- "score": 0,
427
- "flagged": false
428
- },
429
- {
430
- "name": "whatwg-fetch",
431
- "score": 0,
432
- "flagged": false
433
- },
434
- {
435
- "name": "isomorphic-fetch",
436
- "score": 0,
437
- "flagged": false
438
- },
439
- {
440
- "name": "node-fetch",
441
- "score": 0,
442
- "flagged": false
443
- },
444
- {
445
- "name": "got",
446
- "score": 0,
447
- "flagged": false
448
- },
449
- {
450
- "name": "superagent",
451
- "score": 0,
452
- "flagged": false
453
- },
454
- {
455
- "name": "form-data",
456
- "score": 0,
457
- "flagged": false
458
- },
459
- {
460
- "name": "busboy",
461
- "score": 0,
462
- "flagged": false
463
- },
464
- {
465
- "name": "cookie-parser",
466
- "score": 0,
467
- "flagged": false
468
- },
469
- {
470
- "name": "express-session",
471
- "score": 0,
472
- "flagged": false
473
- },
474
- {
475
- "name": "connect-redis",
476
- "score": 0,
477
- "flagged": false
478
- },
479
- {
480
- "name": "ioredis",
481
- "score": 10,
482
- "flagged": false
483
- },
484
- {
485
- "name": "bull",
486
- "score": 0,
487
- "flagged": false
488
- },
489
- {
490
- "name": "agenda",
491
- "score": 0,
492
- "flagged": false
493
- },
494
- {
495
- "name": "node-cron",
496
- "score": 0,
497
- "flagged": false
498
- },
499
- {
500
- "name": "date-fns",
501
- "score": 0,
502
- "flagged": false
503
- },
504
- {
505
- "name": "luxon",
506
- "score": 0,
507
- "flagged": false
508
- },
509
- {
510
- "name": "numeral",
511
- "score": 0,
512
- "flagged": false
513
- },
514
- {
515
- "name": "decimal.js",
516
- "score": 0,
517
- "flagged": false
518
- },
519
- {
520
- "name": "bignumber.js",
521
- "score": 0,
522
- "flagged": false
523
- },
524
- {
525
- "name": "mathjs",
526
- "score": 0,
527
- "flagged": false
528
- },
529
- {
530
- "name": "lodash-es",
531
- "score": 0,
532
- "flagged": false
533
- }
534
- ]
535
- },
536
- "adversarial": {
537
- "detected": 35,
538
- "total": 35,
539
- "adr": 1,
540
- "details": [
541
- {
542
- "name": "ci-trigger-exfil",
543
- "score": 38,
544
- "threshold": 35,
545
- "detected": true
546
- },
547
- {
548
- "name": "delayed-exfil",
549
- "score": 35,
550
- "threshold": 30,
551
- "detected": true
552
- },
553
- {
554
- "name": "docker-aware",
555
- "score": 35,
556
- "threshold": 35,
557
- "detected": true
558
- },
559
- {
560
- "name": "staged-fetch",
561
- "score": 35,
562
- "threshold": 35,
563
- "detected": true
564
- },
565
- {
566
- "name": "dns-chunk-exfil",
567
- "score": 35,
568
- "threshold": 35,
569
- "detected": true
570
- },
571
- {
572
- "name": "string-concat-obfuscation",
573
- "score": 35,
574
- "threshold": 30,
575
- "detected": true
576
- },
577
- {
578
- "name": "postinstall-download",
579
- "score": 33,
580
- "threshold": 30,
581
- "detected": true
582
- },
583
- {
584
- "name": "dynamic-require",
585
- "score": 78,
586
- "threshold": 40,
587
- "detected": true
588
- },
589
- {
590
- "name": "iife-exfil",
591
- "score": 58,
592
- "threshold": 40,
593
- "detected": true
594
- },
595
- {
596
- "name": "conditional-chain",
597
- "score": 38,
598
- "threshold": 30,
599
- "detected": true
600
- },
601
- {
602
- "name": "template-literal-obfuscation",
603
- "score": 63,
604
- "threshold": 30,
605
- "detected": true
606
- },
607
- {
608
- "name": "proxy-env-intercept",
609
- "score": 53,
610
- "threshold": 40,
611
- "detected": true
612
- },
613
- {
614
- "name": "nested-payload",
615
- "score": 38,
616
- "threshold": 30,
617
- "detected": true
618
- },
619
- {
620
- "name": "dynamic-import",
621
- "score": 58,
622
- "threshold": 30,
623
- "detected": true
624
- },
625
- {
626
- "name": "websocket-exfil",
627
- "score": 38,
628
- "threshold": 30,
629
- "detected": true
630
- },
631
- {
632
- "name": "bun-runtime-evasion",
633
- "score": 48,
634
- "threshold": 30,
635
- "detected": true
636
- },
637
- {
638
- "name": "preinstall-exec",
639
- "score": 38,
640
- "threshold": 35,
641
- "detected": true
642
- },
643
- {
644
- "name": "remote-dynamic-dependency",
645
- "score": 35,
646
- "threshold": 35,
647
- "detected": true
648
- },
649
- {
650
- "name": "github-exfil",
651
- "score": 68,
652
- "threshold": 30,
653
- "detected": true
654
- },
655
- {
656
- "name": "detached-background",
657
- "score": 48,
658
- "threshold": 35,
659
- "detected": true
660
- },
661
- {
662
- "name": "ai-agent-weaponization",
663
- "score": 100,
664
- "threshold": 35,
665
- "detected": true
666
- },
667
- {
668
- "name": "ai-config-injection",
669
- "score": 100,
670
- "threshold": 30,
671
- "detected": true
672
- },
673
- {
674
- "name": "rdd-zero-deps",
675
- "score": 41,
676
- "threshold": 35,
677
- "detected": true
678
- },
679
- {
680
- "name": "discord-webhook-exfil",
681
- "score": 44,
682
- "threshold": 30,
683
- "detected": true
684
- },
685
- {
686
- "name": "preinstall-background-fork",
687
- "score": 58,
688
- "threshold": 35,
689
- "detected": true
690
- },
691
- {
692
- "name": "silent-error-swallow",
693
- "score": 35,
694
- "threshold": 25,
695
- "detected": true
696
- },
697
- {
698
- "name": "double-base64-exfil",
699
- "score": 38,
700
- "threshold": 30,
701
- "detected": true
702
- },
703
- {
704
- "name": "crypto-wallet-harvest",
705
- "score": 25,
706
- "threshold": 25,
707
- "detected": true
708
- },
709
- {
710
- "name": "self-hosted-runner-backdoor",
711
- "score": 23,
712
- "threshold": 20,
713
- "detected": true
714
- },
715
- {
716
- "name": "dead-mans-switch",
717
- "score": 68,
718
- "threshold": 30,
719
- "detected": true
720
- },
721
- {
722
- "name": "fake-captcha-fingerprint",
723
- "score": 28,
724
- "threshold": 20,
725
- "detected": true
726
- },
727
- {
728
- "name": "pyinstaller-dropper",
729
- "score": 53,
730
- "threshold": 35,
731
- "detected": true
732
- },
733
- {
734
- "name": "gh-cli-token-steal",
735
- "score": 50,
736
- "threshold": 30,
737
- "detected": true
738
- },
739
- {
740
- "name": "triple-base64-github-push",
741
- "score": 38,
742
- "threshold": 30,
743
- "detected": true
744
- },
745
- {
746
- "name": "browser-api-hook",
747
- "score": 20,
748
- "threshold": 20,
749
- "detected": true
750
- }
751
- ]
752
- }
753
- }