@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
@@ -63,6 +63,19 @@
63
63
  "quote": "Check the validity of the following information inputs"
64
64
  }
65
65
  },
66
+ {
67
+ "kind": "compliance",
68
+ "ruleId": "argv-or-env-to-connection-target",
69
+ "framework": "nist-800-53r5",
70
+ "clause": "SI-10",
71
+ "title": "Information Input Validation",
72
+ "rationale": "The rule reports: Command-line or environment input names the database or queue manager the program connects to. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
73
+ "source": {
74
+ "doc": "nist80053",
75
+ "retrieved": "2026-09-20",
76
+ "quote": "Check the validity of the following information inputs"
77
+ }
78
+ },
66
79
  {
67
80
  "kind": "compliance",
68
81
  "ruleId": "argv-or-env-to-dynamic-file-path",
@@ -167,6 +180,19 @@
167
180
  "quote": "Check the validity of the following information inputs"
168
181
  }
169
182
  },
183
+ {
184
+ "kind": "compliance",
185
+ "ruleId": "argv-or-env-to-storage-length",
186
+ "framework": "nist-800-53r5",
187
+ "clause": "SI-10",
188
+ "title": "Information Input Validation",
189
+ "rationale": "The rule reports: Command-line or environment input decides how much storage the program acquires. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
190
+ "source": {
191
+ "doc": "nist80053",
192
+ "retrieved": "2026-09-20",
193
+ "quote": "Check the validity of the following information inputs"
194
+ }
195
+ },
170
196
  {
171
197
  "kind": "compliance",
172
198
  "ruleId": "argv-or-env-to-subscript",
@@ -193,6 +219,19 @@
193
219
  "quote": "Check the validity of the following information inputs"
194
220
  }
195
221
  },
222
+ {
223
+ "kind": "compliance",
224
+ "ruleId": "binary-store-exceeds-picture-under-trunc-opt",
225
+ "framework": "nist-800-53r5",
226
+ "clause": "SI-2",
227
+ "title": "Flaw Remediation",
228
+ "rationale": "The rule reports: Under TRUNC(OPT) a binary field receives a value that can have more digits than its PICTURE. That is a known system flaw present in the build, which this control requires be identified, reported and corrected.",
229
+ "source": {
230
+ "doc": "nist80053",
231
+ "retrieved": "2026-09-20",
232
+ "quote": "Identify, report, and correct system flaws"
233
+ }
234
+ },
196
235
  {
197
236
  "kind": "compliance",
198
237
  "ruleId": "build-pins-exploited-compiler",
@@ -271,6 +310,19 @@
271
310
  "quote": "Check the validity of the following information inputs"
272
311
  }
273
312
  },
313
+ {
314
+ "kind": "compliance",
315
+ "ruleId": "character-range-reverses-in-ascii",
316
+ "framework": "nist-800-53r5",
317
+ "clause": "SI-2",
318
+ "title": "Flaw Remediation",
319
+ "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 known system flaw present in the build, which this control requires be identified, reported and corrected.",
320
+ "source": {
321
+ "doc": "nist80053",
322
+ "retrieved": "2026-09-20",
323
+ "quote": "Identify, report, and correct system flaws"
324
+ }
325
+ },
274
326
  {
275
327
  "kind": "compliance",
276
328
  "ruleId": "cics-commarea-length-exceeds-area",
@@ -310,6 +362,19 @@
310
362
  "quote": "Check the validity of the following information inputs"
311
363
  }
312
364
  },
365
+ {
366
+ "kind": "compliance",
367
+ "ruleId": "cics-condition-ignored",
368
+ "framework": "nist-800-53r5",
369
+ "clause": "SI-10",
370
+ "title": "Information Input Validation",
371
+ "rationale": "The rule reports: A program issues CICS commands whose failure it cannot see: NOHANDLE with no RESP, or IGNORE CONDITION. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
372
+ "source": {
373
+ "doc": "nist80053",
374
+ "retrieved": "2026-09-20",
375
+ "quote": "Check the validity of the following information inputs"
376
+ }
377
+ },
313
378
  {
314
379
  "kind": "compliance",
315
380
  "ruleId": "cics-listener-accepts-cleartext",
@@ -414,6 +479,45 @@
414
479
  "quote": "Check the validity of the following information inputs"
415
480
  }
416
481
  },
482
+ {
483
+ "kind": "compliance",
484
+ "ruleId": "cics-terminal-to-cics-sysid",
485
+ "framework": "nist-800-53r5",
486
+ "clause": "SI-10",
487
+ "title": "Information Input Validation",
488
+ "rationale": "The rule reports: Terminal input decides which region a CICS command is shipped to. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
489
+ "source": {
490
+ "doc": "nist80053",
491
+ "retrieved": "2026-09-20",
492
+ "quote": "Check the validity of the following information inputs"
493
+ }
494
+ },
495
+ {
496
+ "kind": "compliance",
497
+ "ruleId": "cics-terminal-to-cics-system-resource",
498
+ "framework": "nist-800-53r5",
499
+ "clause": "SI-10",
500
+ "title": "Information Input Validation",
501
+ "rationale": "The rule reports: Terminal input names the resource an EXEC CICS SET changes. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
502
+ "source": {
503
+ "doc": "nist80053",
504
+ "retrieved": "2026-09-20",
505
+ "quote": "Check the validity of the following information inputs"
506
+ }
507
+ },
508
+ {
509
+ "kind": "compliance",
510
+ "ruleId": "cics-terminal-to-connection-target",
511
+ "framework": "nist-800-53r5",
512
+ "clause": "SI-10",
513
+ "title": "Information Input Validation",
514
+ "rationale": "The rule reports: Terminal input names the database or queue manager the program connects to. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
515
+ "source": {
516
+ "doc": "nist80053",
517
+ "retrieved": "2026-09-20",
518
+ "quote": "Check the validity of the following information inputs"
519
+ }
520
+ },
417
521
  {
418
522
  "kind": "compliance",
419
523
  "ruleId": "cics-terminal-to-dynamic-file-path",
@@ -570,6 +674,19 @@
570
674
  "quote": "Check the validity of the following information inputs"
571
675
  }
572
676
  },
677
+ {
678
+ "kind": "compliance",
679
+ "ruleId": "cics-terminal-to-storage-length",
680
+ "framework": "nist-800-53r5",
681
+ "clause": "SI-10",
682
+ "title": "Information Input Validation",
683
+ "rationale": "The rule reports: Terminal input decides how much storage the program acquires. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
684
+ "source": {
685
+ "doc": "nist80053",
686
+ "retrieved": "2026-09-20",
687
+ "quote": "Check the validity of the following information inputs"
688
+ }
689
+ },
573
690
  {
574
691
  "kind": "compliance",
575
692
  "ruleId": "cics-terminal-to-subscript",
@@ -596,6 +713,19 @@
596
713
  "quote": "Check the validity of the following information inputs"
597
714
  }
598
715
  },
716
+ {
717
+ "kind": "compliance",
718
+ "ruleId": "cics-terminal-to-xml-document",
719
+ "framework": "nist-800-53r5",
720
+ "clause": "SI-10",
721
+ "title": "Information Input Validation",
722
+ "rationale": "The rule reports: Terminal input is parsed as an XML document. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
723
+ "source": {
724
+ "doc": "nist80053",
725
+ "retrieved": "2026-09-20",
726
+ "quote": "Check the validity of the following information inputs"
727
+ }
728
+ },
599
729
  {
600
730
  "kind": "compliance",
601
731
  "ruleId": "cics-transfer-to-variable-program",
@@ -635,6 +765,45 @@
635
765
  "quote": "Check the validity of the following information inputs"
636
766
  }
637
767
  },
768
+ {
769
+ "kind": "compliance",
770
+ "ruleId": "cics-web-to-cics-sysid",
771
+ "framework": "nist-800-53r5",
772
+ "clause": "SI-10",
773
+ "title": "Information Input Validation",
774
+ "rationale": "The rule reports: Web input decides which region a CICS command is shipped to. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
775
+ "source": {
776
+ "doc": "nist80053",
777
+ "retrieved": "2026-09-20",
778
+ "quote": "Check the validity of the following information inputs"
779
+ }
780
+ },
781
+ {
782
+ "kind": "compliance",
783
+ "ruleId": "cics-web-to-cics-system-resource",
784
+ "framework": "nist-800-53r5",
785
+ "clause": "SI-10",
786
+ "title": "Information Input Validation",
787
+ "rationale": "The rule reports: Web input names the resource an EXEC CICS SET changes. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
788
+ "source": {
789
+ "doc": "nist80053",
790
+ "retrieved": "2026-09-20",
791
+ "quote": "Check the validity of the following information inputs"
792
+ }
793
+ },
794
+ {
795
+ "kind": "compliance",
796
+ "ruleId": "cics-web-to-connection-target",
797
+ "framework": "nist-800-53r5",
798
+ "clause": "SI-10",
799
+ "title": "Information Input Validation",
800
+ "rationale": "The rule reports: Web input names the database or queue manager the program connects to. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
801
+ "source": {
802
+ "doc": "nist80053",
803
+ "retrieved": "2026-09-20",
804
+ "quote": "Check the validity of the following information inputs"
805
+ }
806
+ },
638
807
  {
639
808
  "kind": "compliance",
640
809
  "ruleId": "cics-web-to-dynamic-file-path",
@@ -791,6 +960,19 @@
791
960
  "quote": "Check the validity of the following information inputs"
792
961
  }
793
962
  },
963
+ {
964
+ "kind": "compliance",
965
+ "ruleId": "cics-web-to-storage-length",
966
+ "framework": "nist-800-53r5",
967
+ "clause": "SI-10",
968
+ "title": "Information Input Validation",
969
+ "rationale": "The rule reports: Web input decides how much storage the program acquires. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
970
+ "source": {
971
+ "doc": "nist80053",
972
+ "retrieved": "2026-09-20",
973
+ "quote": "Check the validity of the following information inputs"
974
+ }
975
+ },
794
976
  {
795
977
  "kind": "compliance",
796
978
  "ruleId": "cics-web-to-subscript",
@@ -817,6 +999,19 @@
817
999
  "quote": "Check the validity of the following information inputs"
818
1000
  }
819
1001
  },
1002
+ {
1003
+ "kind": "compliance",
1004
+ "ruleId": "cics-web-to-xml-document",
1005
+ "framework": "nist-800-53r5",
1006
+ "clause": "SI-10",
1007
+ "title": "Information Input Validation",
1008
+ "rationale": "The rule reports: Web input is parsed as an XML document. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
1009
+ "source": {
1010
+ "doc": "nist80053",
1011
+ "retrieved": "2026-09-20",
1012
+ "quote": "Check the validity of the following information inputs"
1013
+ }
1014
+ },
820
1015
  {
821
1016
  "kind": "compliance",
822
1017
  "ruleId": "cobol-value-credential",
@@ -843,6 +1038,19 @@
843
1038
  "quote": "Develop and document an inventory of system components"
844
1039
  }
845
1040
  },
1041
+ {
1042
+ "kind": "compliance",
1043
+ "ruleId": "control-cards-from-dataset",
1044
+ "framework": "nist-800-53r5",
1045
+ "clause": "CM-3",
1046
+ "title": "Configuration Change Control",
1047
+ "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 the security impact of a proposed change, which this control requires be considered explicitly before the change is approved.",
1048
+ "source": {
1049
+ "doc": "nist80053",
1050
+ "retrieved": "2026-09-20",
1051
+ "quote": "Review proposed configuration-controlled changes to the system and approve or disapprove such changes with explicit consideration for security and privacy impact analyses"
1052
+ }
1053
+ },
846
1054
  {
847
1055
  "kind": "compliance",
848
1056
  "ruleId": "copybook-shadowed",
@@ -908,6 +1116,32 @@
908
1116
  "quote": "Check the validity of the following information inputs"
909
1117
  }
910
1118
  },
1119
+ {
1120
+ "kind": "compliance",
1121
+ "ruleId": "database-to-cics-sysid",
1122
+ "framework": "nist-800-53r5",
1123
+ "clause": "SI-10",
1124
+ "title": "Information Input Validation",
1125
+ "rationale": "The rule reports: A database value decides which region a CICS command is shipped to. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
1126
+ "source": {
1127
+ "doc": "nist80053",
1128
+ "retrieved": "2026-09-20",
1129
+ "quote": "Check the validity of the following information inputs"
1130
+ }
1131
+ },
1132
+ {
1133
+ "kind": "compliance",
1134
+ "ruleId": "database-to-cics-system-resource",
1135
+ "framework": "nist-800-53r5",
1136
+ "clause": "SI-10",
1137
+ "title": "Information Input Validation",
1138
+ "rationale": "The rule reports: A database value names the resource an EXEC CICS SET changes. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
1139
+ "source": {
1140
+ "doc": "nist80053",
1141
+ "retrieved": "2026-09-20",
1142
+ "quote": "Check the validity of the following information inputs"
1143
+ }
1144
+ },
911
1145
  {
912
1146
  "kind": "compliance",
913
1147
  "ruleId": "database-to-dynamic-file-path",
@@ -1194,6 +1428,32 @@
1194
1428
  "quote": "Check the validity of the following information inputs"
1195
1429
  }
1196
1430
  },
1431
+ {
1432
+ "kind": "compliance",
1433
+ "ruleId": "file-record-to-cics-sysid",
1434
+ "framework": "nist-800-53r5",
1435
+ "clause": "SI-10",
1436
+ "title": "Information Input Validation",
1437
+ "rationale": "The rule reports: A file record decides which region a CICS command is shipped to. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
1438
+ "source": {
1439
+ "doc": "nist80053",
1440
+ "retrieved": "2026-09-20",
1441
+ "quote": "Check the validity of the following information inputs"
1442
+ }
1443
+ },
1444
+ {
1445
+ "kind": "compliance",
1446
+ "ruleId": "file-record-to-cics-system-resource",
1447
+ "framework": "nist-800-53r5",
1448
+ "clause": "SI-10",
1449
+ "title": "Information Input Validation",
1450
+ "rationale": "The rule reports: A file record names the resource an EXEC CICS SET changes. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
1451
+ "source": {
1452
+ "doc": "nist80053",
1453
+ "retrieved": "2026-09-20",
1454
+ "quote": "Check the validity of the following information inputs"
1455
+ }
1456
+ },
1197
1457
  {
1198
1458
  "kind": "compliance",
1199
1459
  "ruleId": "file-record-to-dynamic-file-path",
@@ -1389,6 +1649,19 @@
1389
1649
  "quote": "Check the validity of the following information inputs"
1390
1650
  }
1391
1651
  },
1652
+ {
1653
+ "kind": "compliance",
1654
+ "ruleId": "intermediate-result-loses-high-order-digits",
1655
+ "framework": "nist-800-53r5",
1656
+ "clause": "SI-2",
1657
+ "title": "Flaw Remediation",
1658
+ "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 known system flaw present in the build, which this control requires be identified, reported and corrected.",
1659
+ "source": {
1660
+ "doc": "nist80053",
1661
+ "retrieved": "2026-09-20",
1662
+ "quote": "Identify, report, and correct system flaws"
1663
+ }
1664
+ },
1392
1665
  {
1393
1666
  "kind": "compliance",
1394
1667
  "ruleId": "jcl-dlm-hides-instream",
@@ -1506,6 +1779,19 @@
1506
1779
  "quote": "Check the validity of the following information inputs"
1507
1780
  }
1508
1781
  },
1782
+ {
1783
+ "kind": "compliance",
1784
+ "ruleId": "jcl-instream-to-connection-target",
1785
+ "framework": "nist-800-53r5",
1786
+ "clause": "SI-10",
1787
+ "title": "Information Input Validation",
1788
+ "rationale": "The rule reports: In-stream job data names the database or queue manager the program connects to. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
1789
+ "source": {
1790
+ "doc": "nist80053",
1791
+ "retrieved": "2026-09-20",
1792
+ "quote": "Check the validity of the following information inputs"
1793
+ }
1794
+ },
1509
1795
  {
1510
1796
  "kind": "compliance",
1511
1797
  "ruleId": "jcl-instream-to-dynamic-file-path",
@@ -1610,6 +1896,19 @@
1610
1896
  "quote": "Check the validity of the following information inputs"
1611
1897
  }
1612
1898
  },
1899
+ {
1900
+ "kind": "compliance",
1901
+ "ruleId": "jcl-instream-to-storage-length",
1902
+ "framework": "nist-800-53r5",
1903
+ "clause": "SI-10",
1904
+ "title": "Information Input Validation",
1905
+ "rationale": "The rule reports: In-stream job data decides how much storage the program acquires. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
1906
+ "source": {
1907
+ "doc": "nist80053",
1908
+ "retrieved": "2026-09-20",
1909
+ "quote": "Check the validity of the following information inputs"
1910
+ }
1911
+ },
1613
1912
  {
1614
1913
  "kind": "compliance",
1615
1914
  "ruleId": "jcl-instream-to-subscript",
@@ -1662,6 +1961,19 @@
1662
1961
  "quote": "Check the validity of the following information inputs"
1663
1962
  }
1664
1963
  },
1964
+ {
1965
+ "kind": "compliance",
1966
+ "ruleId": "jcl-parm-to-connection-target",
1967
+ "framework": "nist-800-53r5",
1968
+ "clause": "SI-10",
1969
+ "title": "Information Input Validation",
1970
+ "rationale": "The rule reports: A JCL PARM names the database or queue manager the program connects to. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
1971
+ "source": {
1972
+ "doc": "nist80053",
1973
+ "retrieved": "2026-09-20",
1974
+ "quote": "Check the validity of the following information inputs"
1975
+ }
1976
+ },
1665
1977
  {
1666
1978
  "kind": "compliance",
1667
1979
  "ruleId": "jcl-parm-to-dynamic-file-path",
@@ -1766,6 +2078,19 @@
1766
2078
  "quote": "Check the validity of the following information inputs"
1767
2079
  }
1768
2080
  },
2081
+ {
2082
+ "kind": "compliance",
2083
+ "ruleId": "jcl-parm-to-storage-length",
2084
+ "framework": "nist-800-53r5",
2085
+ "clause": "SI-10",
2086
+ "title": "Information Input Validation",
2087
+ "rationale": "The rule reports: A JCL PARM decides how much storage the program acquires. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
2088
+ "source": {
2089
+ "doc": "nist80053",
2090
+ "retrieved": "2026-09-20",
2091
+ "quote": "Check the validity of the following information inputs"
2092
+ }
2093
+ },
1769
2094
  {
1770
2095
  "kind": "compliance",
1771
2096
  "ruleId": "jcl-parm-to-subscript",
@@ -1935,6 +2260,32 @@
1935
2260
  "quote": "Develop and document an inventory of system components"
1936
2261
  }
1937
2262
  },
2263
+ {
2264
+ "kind": "compliance",
2265
+ "ruleId": "password-case-folded-before-compare",
2266
+ "framework": "nist-800-53r5",
2267
+ "clause": "SI-10",
2268
+ "title": "Information Input Validation",
2269
+ "rationale": "The rule reports: A sign-on folds a password's case before comparing it. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
2270
+ "source": {
2271
+ "doc": "nist80053",
2272
+ "retrieved": "2026-09-20",
2273
+ "quote": "Check the validity of the following information inputs"
2274
+ }
2275
+ },
2276
+ {
2277
+ "kind": "compliance",
2278
+ "ruleId": "program-checks-stored-password",
2279
+ "framework": "nist-800-53r5",
2280
+ "clause": "IA-5",
2281
+ "title": "Authenticator Management",
2282
+ "rationale": "The rule reports: A program compares a password it reads back from its own file or table. That is authenticator content established in a file rather than managed, which is what this control governs.",
2283
+ "source": {
2284
+ "doc": "nist80053",
2285
+ "retrieved": "2026-09-20",
2286
+ "quote": "Establishing initial authenticator content for any authenticators issued by the organization"
2287
+ }
2288
+ },
1938
2289
  {
1939
2290
  "kind": "compliance",
1940
2291
  "ruleId": "program-without-entry",
@@ -2000,6 +2351,19 @@
2000
2351
  "quote": "Identify, report, and correct system flaws"
2001
2352
  }
2002
2353
  },
2354
+ {
2355
+ "kind": "compliance",
2356
+ "ruleId": "sort-exit-named",
2357
+ "framework": "nist-800-53r5",
2358
+ "clause": "CM-8",
2359
+ "title": "System Component Inventory",
2360
+ "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 a component the inventory does not accurately account for, which this control requires be documented.",
2361
+ "source": {
2362
+ "doc": "nist80053",
2363
+ "retrieved": "2026-09-20",
2364
+ "quote": "Develop and document an inventory of system components"
2365
+ }
2366
+ },
2003
2367
  {
2004
2368
  "kind": "compliance",
2005
2369
  "ruleId": "system-response-to-http-header",
@@ -2013,6 +2377,19 @@
2013
2377
  "quote": "Check the validity of the following information inputs"
2014
2378
  }
2015
2379
  },
2380
+ {
2381
+ "kind": "compliance",
2382
+ "ruleId": "system-response-to-screen",
2383
+ "framework": "nist-800-53r5",
2384
+ "clause": "SI-10",
2385
+ "title": "Information Input Validation",
2386
+ "rationale": "The rule reports: Db2's error message text is shown on the terminal. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
2387
+ "source": {
2388
+ "doc": "nist80053",
2389
+ "retrieved": "2026-09-20",
2390
+ "quote": "Check the validity of the following information inputs"
2391
+ }
2392
+ },
2016
2393
  {
2017
2394
  "kind": "compliance",
2018
2395
  "ruleId": "system-response-to-web-response",
@@ -2026,6 +2403,19 @@
2026
2403
  "quote": "Check the validity of the following information inputs"
2027
2404
  }
2028
2405
  },
2406
+ {
2407
+ "kind": "compliance",
2408
+ "ruleId": "tso-batch-runs-program",
2409
+ "framework": "nist-800-53r5",
2410
+ "clause": "CM-8",
2411
+ "title": "System Component Inventory",
2412
+ "rationale": "The rule reports: A TSO batch step runs another program, CLIST, REXX exec or job from its in-stream commands. That is a component the inventory does not accurately account for, which this control requires be documented.",
2413
+ "source": {
2414
+ "doc": "nist80053",
2415
+ "retrieved": "2026-09-20",
2416
+ "quote": "Develop and document an inventory of system components"
2417
+ }
2418
+ },
2029
2419
  {
2030
2420
  "kind": "compliance",
2031
2421
  "ruleId": "tso-logon-password",
@@ -2129,6 +2519,123 @@
2129
2519
  "retrieved": "2026-09-20",
2130
2520
  "quote": "Protect the authenticity of communications sessions."
2131
2521
  }
2522
+ },
2523
+ {
2524
+ "kind": "compliance",
2525
+ "ruleId": "zowe-config-cleartext",
2526
+ "framework": "nist-800-53r5",
2527
+ "clause": "IA-5(1)",
2528
+ "title": "Password-based Authentication",
2529
+ "rationale": "The rule reports: A Zowe profile for z/OSMF, API ML or RSE connects over plain HTTP. That is a password sent over a channel with no cryptographic protection, which this control does not allow.",
2530
+ "source": {
2531
+ "doc": "nist80053",
2532
+ "retrieved": "2026-09-20",
2533
+ "quote": "Transmit passwords only over cryptographically-protected channels"
2534
+ }
2535
+ },
2536
+ {
2537
+ "kind": "compliance",
2538
+ "ruleId": "zowe-config-secret-in-clear",
2539
+ "framework": "nist-800-53r5",
2540
+ "clause": "IA-5",
2541
+ "title": "Authenticator Management",
2542
+ "rationale": "The rule reports: A Zowe team configuration holds a password or token in the file rather than in the credential vault. That is authenticator content established in a file rather than managed, which is what this control governs.",
2543
+ "source": {
2544
+ "doc": "nist80053",
2545
+ "retrieved": "2026-09-20",
2546
+ "quote": "Establishing initial authenticator content for any authenticators issued by the organization"
2547
+ }
2548
+ },
2549
+ {
2550
+ "kind": "compliance",
2551
+ "ruleId": "zowe-config-tls-verify-off",
2552
+ "framework": "nist-800-53r5",
2553
+ "clause": "SC-8",
2554
+ "title": "Transmission Confidentiality and Integrity",
2555
+ "rationale": "The rule reports: A Zowe profile turns off TLS certificate verification. That is information crossing a network with nothing protecting it, which this control requires be protected in transit.",
2556
+ "source": {
2557
+ "doc": "nist80053",
2558
+ "retrieved": "2026-09-20",
2559
+ "quote": "Protect the {{ insert: param, sc-08_odp }} of transmitted information."
2560
+ }
2561
+ },
2562
+ {
2563
+ "kind": "compliance",
2564
+ "ruleId": "zowe-mcp-data-marking-off",
2565
+ "framework": "nist-800-53r5",
2566
+ "clause": "SI-10",
2567
+ "title": "Information Input Validation",
2568
+ "rationale": "The rule reports: A Zowe MCP server has its untrusted-data marking turned off. That is an information input reaching an operation without its validity having been checked, which is what this control requires.",
2569
+ "source": {
2570
+ "doc": "nist80053",
2571
+ "retrieved": "2026-09-20",
2572
+ "quote": "Check the validity of the following information inputs"
2573
+ }
2574
+ },
2575
+ {
2576
+ "kind": "compliance",
2577
+ "ruleId": "zowe-mcp-password-in-config",
2578
+ "framework": "nist-800-53r5",
2579
+ "clause": "IA-5",
2580
+ "title": "Authenticator Management",
2581
+ "rationale": "The rule reports: An MCP client configuration sets a Zowe MCP password, credential map or key passphrase to a literal value. That is authenticator content established in a file rather than managed, which is what this control governs.",
2582
+ "source": {
2583
+ "doc": "nist80053",
2584
+ "retrieved": "2026-09-20",
2585
+ "quote": "Establishing initial authenticator content for any authenticators issued by the organization"
2586
+ }
2587
+ },
2588
+ {
2589
+ "kind": "compliance",
2590
+ "ruleId": "zowe-mcp-tier-full",
2591
+ "framework": "nist-800-53r5",
2592
+ "clause": "AC-6",
2593
+ "title": "Least Privilege",
2594
+ "rationale": "The rule reports: A Zowe MCP server runs at the full capability tier. That is authority granted or exercised beyond what the task requires, which this control exists to prevent.",
2595
+ "source": {
2596
+ "doc": "nist80053",
2597
+ "retrieved": "2026-09-20",
2598
+ "quote": "Employ the principle of least privilege, allowing only authorized accesses for users (or processes acting on behalf of users) that are necessary to accomplish assigned organizational tasks."
2599
+ }
2600
+ },
2601
+ {
2602
+ "kind": "compliance",
2603
+ "ruleId": "zowe-mcp-tier-writes",
2604
+ "framework": "nist-800-53r5",
2605
+ "clause": "AC-6",
2606
+ "title": "Least Privilege",
2607
+ "rationale": "The rule reports: A Zowe MCP server runs at a capability tier that lets the agent change or delete mainframe data. That is authority granted or exercised beyond what the task requires, which this control exists to prevent.",
2608
+ "source": {
2609
+ "doc": "nist80053",
2610
+ "retrieved": "2026-09-20",
2611
+ "quote": "Employ the principle of least privilege, allowing only authorized accesses for users (or processes acting on behalf of users) that are necessary to accomplish assigned organizational tasks."
2612
+ }
2613
+ },
2614
+ {
2615
+ "kind": "compliance",
2616
+ "ruleId": "zowe-mcp-unpinned",
2617
+ "framework": "nist-800-53r5",
2618
+ "clause": "CM-8",
2619
+ "title": "System Component Inventory",
2620
+ "rationale": "The rule reports: A Zowe MCP server is launched from the registry with no pinned version. That is a component the inventory does not accurately account for, which this control requires be documented.",
2621
+ "source": {
2622
+ "doc": "nist80053",
2623
+ "retrieved": "2026-09-20",
2624
+ "quote": "Develop and document an inventory of system components"
2625
+ }
2626
+ },
2627
+ {
2628
+ "kind": "compliance",
2629
+ "ruleId": "zowe-mock-credentials",
2630
+ "framework": "nist-800-53r5",
2631
+ "clause": "IA-5",
2632
+ "title": "Authenticator Management",
2633
+ "rationale": "The rule reports: A Zowe MCP mock systems.json holds a password. That is authenticator content established in a file rather than managed, which is what this control governs.",
2634
+ "source": {
2635
+ "doc": "nist80053",
2636
+ "retrieved": "2026-09-20",
2637
+ "quote": "Establishing initial authenticator content for any authenticators issued by the organization"
2638
+ }
2132
2639
  }
2133
2640
  ]
2134
2641
  }