@portll/cobolwork 0.2.76 → 0.2.140

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 (61) hide show
  1. package/README.md +66 -14
  2. package/bin/cobolwork.mjs +126 -9
  3. package/lib/arith.mjs +235 -0
  4. package/lib/baseline.mjs +5 -0
  5. package/lib/build.mjs +112 -30
  6. package/lib/capabilities.mjs +12 -7
  7. package/lib/card.mjs +18 -0
  8. package/lib/cics-commands.mjs +136 -125
  9. package/lib/consequence.mjs +29 -0
  10. package/lib/control.mjs +1169 -91
  11. package/lib/csd.mjs +17 -2
  12. package/lib/dataflow.mjs +276 -126
  13. package/lib/embedded-sql.mjs +110 -0
  14. package/lib/enterprise-options.mjs +255 -0
  15. package/lib/equivalence.mjs +124 -0
  16. package/lib/evidence/cli.mjs +65 -0
  17. package/lib/evidence/journal.mjs +94 -0
  18. package/lib/evidence/record.mjs +110 -0
  19. package/lib/evidence/run.mjs +111 -0
  20. package/lib/evidence/seal.mjs +177 -0
  21. package/lib/evidence/slsa.mjs +64 -0
  22. package/lib/evidence/sshsig.mjs +172 -0
  23. package/lib/evidence/store.mjs +170 -0
  24. package/lib/evidence/verify.mjs +167 -0
  25. package/lib/explain.mjs +9 -5
  26. package/lib/exploitability.mjs +263 -0
  27. package/lib/ftp.mjs +136 -0
  28. package/lib/ironwork.mjs +109 -0
  29. package/lib/jcl.mjs +27 -7
  30. package/lib/kernel/findings.mjs +11 -0
  31. package/lib/kernel/registry.mjs +4 -0
  32. package/lib/layout.mjs +202 -0
  33. package/lib/option-diff.mjs +49 -0
  34. package/lib/options.mjs +109 -46
  35. package/lib/parser.mjs +80 -209
  36. package/lib/policy.mjs +8 -3
  37. package/lib/precompile.mjs +5 -84
  38. package/lib/reach.mjs +29 -12
  39. package/lib/revision.json +1 -1
  40. package/lib/sarif.mjs +1 -0
  41. package/lib/sbom.mjs +235 -0
  42. package/lib/scan.mjs +93 -27
  43. package/lib/sets/cics.mjs +119 -2
  44. package/lib/sets/copybook.mjs +2 -1
  45. package/lib/sets/flow.mjs +82 -2
  46. package/lib/sets/hidden.mjs +4 -8
  47. package/lib/sets/jcl.mjs +70 -106
  48. package/lib/sets/recon.mjs +2 -1
  49. package/lib/sets/semantics.mjs +377 -0
  50. package/lib/sets/web.mjs +34 -10
  51. package/lib/sets/zowe.mjs +246 -0
  52. package/lib/sources.mjs +10 -0
  53. package/lib/tui/app.mjs +31 -13
  54. package/lib/tui/model.mjs +17 -2
  55. package/lib/utilities.mjs +229 -15
  56. package/lib/verify.mjs +128 -0
  57. package/package.json +1 -1
  58. package/rules/compliance-dora.json +507 -0
  59. package/rules/compliance-ffiec.json +507 -0
  60. package/rules/compliance-nist80053.json +507 -0
  61. package/schema/cobolwork.policy.schema.json +94 -16
@@ -54,6 +54,19 @@
54
54
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
55
55
  }
56
56
  },
57
+ {
58
+ "kind": "compliance",
59
+ "ruleId": "argv-or-env-to-connection-target",
60
+ "framework": "dora",
61
+ "clause": "Article 9(3)(b)",
62
+ "title": "Protection and prevention",
63
+ "rationale": "The rule reports: Command-line or environment input names the database or queue manager the program connects to. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
64
+ "source": {
65
+ "doc": "dora",
66
+ "retrieved": "2026-09-20",
67
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
68
+ }
69
+ },
57
70
  {
58
71
  "kind": "compliance",
59
72
  "ruleId": "argv-or-env-to-dynamic-file-path",
@@ -158,6 +171,19 @@
158
171
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
159
172
  }
160
173
  },
174
+ {
175
+ "kind": "compliance",
176
+ "ruleId": "argv-or-env-to-storage-length",
177
+ "framework": "dora",
178
+ "clause": "Article 9(3)(b)",
179
+ "title": "Protection and prevention",
180
+ "rationale": "The rule reports: Command-line or environment input decides how much storage the program acquires. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
181
+ "source": {
182
+ "doc": "dora",
183
+ "retrieved": "2026-09-20",
184
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
185
+ }
186
+ },
161
187
  {
162
188
  "kind": "compliance",
163
189
  "ruleId": "argv-or-env-to-subscript",
@@ -184,6 +210,19 @@
184
210
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
185
211
  }
186
212
  },
213
+ {
214
+ "kind": "compliance",
215
+ "ruleId": "binary-store-exceeds-picture-under-trunc-opt",
216
+ "framework": "dora",
217
+ "clause": "Article 9(3)(b)",
218
+ "title": "Protection and prevention",
219
+ "rationale": "The rule reports: Under TRUNC(OPT) a binary field receives a value that can have more digits than its PICTURE. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
220
+ "source": {
221
+ "doc": "dora",
222
+ "retrieved": "2026-09-20",
223
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
224
+ }
225
+ },
187
226
  {
188
227
  "kind": "compliance",
189
228
  "ruleId": "build-pins-exploited-compiler",
@@ -262,6 +301,19 @@
262
301
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
263
302
  }
264
303
  },
304
+ {
305
+ "kind": "compliance",
306
+ "ruleId": "character-range-reverses-in-ascii",
307
+ "framework": "dora",
308
+ "clause": "Article 9(3)(b)",
309
+ "title": "Protection and prevention",
310
+ "rationale": "The rule reports: A range of characters is in order in EBCDIC and reversed in ASCII, or the other way round, so it holds values in one and none in the other. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
311
+ "source": {
312
+ "doc": "dora",
313
+ "retrieved": "2026-09-20",
314
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
315
+ }
316
+ },
265
317
  {
266
318
  "kind": "compliance",
267
319
  "ruleId": "cics-commarea-length-exceeds-area",
@@ -301,6 +353,19 @@
301
353
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
302
354
  }
303
355
  },
356
+ {
357
+ "kind": "compliance",
358
+ "ruleId": "cics-condition-ignored",
359
+ "framework": "dora",
360
+ "clause": "Article 9(3)(b)",
361
+ "title": "Protection and prevention",
362
+ "rationale": "The rule reports: A program issues CICS commands whose failure it cannot see: NOHANDLE with no RESP, or IGNORE CONDITION. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
363
+ "source": {
364
+ "doc": "dora",
365
+ "retrieved": "2026-09-20",
366
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
367
+ }
368
+ },
304
369
  {
305
370
  "kind": "compliance",
306
371
  "ruleId": "cics-listener-accepts-cleartext",
@@ -405,6 +470,45 @@
405
470
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
406
471
  }
407
472
  },
473
+ {
474
+ "kind": "compliance",
475
+ "ruleId": "cics-terminal-to-cics-sysid",
476
+ "framework": "dora",
477
+ "clause": "Article 9(3)(b)",
478
+ "title": "Protection and prevention",
479
+ "rationale": "The rule reports: Terminal input decides which region a CICS command is shipped to. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
480
+ "source": {
481
+ "doc": "dora",
482
+ "retrieved": "2026-09-20",
483
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
484
+ }
485
+ },
486
+ {
487
+ "kind": "compliance",
488
+ "ruleId": "cics-terminal-to-cics-system-resource",
489
+ "framework": "dora",
490
+ "clause": "Article 9(3)(b)",
491
+ "title": "Protection and prevention",
492
+ "rationale": "The rule reports: Terminal input names the resource an EXEC CICS SET changes. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
493
+ "source": {
494
+ "doc": "dora",
495
+ "retrieved": "2026-09-20",
496
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
497
+ }
498
+ },
499
+ {
500
+ "kind": "compliance",
501
+ "ruleId": "cics-terminal-to-connection-target",
502
+ "framework": "dora",
503
+ "clause": "Article 9(3)(b)",
504
+ "title": "Protection and prevention",
505
+ "rationale": "The rule reports: Terminal input names the database or queue manager the program connects to. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
506
+ "source": {
507
+ "doc": "dora",
508
+ "retrieved": "2026-09-20",
509
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
510
+ }
511
+ },
408
512
  {
409
513
  "kind": "compliance",
410
514
  "ruleId": "cics-terminal-to-dynamic-file-path",
@@ -561,6 +665,19 @@
561
665
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
562
666
  }
563
667
  },
668
+ {
669
+ "kind": "compliance",
670
+ "ruleId": "cics-terminal-to-storage-length",
671
+ "framework": "dora",
672
+ "clause": "Article 9(3)(b)",
673
+ "title": "Protection and prevention",
674
+ "rationale": "The rule reports: Terminal input decides how much storage the program acquires. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
675
+ "source": {
676
+ "doc": "dora",
677
+ "retrieved": "2026-09-20",
678
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
679
+ }
680
+ },
564
681
  {
565
682
  "kind": "compliance",
566
683
  "ruleId": "cics-terminal-to-subscript",
@@ -587,6 +704,19 @@
587
704
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
588
705
  }
589
706
  },
707
+ {
708
+ "kind": "compliance",
709
+ "ruleId": "cics-terminal-to-xml-document",
710
+ "framework": "dora",
711
+ "clause": "Article 9(3)(b)",
712
+ "title": "Protection and prevention",
713
+ "rationale": "The rule reports: Terminal input is parsed as an XML document. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
714
+ "source": {
715
+ "doc": "dora",
716
+ "retrieved": "2026-09-20",
717
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
718
+ }
719
+ },
590
720
  {
591
721
  "kind": "compliance",
592
722
  "ruleId": "cics-transfer-to-variable-program",
@@ -626,6 +756,45 @@
626
756
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
627
757
  }
628
758
  },
759
+ {
760
+ "kind": "compliance",
761
+ "ruleId": "cics-web-to-cics-sysid",
762
+ "framework": "dora",
763
+ "clause": "Article 9(3)(b)",
764
+ "title": "Protection and prevention",
765
+ "rationale": "The rule reports: Web input decides which region a CICS command is shipped to. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
766
+ "source": {
767
+ "doc": "dora",
768
+ "retrieved": "2026-09-20",
769
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
770
+ }
771
+ },
772
+ {
773
+ "kind": "compliance",
774
+ "ruleId": "cics-web-to-cics-system-resource",
775
+ "framework": "dora",
776
+ "clause": "Article 9(3)(b)",
777
+ "title": "Protection and prevention",
778
+ "rationale": "The rule reports: Web input names the resource an EXEC CICS SET changes. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
779
+ "source": {
780
+ "doc": "dora",
781
+ "retrieved": "2026-09-20",
782
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
783
+ }
784
+ },
785
+ {
786
+ "kind": "compliance",
787
+ "ruleId": "cics-web-to-connection-target",
788
+ "framework": "dora",
789
+ "clause": "Article 9(3)(b)",
790
+ "title": "Protection and prevention",
791
+ "rationale": "The rule reports: Web input names the database or queue manager the program connects to. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
792
+ "source": {
793
+ "doc": "dora",
794
+ "retrieved": "2026-09-20",
795
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
796
+ }
797
+ },
629
798
  {
630
799
  "kind": "compliance",
631
800
  "ruleId": "cics-web-to-dynamic-file-path",
@@ -782,6 +951,19 @@
782
951
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
783
952
  }
784
953
  },
954
+ {
955
+ "kind": "compliance",
956
+ "ruleId": "cics-web-to-storage-length",
957
+ "framework": "dora",
958
+ "clause": "Article 9(3)(b)",
959
+ "title": "Protection and prevention",
960
+ "rationale": "The rule reports: Web input decides how much storage the program acquires. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
961
+ "source": {
962
+ "doc": "dora",
963
+ "retrieved": "2026-09-20",
964
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
965
+ }
966
+ },
785
967
  {
786
968
  "kind": "compliance",
787
969
  "ruleId": "cics-web-to-subscript",
@@ -808,6 +990,19 @@
808
990
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
809
991
  }
810
992
  },
993
+ {
994
+ "kind": "compliance",
995
+ "ruleId": "cics-web-to-xml-document",
996
+ "framework": "dora",
997
+ "clause": "Article 9(3)(b)",
998
+ "title": "Protection and prevention",
999
+ "rationale": "The rule reports: Web input is parsed as an XML document. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1000
+ "source": {
1001
+ "doc": "dora",
1002
+ "retrieved": "2026-09-20",
1003
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1004
+ }
1005
+ },
811
1006
  {
812
1007
  "kind": "compliance",
813
1008
  "ruleId": "cobol-value-credential",
@@ -834,6 +1029,19 @@
834
1029
  "quote": "identify all sources of ICT risk, in particular the risk exposure to and from other financial entities, and assess cyber threats and ICT vulnerabilities relevant to their ICT supported business functions"
835
1030
  }
836
1031
  },
1032
+ {
1033
+ "kind": "compliance",
1034
+ "ruleId": "control-cards-from-dataset",
1035
+ "framework": "dora",
1036
+ "clause": "Article 8(3)",
1037
+ "title": "Identification",
1038
+ "rationale": "The rule reports: A utility step reads the commands it runs from a cataloged data set, so what it runs is not in the reviewed JCL. That is what a change reaches, which is the assessment this clause requires on each major change, performed per change rather than per year.",
1039
+ "source": {
1040
+ "doc": "dora",
1041
+ "retrieved": "2026-09-20",
1042
+ "quote": "perform a risk assessment upon each major change in the network and information system infrastructure, in the processes or procedures affecting their ICT supported business functions, information assets or ICT assets"
1043
+ }
1044
+ },
837
1045
  {
838
1046
  "kind": "compliance",
839
1047
  "ruleId": "copybook-shadowed",
@@ -899,6 +1107,32 @@
899
1107
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
900
1108
  }
901
1109
  },
1110
+ {
1111
+ "kind": "compliance",
1112
+ "ruleId": "database-to-cics-sysid",
1113
+ "framework": "dora",
1114
+ "clause": "Article 9(3)(b)",
1115
+ "title": "Protection and prevention",
1116
+ "rationale": "The rule reports: A database value decides which region a CICS command is shipped to. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1117
+ "source": {
1118
+ "doc": "dora",
1119
+ "retrieved": "2026-09-20",
1120
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1121
+ }
1122
+ },
1123
+ {
1124
+ "kind": "compliance",
1125
+ "ruleId": "database-to-cics-system-resource",
1126
+ "framework": "dora",
1127
+ "clause": "Article 9(3)(b)",
1128
+ "title": "Protection and prevention",
1129
+ "rationale": "The rule reports: A database value names the resource an EXEC CICS SET changes. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1130
+ "source": {
1131
+ "doc": "dora",
1132
+ "retrieved": "2026-09-20",
1133
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1134
+ }
1135
+ },
902
1136
  {
903
1137
  "kind": "compliance",
904
1138
  "ruleId": "database-to-dynamic-file-path",
@@ -1185,6 +1419,32 @@
1185
1419
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1186
1420
  }
1187
1421
  },
1422
+ {
1423
+ "kind": "compliance",
1424
+ "ruleId": "file-record-to-cics-sysid",
1425
+ "framework": "dora",
1426
+ "clause": "Article 9(3)(b)",
1427
+ "title": "Protection and prevention",
1428
+ "rationale": "The rule reports: A file record decides which region a CICS command is shipped to. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1429
+ "source": {
1430
+ "doc": "dora",
1431
+ "retrieved": "2026-09-20",
1432
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1433
+ }
1434
+ },
1435
+ {
1436
+ "kind": "compliance",
1437
+ "ruleId": "file-record-to-cics-system-resource",
1438
+ "framework": "dora",
1439
+ "clause": "Article 9(3)(b)",
1440
+ "title": "Protection and prevention",
1441
+ "rationale": "The rule reports: A file record names the resource an EXEC CICS SET changes. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1442
+ "source": {
1443
+ "doc": "dora",
1444
+ "retrieved": "2026-09-20",
1445
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1446
+ }
1447
+ },
1188
1448
  {
1189
1449
  "kind": "compliance",
1190
1450
  "ruleId": "file-record-to-dynamic-file-path",
@@ -1380,6 +1640,19 @@
1380
1640
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1381
1641
  }
1382
1642
  },
1643
+ {
1644
+ "kind": "compliance",
1645
+ "ruleId": "intermediate-result-loses-high-order-digits",
1646
+ "framework": "dora",
1647
+ "clause": "Article 9(3)(b)",
1648
+ "title": "Protection and prevention",
1649
+ "rationale": "The rule reports: A COMPUTE has an intermediate result wider than the compiler carries, so high-order digits can be lost. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1650
+ "source": {
1651
+ "doc": "dora",
1652
+ "retrieved": "2026-09-20",
1653
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1654
+ }
1655
+ },
1383
1656
  {
1384
1657
  "kind": "compliance",
1385
1658
  "ruleId": "jcl-dlm-hides-instream",
@@ -1497,6 +1770,19 @@
1497
1770
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1498
1771
  }
1499
1772
  },
1773
+ {
1774
+ "kind": "compliance",
1775
+ "ruleId": "jcl-instream-to-connection-target",
1776
+ "framework": "dora",
1777
+ "clause": "Article 9(3)(b)",
1778
+ "title": "Protection and prevention",
1779
+ "rationale": "The rule reports: In-stream job data names the database or queue manager the program connects to. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1780
+ "source": {
1781
+ "doc": "dora",
1782
+ "retrieved": "2026-09-20",
1783
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1784
+ }
1785
+ },
1500
1786
  {
1501
1787
  "kind": "compliance",
1502
1788
  "ruleId": "jcl-instream-to-dynamic-file-path",
@@ -1601,6 +1887,19 @@
1601
1887
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1602
1888
  }
1603
1889
  },
1890
+ {
1891
+ "kind": "compliance",
1892
+ "ruleId": "jcl-instream-to-storage-length",
1893
+ "framework": "dora",
1894
+ "clause": "Article 9(3)(b)",
1895
+ "title": "Protection and prevention",
1896
+ "rationale": "The rule reports: In-stream job data decides how much storage the program acquires. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1897
+ "source": {
1898
+ "doc": "dora",
1899
+ "retrieved": "2026-09-20",
1900
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1901
+ }
1902
+ },
1604
1903
  {
1605
1904
  "kind": "compliance",
1606
1905
  "ruleId": "jcl-instream-to-subscript",
@@ -1653,6 +1952,19 @@
1653
1952
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1654
1953
  }
1655
1954
  },
1955
+ {
1956
+ "kind": "compliance",
1957
+ "ruleId": "jcl-parm-to-connection-target",
1958
+ "framework": "dora",
1959
+ "clause": "Article 9(3)(b)",
1960
+ "title": "Protection and prevention",
1961
+ "rationale": "The rule reports: A JCL PARM names the database or queue manager the program connects to. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1962
+ "source": {
1963
+ "doc": "dora",
1964
+ "retrieved": "2026-09-20",
1965
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1966
+ }
1967
+ },
1656
1968
  {
1657
1969
  "kind": "compliance",
1658
1970
  "ruleId": "jcl-parm-to-dynamic-file-path",
@@ -1757,6 +2069,19 @@
1757
2069
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1758
2070
  }
1759
2071
  },
2072
+ {
2073
+ "kind": "compliance",
2074
+ "ruleId": "jcl-parm-to-storage-length",
2075
+ "framework": "dora",
2076
+ "clause": "Article 9(3)(b)",
2077
+ "title": "Protection and prevention",
2078
+ "rationale": "The rule reports: A JCL PARM decides how much storage the program acquires. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
2079
+ "source": {
2080
+ "doc": "dora",
2081
+ "retrieved": "2026-09-20",
2082
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
2083
+ }
2084
+ },
1760
2085
  {
1761
2086
  "kind": "compliance",
1762
2087
  "ruleId": "jcl-parm-to-subscript",
@@ -1926,6 +2251,32 @@
1926
2251
  "quote": "map the configuration of the information assets and ICT assets and the links and interdependencies between the different information assets and ICT assets"
1927
2252
  }
1928
2253
  },
2254
+ {
2255
+ "kind": "compliance",
2256
+ "ruleId": "password-case-folded-before-compare",
2257
+ "framework": "dora",
2258
+ "clause": "Article 9(3)(b)",
2259
+ "title": "Protection and prevention",
2260
+ "rationale": "The rule reports: A sign-on folds a password's case before comparing it. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
2261
+ "source": {
2262
+ "doc": "dora",
2263
+ "retrieved": "2026-09-20",
2264
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
2265
+ }
2266
+ },
2267
+ {
2268
+ "kind": "compliance",
2269
+ "ruleId": "program-checks-stored-password",
2270
+ "framework": "dora",
2271
+ "clause": "Article 9(4)(d)",
2272
+ "title": "Protection and prevention",
2273
+ "rationale": "The rule reports: A program compares a password it reads back from its own file or table. That exposes an authentication secret in a file, defeating the authentication mechanisms and key protection this clause requires.",
2274
+ "source": {
2275
+ "doc": "dora",
2276
+ "retrieved": "2026-09-20",
2277
+ "quote": "implement policies and protocols for strong authentication mechanisms, based on relevant standards and dedicated control systems, and protection measures of cryptographic keys"
2278
+ }
2279
+ },
1929
2280
  {
1930
2281
  "kind": "compliance",
1931
2282
  "ruleId": "program-without-entry",
@@ -2017,6 +2368,19 @@
2017
2368
  "quote": "identify all sources of ICT risk, in particular the risk exposure to and from other financial entities, and assess cyber threats and ICT vulnerabilities relevant to their ICT supported business functions"
2018
2369
  }
2019
2370
  },
2371
+ {
2372
+ "kind": "compliance",
2373
+ "ruleId": "sort-exit-named",
2374
+ "framework": "dora",
2375
+ "clause": "Article 8(4)",
2376
+ "title": "Identification",
2377
+ "rationale": "The rule reports: A DFSORT or ICETOOL step names an exit routine on a MODS statement, a load module the sort loads and runs. That is an interdependency between assets which no single file records, and mapping it is what this clause asks for.",
2378
+ "source": {
2379
+ "doc": "dora",
2380
+ "retrieved": "2026-09-20",
2381
+ "quote": "map the configuration of the information assets and ICT assets and the links and interdependencies between the different information assets and ICT assets"
2382
+ }
2383
+ },
2020
2384
  {
2021
2385
  "kind": "compliance",
2022
2386
  "ruleId": "system-response-to-http-header",
@@ -2030,6 +2394,19 @@
2030
2394
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
2031
2395
  }
2032
2396
  },
2397
+ {
2398
+ "kind": "compliance",
2399
+ "ruleId": "system-response-to-screen",
2400
+ "framework": "dora",
2401
+ "clause": "Article 9(3)(b)",
2402
+ "title": "Protection and prevention",
2403
+ "rationale": "The rule reports: Db2's error message text is shown on the terminal. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
2404
+ "source": {
2405
+ "doc": "dora",
2406
+ "retrieved": "2026-09-20",
2407
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
2408
+ }
2409
+ },
2033
2410
  {
2034
2411
  "kind": "compliance",
2035
2412
  "ruleId": "system-response-to-web-response",
@@ -2043,6 +2420,19 @@
2043
2420
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
2044
2421
  }
2045
2422
  },
2423
+ {
2424
+ "kind": "compliance",
2425
+ "ruleId": "tso-batch-runs-program",
2426
+ "framework": "dora",
2427
+ "clause": "Article 8(6)",
2428
+ "title": "Identification",
2429
+ "rationale": "The rule reports: A TSO batch step runs another program, CLIST, REXX exec or job from its in-stream commands. That is an inventory gap - the job runs something the inventory does not account for - and this clause requires the inventory be kept current.",
2430
+ "source": {
2431
+ "doc": "dora",
2432
+ "retrieved": "2026-09-20",
2433
+ "quote": "maintain relevant inventories and update them periodically and every time any major change as referred to in paragraph 3 occurs"
2434
+ }
2435
+ },
2046
2436
  {
2047
2437
  "kind": "compliance",
2048
2438
  "ruleId": "tso-logon-password",
@@ -2146,6 +2536,123 @@
2146
2536
  "retrieved": "2026-09-20",
2147
2537
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
2148
2538
  }
2539
+ },
2540
+ {
2541
+ "kind": "compliance",
2542
+ "ruleId": "zowe-config-cleartext",
2543
+ "framework": "dora",
2544
+ "clause": "Article 9(3)(a)",
2545
+ "title": "Protection and prevention",
2546
+ "rationale": "The rule reports: A Zowe profile for z/OSMF, API ML or RSE connects over plain HTTP. That is data leaving through a channel the program opened itself, which bears directly on the security of the means of transfer.",
2547
+ "source": {
2548
+ "doc": "dora",
2549
+ "retrieved": "2026-09-20",
2550
+ "quote": "ensure the security of the means of transfer of data"
2551
+ }
2552
+ },
2553
+ {
2554
+ "kind": "compliance",
2555
+ "ruleId": "zowe-config-secret-in-clear",
2556
+ "framework": "dora",
2557
+ "clause": "Article 9(4)(d)",
2558
+ "title": "Protection and prevention",
2559
+ "rationale": "The rule reports: A Zowe team configuration holds a password or token in the file rather than in the credential vault. That exposes an authentication secret in a file, defeating the authentication mechanisms and key protection this clause requires.",
2560
+ "source": {
2561
+ "doc": "dora",
2562
+ "retrieved": "2026-09-20",
2563
+ "quote": "implement policies and protocols for strong authentication mechanisms, based on relevant standards and dedicated control systems, and protection measures of cryptographic keys"
2564
+ }
2565
+ },
2566
+ {
2567
+ "kind": "compliance",
2568
+ "ruleId": "zowe-config-tls-verify-off",
2569
+ "framework": "dora",
2570
+ "clause": "Article 9(3)(a)",
2571
+ "title": "Protection and prevention",
2572
+ "rationale": "The rule reports: A Zowe profile turns off TLS certificate verification. That is data leaving through a channel the program opened itself, which bears directly on the security of the means of transfer.",
2573
+ "source": {
2574
+ "doc": "dora",
2575
+ "retrieved": "2026-09-20",
2576
+ "quote": "ensure the security of the means of transfer of data"
2577
+ }
2578
+ },
2579
+ {
2580
+ "kind": "compliance",
2581
+ "ruleId": "zowe-mcp-data-marking-off",
2582
+ "framework": "dora",
2583
+ "clause": "Article 9(3)(b)",
2584
+ "title": "Protection and prevention",
2585
+ "rationale": "The rule reports: A Zowe MCP server has its untrusted-data marking turned off. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
2586
+ "source": {
2587
+ "doc": "dora",
2588
+ "retrieved": "2026-09-20",
2589
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
2590
+ }
2591
+ },
2592
+ {
2593
+ "kind": "compliance",
2594
+ "ruleId": "zowe-mcp-password-in-config",
2595
+ "framework": "dora",
2596
+ "clause": "Article 9(4)(d)",
2597
+ "title": "Protection and prevention",
2598
+ "rationale": "The rule reports: An MCP client configuration sets a Zowe MCP password, credential map or key passphrase to a literal value. That exposes an authentication secret in a file, defeating the authentication mechanisms and key protection this clause requires.",
2599
+ "source": {
2600
+ "doc": "dora",
2601
+ "retrieved": "2026-09-20",
2602
+ "quote": "implement policies and protocols for strong authentication mechanisms, based on relevant standards and dedicated control systems, and protection measures of cryptographic keys"
2603
+ }
2604
+ },
2605
+ {
2606
+ "kind": "compliance",
2607
+ "ruleId": "zowe-mcp-tier-full",
2608
+ "framework": "dora",
2609
+ "clause": "Article 9(4)(c)",
2610
+ "title": "Protection and prevention",
2611
+ "rationale": "The rule reports: A Zowe MCP server runs at the full capability tier. That grants or alters access rights outside the policy controls this clause requires be soundly administered.",
2612
+ "source": {
2613
+ "doc": "dora",
2614
+ "retrieved": "2026-09-20",
2615
+ "quote": "implement policies that limit the physical or logical access to information assets and ICT assets to what is required for legitimate and approved functions and activities only"
2616
+ }
2617
+ },
2618
+ {
2619
+ "kind": "compliance",
2620
+ "ruleId": "zowe-mcp-tier-writes",
2621
+ "framework": "dora",
2622
+ "clause": "Article 9(4)(c)",
2623
+ "title": "Protection and prevention",
2624
+ "rationale": "The rule reports: A Zowe MCP server runs at a capability tier that lets the agent change or delete mainframe data. That grants or alters access rights outside the policy controls this clause requires be soundly administered.",
2625
+ "source": {
2626
+ "doc": "dora",
2627
+ "retrieved": "2026-09-20",
2628
+ "quote": "implement policies that limit the physical or logical access to information assets and ICT assets to what is required for legitimate and approved functions and activities only"
2629
+ }
2630
+ },
2631
+ {
2632
+ "kind": "compliance",
2633
+ "ruleId": "zowe-mcp-unpinned",
2634
+ "framework": "dora",
2635
+ "clause": "Article 8(2)",
2636
+ "title": "Identification",
2637
+ "rationale": "The rule reports: A Zowe MCP server is launched from the registry with no pinned version. That is a source of ICT risk in a business-supporting function, identified by reading the source rather than by asking the team that maintains it.",
2638
+ "source": {
2639
+ "doc": "dora",
2640
+ "retrieved": "2026-09-20",
2641
+ "quote": "identify all sources of ICT risk, in particular the risk exposure to and from other financial entities, and assess cyber threats and ICT vulnerabilities relevant to their ICT supported business functions"
2642
+ }
2643
+ },
2644
+ {
2645
+ "kind": "compliance",
2646
+ "ruleId": "zowe-mock-credentials",
2647
+ "framework": "dora",
2648
+ "clause": "Article 9(4)(d)",
2649
+ "title": "Protection and prevention",
2650
+ "rationale": "The rule reports: A Zowe MCP mock systems.json holds a password. That exposes an authentication secret in a file, defeating the authentication mechanisms and key protection this clause requires.",
2651
+ "source": {
2652
+ "doc": "dora",
2653
+ "retrieved": "2026-09-20",
2654
+ "quote": "implement policies and protocols for strong authentication mechanisms, based on relevant standards and dedicated control systems, and protection measures of cryptographic keys"
2655
+ }
2149
2656
  }
2150
2657
  ]
2151
2658
  }