@portll/cobolwork 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/README.md +89 -26
  2. package/STABILITY.md +76 -0
  3. package/bin/cobolwork.mjs +56 -14
  4. package/lib/baseline.mjs +9 -0
  5. package/lib/bms.mjs +21 -7
  6. package/lib/build.mjs +133 -53
  7. package/lib/capabilities.mjs +13 -11
  8. package/lib/cics-commands.mjs +501 -9
  9. package/lib/compliance.mjs +11 -0
  10. package/lib/consequence.mjs +17 -0
  11. package/lib/control-reuse.mjs +113 -0
  12. package/lib/control-workers.mjs +161 -0
  13. package/lib/control.mjs +77 -4
  14. package/lib/dataflow.mjs +402 -152
  15. package/lib/db2/cursor.mjs +15 -0
  16. package/lib/db2/read.mjs +170 -0
  17. package/lib/db2/rules.mjs +77 -0
  18. package/lib/db2/stmt/alter.mjs +473 -0
  19. package/lib/db2/stmt/grant.mjs +125 -0
  20. package/lib/db2/stmt/index.mjs +141 -0
  21. package/lib/db2/stmt/misc.mjs +325 -0
  22. package/lib/db2/stmt/routine.mjs +564 -0
  23. package/lib/db2/stmt/storage.mjs +146 -0
  24. package/lib/db2/stmt/table.mjs +540 -0
  25. package/lib/db2/stmt/view.mjs +146 -0
  26. package/lib/diff.mjs +17 -5
  27. package/lib/equivalence.mjs +44 -5
  28. package/lib/evidence/cli.mjs +26 -7
  29. package/lib/evidence/record.mjs +16 -6
  30. package/lib/evidence/seal.mjs +17 -0
  31. package/lib/evidence/store.mjs +44 -15
  32. package/lib/evidence/timestamp.mjs +83 -0
  33. package/lib/evidence/verify.mjs +120 -42
  34. package/lib/exec-reading.mjs +51 -0
  35. package/lib/execution.mjs +3 -2
  36. package/lib/explain.mjs +2 -0
  37. package/lib/exploitability.mjs +11 -2
  38. package/lib/hlasm/asm/data.mjs +128 -0
  39. package/lib/hlasm/asm/listing.mjs +43 -0
  40. package/lib/hlasm/asm/output.mjs +45 -0
  41. package/lib/hlasm/asm/sections.mjs +161 -0
  42. package/lib/hlasm/asm/symbols.mjs +78 -0
  43. package/lib/hlasm/exec.mjs +27 -0
  44. package/lib/hlasm/expr.mjs +167 -0
  45. package/lib/hlasm/instr.mjs +73 -0
  46. package/lib/hlasm/locate.mjs +333 -0
  47. package/lib/hlasm/macro/authorization.mjs +146 -0
  48. package/lib/hlasm/macro/datasets.mjs +107 -0
  49. package/lib/hlasm/macro/io.mjs +162 -0
  50. package/lib/hlasm/macro/le.mjs +53 -0
  51. package/lib/hlasm/macro/linkage.mjs +143 -0
  52. package/lib/hlasm/macro/operator.mjs +77 -0
  53. package/lib/hlasm/macro/program.mjs +184 -0
  54. package/lib/hlasm/macro/recovery.mjs +85 -0
  55. package/lib/hlasm/macro/storage.mjs +167 -0
  56. package/lib/hlasm/macro/structured.mjs +131 -0
  57. package/lib/hlasm/model.mjs +97 -0
  58. package/lib/hlasm/mvs38.mjs +47 -0
  59. package/lib/hlasm/operands.mjs +59 -0
  60. package/lib/hlasm/optable.mjs +61 -0
  61. package/lib/hlasm/read.mjs +130 -0
  62. package/lib/hlasm.mjs +44 -7
  63. package/lib/ims/dli.mjs +37 -0
  64. package/lib/ims/macro/dbd.mjs +299 -0
  65. package/lib/ims/macro/psb.mjs +286 -0
  66. package/lib/ims/model.mjs +149 -0
  67. package/lib/ims/operands.mjs +23 -0
  68. package/lib/ims/read.mjs +37 -0
  69. package/lib/ims/rules.mjs +135 -0
  70. package/lib/inventory.mjs +10 -7
  71. package/lib/ironwork-ids.mjs +24 -0
  72. package/lib/ironwork.mjs +20 -13
  73. package/lib/kernel/pds-archive.mjs +256 -0
  74. package/lib/kernel/registry.mjs +32 -23
  75. package/lib/kernel/shared-pass.mjs +163 -0
  76. package/lib/kernel/source-tree.mjs +104 -36
  77. package/lib/kernel/version-key.mjs +17 -0
  78. package/lib/layout.mjs +26 -31
  79. package/lib/options.mjs +26 -4
  80. package/lib/parser.mjs +136 -17
  81. package/lib/pli/cursor.mjs +15 -0
  82. package/lib/pli/expr.mjs +101 -0
  83. package/lib/pli/include.mjs +82 -0
  84. package/lib/pli/layout.mjs +125 -0
  85. package/lib/pli/lex.mjs +198 -0
  86. package/lib/pli/program.mjs +280 -0
  87. package/lib/pli/rules/based.mjs +95 -0
  88. package/lib/pli/rules/conditions.mjs +68 -0
  89. package/lib/pli/rules/entry.mjs +130 -0
  90. package/lib/pli/rules/index.mjs +24 -0
  91. package/lib/pli/rules/preprocessor.mjs +55 -0
  92. package/lib/pli/statements.mjs +130 -0
  93. package/lib/pli/stmt/alloc.mjs +45 -0
  94. package/lib/pli/stmt/assignment.mjs +56 -0
  95. package/lib/pli/stmt/call.mjs +104 -0
  96. package/lib/pli/stmt/conditions.mjs +94 -0
  97. package/lib/pli/stmt/control.mjs +219 -0
  98. package/lib/pli/stmt/declare.mjs +149 -0
  99. package/lib/pli/stmt/exec.mjs +55 -0
  100. package/lib/pli/stmt/io.mjs +239 -0
  101. package/lib/pli/stmt/misc.mjs +4 -0
  102. package/lib/pli/stmt/preprocessor.mjs +242 -0
  103. package/lib/pli/stmt/procedure.mjs +258 -0
  104. package/lib/pli/stmt/stream.mjs +283 -0
  105. package/lib/pli/storage.mjs +129 -0
  106. package/lib/policy.mjs +6 -0
  107. package/lib/precompile-check.mjs +124 -0
  108. package/lib/precompile-cics.mjs +8 -4
  109. package/lib/reach.mjs +11 -2
  110. package/lib/revision.json +1 -1
  111. package/lib/sarif.mjs +44 -3
  112. package/lib/scan.mjs +28 -12
  113. package/lib/sets/abend.mjs +82 -8
  114. package/lib/sets/build.mjs +43 -37
  115. package/lib/sets/cics.mjs +20 -38
  116. package/lib/sets/compile.mjs +46 -18
  117. package/lib/sets/copybook.mjs +5 -3
  118. package/lib/sets/crypto.mjs +5 -3
  119. package/lib/sets/ddl.mjs +36 -0
  120. package/lib/sets/flow.mjs +32 -8
  121. package/lib/sets/hidden.mjs +5 -3
  122. package/lib/sets/hlasm.mjs +124 -8
  123. package/lib/sets/ims.mjs +139 -0
  124. package/lib/sets/log.mjs +11 -9
  125. package/lib/sets/opaque.mjs +27 -7
  126. package/lib/sets/pli.mjs +40 -0
  127. package/lib/sets/priv.mjs +5 -3
  128. package/lib/sets/recon.mjs +5 -3
  129. package/lib/sets/secrets.mjs +112 -0
  130. package/lib/sets/semantics.mjs +8 -3
  131. package/lib/sets/web.mjs +39 -23
  132. package/lib/site.mjs +10 -0
  133. package/lib/sources.mjs +80 -20
  134. package/lib/statement-cursor.mjs +67 -0
  135. package/lib/verify.mjs +3 -2
  136. package/lib/version.mjs +6 -0
  137. package/package.json +3 -2
  138. package/rules/compliance-cobit2019.json +520 -5
  139. package/rules/compliance-dora.json +509 -5
  140. package/rules/compliance-ffiec.json +505 -1
  141. package/rules/compliance-nist80053.json +557 -1
  142. package/rules/gitleaks-mainframe.toml +46 -15
  143. package/rules/hlasm-instructions.json +2396 -0
  144. package/rules/hlasm-optables.json +8024 -0
  145. package/schema/cobolwork-baseline.schema.json +36 -0
  146. package/schema/cobolwork-build-provenance.schema.json +187 -0
  147. package/schema/cobolwork-build.schema.json +382 -0
  148. package/schema/cobolwork-capabilities.schema.json +239 -0
  149. package/schema/cobolwork-diff.schema.json +217 -0
  150. package/schema/cobolwork-evidence.schema.json +161 -0
  151. package/schema/cobolwork-execution.schema.json +53 -0
  152. package/schema/cobolwork-explain.schema.json +360 -0
  153. package/schema/cobolwork-finding.schema.json +465 -0
  154. package/schema/cobolwork-flow.schema.json +465 -0
  155. package/schema/cobolwork-gate.schema.json +211 -0
  156. package/schema/cobolwork-inventory.schema.json +206 -0
  157. package/schema/cobolwork-parse.schema.json +105 -0
  158. package/schema/cobolwork-reach.schema.json +74 -0
  159. package/schema/cobolwork-report.schema.json +559 -0
  160. package/schema/cobolwork-witness.schema.json +107 -0
  161. package/schema/cobolwork.baseline.schema.json +101 -0
  162. package/schema/cobolwork.policy.schema.json +7 -0
  163. package/schema/cobolwork.site.schema.json +116 -0
@@ -379,6 +379,19 @@
379
379
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
380
380
  }
381
381
  },
382
+ {
383
+ "kind": "compliance",
384
+ "ruleId": "cics-new-password",
385
+ "framework": "dora",
386
+ "clause": "Article 9(4)(d)",
387
+ "title": "Protection and prevention",
388
+ "rationale": "The rule reports: Credential pattern: cics new password. That exposes an authentication secret in a file, defeating the authentication mechanisms and key protection this clause requires.",
389
+ "source": {
390
+ "doc": "dora",
391
+ "retrieved": "2026-09-20",
392
+ "quote": "implement policies and protocols for strong authentication mechanisms, based on relevant standards and dedicated control systems, and protection measures of cryptographic keys"
393
+ }
394
+ },
382
395
  {
383
396
  "kind": "compliance",
384
397
  "ruleId": "cics-protected-field-to-record-key",
@@ -1068,6 +1081,19 @@
1068
1081
  "quote": "map the configuration of the information assets and ICT assets and the links and interdependencies between the different information assets and ICT assets"
1069
1082
  }
1070
1083
  },
1084
+ {
1085
+ "kind": "compliance",
1086
+ "ruleId": "credential-in-source",
1087
+ "framework": "dora",
1088
+ "clause": "Article 9(4)(d)",
1089
+ "title": "Protection and prevention",
1090
+ "rationale": "The rule reports: A credential is written into the source. That exposes an authentication secret in a file, defeating the authentication mechanisms and key protection this clause requires.",
1091
+ "source": {
1092
+ "doc": "dora",
1093
+ "retrieved": "2026-09-20",
1094
+ "quote": "implement policies and protocols for strong authentication mechanisms, based on relevant standards and dedicated control systems, and protection measures of cryptographic keys"
1095
+ }
1096
+ },
1071
1097
  {
1072
1098
  "kind": "compliance",
1073
1099
  "ruleId": "csd-defines-diagnostic-transaction",
@@ -1419,6 +1445,19 @@
1419
1445
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1420
1446
  }
1421
1447
  },
1448
+ {
1449
+ "kind": "compliance",
1450
+ "ruleId": "cics-queue-to-cics-dynamic-transfer",
1451
+ "framework": "dora",
1452
+ "clause": "Article 9(3)(b)",
1453
+ "title": "Protection and prevention",
1454
+ "rationale": "The rule reports: A CICS queue item decides which program CICS transfers to. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1455
+ "source": {
1456
+ "doc": "dora",
1457
+ "retrieved": "2026-09-20",
1458
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1459
+ }
1460
+ },
1422
1461
  {
1423
1462
  "kind": "compliance",
1424
1463
  "ruleId": "file-record-to-cics-sysid",
@@ -1432,6 +1471,19 @@
1432
1471
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1433
1472
  }
1434
1473
  },
1474
+ {
1475
+ "kind": "compliance",
1476
+ "ruleId": "cics-queue-to-cics-sysid",
1477
+ "framework": "dora",
1478
+ "clause": "Article 9(3)(b)",
1479
+ "title": "Protection and prevention",
1480
+ "rationale": "The rule reports: A CICS queue item 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.",
1481
+ "source": {
1482
+ "doc": "dora",
1483
+ "retrieved": "2026-09-20",
1484
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1485
+ }
1486
+ },
1435
1487
  {
1436
1488
  "kind": "compliance",
1437
1489
  "ruleId": "file-record-to-cics-system-resource",
@@ -1445,6 +1497,19 @@
1445
1497
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1446
1498
  }
1447
1499
  },
1500
+ {
1501
+ "kind": "compliance",
1502
+ "ruleId": "cics-queue-to-cics-system-resource",
1503
+ "framework": "dora",
1504
+ "clause": "Article 9(3)(b)",
1505
+ "title": "Protection and prevention",
1506
+ "rationale": "The rule reports: A CICS queue item 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.",
1507
+ "source": {
1508
+ "doc": "dora",
1509
+ "retrieved": "2026-09-20",
1510
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1511
+ }
1512
+ },
1448
1513
  {
1449
1514
  "kind": "compliance",
1450
1515
  "ruleId": "file-record-to-dynamic-file-path",
@@ -1458,6 +1523,19 @@
1458
1523
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1459
1524
  }
1460
1525
  },
1526
+ {
1527
+ "kind": "compliance",
1528
+ "ruleId": "cics-queue-to-dynamic-file-path",
1529
+ "framework": "dora",
1530
+ "clause": "Article 9(3)(b)",
1531
+ "title": "Protection and prevention",
1532
+ "rationale": "The rule reports: A CICS queue item decides which file is opened. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1533
+ "source": {
1534
+ "doc": "dora",
1535
+ "retrieved": "2026-09-20",
1536
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1537
+ }
1538
+ },
1461
1539
  {
1462
1540
  "kind": "compliance",
1463
1541
  "ruleId": "file-record-to-dynamic-program-load",
@@ -1471,6 +1549,19 @@
1471
1549
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1472
1550
  }
1473
1551
  },
1552
+ {
1553
+ "kind": "compliance",
1554
+ "ruleId": "cics-queue-to-dynamic-program-load",
1555
+ "framework": "dora",
1556
+ "clause": "Article 9(3)(b)",
1557
+ "title": "Protection and prevention",
1558
+ "rationale": "The rule reports: A CICS queue item decides which program is called. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1559
+ "source": {
1560
+ "doc": "dora",
1561
+ "retrieved": "2026-09-20",
1562
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1563
+ }
1564
+ },
1474
1565
  {
1475
1566
  "kind": "compliance",
1476
1567
  "ruleId": "file-record-to-dynamic-sql",
@@ -1484,6 +1575,19 @@
1484
1575
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1485
1576
  }
1486
1577
  },
1578
+ {
1579
+ "kind": "compliance",
1580
+ "ruleId": "cics-queue-to-dynamic-sql",
1581
+ "framework": "dora",
1582
+ "clause": "Article 9(3)(b)",
1583
+ "title": "Protection and prevention",
1584
+ "rationale": "The rule reports: A CICS queue item reaches dynamic SQL. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1585
+ "source": {
1586
+ "doc": "dora",
1587
+ "retrieved": "2026-09-20",
1588
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1589
+ }
1590
+ },
1487
1591
  {
1488
1592
  "kind": "compliance",
1489
1593
  "ruleId": "file-record-to-extrapartition-queue",
@@ -1497,6 +1601,19 @@
1497
1601
  "quote": "ensure the security of the means of transfer of data"
1498
1602
  }
1499
1603
  },
1604
+ {
1605
+ "kind": "compliance",
1606
+ "ruleId": "cics-queue-to-extrapartition-queue",
1607
+ "framework": "dora",
1608
+ "clause": "Article 9(3)(a)",
1609
+ "title": "Protection and prevention",
1610
+ "rationale": "The rule reports: A CICS queue item is written to a transient-data queue that leaves the region. That is data leaving through a channel the program opened itself, which bears directly on the security of the means of transfer.",
1611
+ "source": {
1612
+ "doc": "dora",
1613
+ "retrieved": "2026-09-20",
1614
+ "quote": "ensure the security of the means of transfer of data"
1615
+ }
1616
+ },
1500
1617
  {
1501
1618
  "kind": "compliance",
1502
1619
  "ruleId": "file-record-to-http-header",
@@ -1510,6 +1627,19 @@
1510
1627
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1511
1628
  }
1512
1629
  },
1630
+ {
1631
+ "kind": "compliance",
1632
+ "ruleId": "cics-queue-to-http-header",
1633
+ "framework": "dora",
1634
+ "clause": "Article 9(3)(b)",
1635
+ "title": "Protection and prevention",
1636
+ "rationale": "The rule reports: A CICS queue item is written into a header of the response. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1637
+ "source": {
1638
+ "doc": "dora",
1639
+ "retrieved": "2026-09-20",
1640
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1641
+ }
1642
+ },
1513
1643
  {
1514
1644
  "kind": "compliance",
1515
1645
  "ruleId": "file-record-to-internal-reader",
@@ -1523,6 +1653,19 @@
1523
1653
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1524
1654
  }
1525
1655
  },
1656
+ {
1657
+ "kind": "compliance",
1658
+ "ruleId": "cics-queue-to-internal-reader",
1659
+ "framework": "dora",
1660
+ "clause": "Article 9(3)(b)",
1661
+ "title": "Protection and prevention",
1662
+ "rationale": "The rule reports: A CICS queue item is written into a job the internal reader submits. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1663
+ "source": {
1664
+ "doc": "dora",
1665
+ "retrieved": "2026-09-20",
1666
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1667
+ }
1668
+ },
1526
1669
  {
1527
1670
  "kind": "compliance",
1528
1671
  "ruleId": "file-record-to-message-queue",
@@ -1536,6 +1679,19 @@
1536
1679
  "quote": "ensure the security of the means of transfer of data"
1537
1680
  }
1538
1681
  },
1682
+ {
1683
+ "kind": "compliance",
1684
+ "ruleId": "cics-queue-to-message-queue",
1685
+ "framework": "dora",
1686
+ "clause": "Article 9(3)(a)",
1687
+ "title": "Protection and prevention",
1688
+ "rationale": "The rule reports: A CICS queue item is put on a message queue. That is data leaving through a channel the program opened itself, which bears directly on the security of the means of transfer.",
1689
+ "source": {
1690
+ "doc": "dora",
1691
+ "retrieved": "2026-09-20",
1692
+ "quote": "ensure the security of the means of transfer of data"
1693
+ }
1694
+ },
1539
1695
  {
1540
1696
  "kind": "compliance",
1541
1697
  "ruleId": "file-record-to-os-command",
@@ -1549,6 +1705,19 @@
1549
1705
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1550
1706
  }
1551
1707
  },
1708
+ {
1709
+ "kind": "compliance",
1710
+ "ruleId": "cics-queue-to-os-command",
1711
+ "framework": "dora",
1712
+ "clause": "Article 9(3)(b)",
1713
+ "title": "Protection and prevention",
1714
+ "rationale": "The rule reports: A CICS queue item reaches an operating-system command routine. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1715
+ "source": {
1716
+ "doc": "dora",
1717
+ "retrieved": "2026-09-20",
1718
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1719
+ }
1720
+ },
1552
1721
  {
1553
1722
  "kind": "compliance",
1554
1723
  "ruleId": "file-record-to-outbound-host",
@@ -1562,6 +1731,19 @@
1562
1731
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1563
1732
  }
1564
1733
  },
1734
+ {
1735
+ "kind": "compliance",
1736
+ "ruleId": "cics-queue-to-outbound-host",
1737
+ "framework": "dora",
1738
+ "clause": "Article 9(3)(b)",
1739
+ "title": "Protection and prevention",
1740
+ "rationale": "The rule reports: A CICS queue item decides the host or path this program sends a request to. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1741
+ "source": {
1742
+ "doc": "dora",
1743
+ "retrieved": "2026-09-20",
1744
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1745
+ }
1746
+ },
1565
1747
  {
1566
1748
  "kind": "compliance",
1567
1749
  "ruleId": "file-record-to-outbound-http",
@@ -1575,6 +1757,19 @@
1575
1757
  "quote": "ensure the security of the means of transfer of data"
1576
1758
  }
1577
1759
  },
1760
+ {
1761
+ "kind": "compliance",
1762
+ "ruleId": "cics-queue-to-outbound-http",
1763
+ "framework": "dora",
1764
+ "clause": "Article 9(3)(a)",
1765
+ "title": "Protection and prevention",
1766
+ "rationale": "The rule reports: A CICS queue item is sent to a remote server over HTTP. That is data leaving through a channel the program opened itself, which bears directly on the security of the means of transfer.",
1767
+ "source": {
1768
+ "doc": "dora",
1769
+ "retrieved": "2026-09-20",
1770
+ "quote": "ensure the security of the means of transfer of data"
1771
+ }
1772
+ },
1578
1773
  {
1579
1774
  "kind": "compliance",
1580
1775
  "ruleId": "file-record-to-queue-name",
@@ -1588,6 +1783,19 @@
1588
1783
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1589
1784
  }
1590
1785
  },
1786
+ {
1787
+ "kind": "compliance",
1788
+ "ruleId": "cics-queue-to-queue-name",
1789
+ "framework": "dora",
1790
+ "clause": "Article 9(3)(b)",
1791
+ "title": "Protection and prevention",
1792
+ "rationale": "The rule reports: A CICS queue item names the queue a command reads, writes or deletes. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1793
+ "source": {
1794
+ "doc": "dora",
1795
+ "retrieved": "2026-09-20",
1796
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1797
+ }
1798
+ },
1591
1799
  {
1592
1800
  "kind": "compliance",
1593
1801
  "ruleId": "file-record-to-socket-send",
@@ -1601,6 +1809,19 @@
1601
1809
  "quote": "ensure the security of the means of transfer of data"
1602
1810
  }
1603
1811
  },
1812
+ {
1813
+ "kind": "compliance",
1814
+ "ruleId": "cics-queue-to-socket-send",
1815
+ "framework": "dora",
1816
+ "clause": "Article 9(3)(a)",
1817
+ "title": "Protection and prevention",
1818
+ "rationale": "The rule reports: A CICS queue item is written to a network socket. That is data leaving through a channel the program opened itself, which bears directly on the security of the means of transfer.",
1819
+ "source": {
1820
+ "doc": "dora",
1821
+ "retrieved": "2026-09-20",
1822
+ "quote": "ensure the security of the means of transfer of data"
1823
+ }
1824
+ },
1604
1825
  {
1605
1826
  "kind": "compliance",
1606
1827
  "ruleId": "file-record-to-web-response",
@@ -1614,6 +1835,19 @@
1614
1835
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1615
1836
  }
1616
1837
  },
1838
+ {
1839
+ "kind": "compliance",
1840
+ "ruleId": "cics-queue-to-web-response",
1841
+ "framework": "dora",
1842
+ "clause": "Article 9(3)(b)",
1843
+ "title": "Protection and prevention",
1844
+ "rationale": "The rule reports: A CICS queue item is written into the response this program returns. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1845
+ "source": {
1846
+ "doc": "dora",
1847
+ "retrieved": "2026-09-20",
1848
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1849
+ }
1850
+ },
1617
1851
  {
1618
1852
  "kind": "compliance",
1619
1853
  "ruleId": "hidden-payload-in-identification-area",
@@ -1698,13 +1932,26 @@
1698
1932
  "framework": "dora",
1699
1933
  "clause": "Article 9(4)(c)",
1700
1934
  "title": "Protection and prevention",
1701
- "rationale": "The rule reports: Assembler source switches to PSW key zero or supervisor state. That grants or alters access rights outside the policy controls this clause requires be soundly administered.",
1935
+ "rationale": "The rule reports: Assembler source switches to PSW key zero, another system key, or supervisor state. That grants or alters access rights outside the policy controls this clause requires be soundly administered.",
1702
1936
  "source": {
1703
1937
  "doc": "dora",
1704
1938
  "retrieved": "2026-09-20",
1705
1939
  "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"
1706
1940
  }
1707
1941
  },
1942
+ {
1943
+ "kind": "compliance",
1944
+ "ruleId": "hlasm-runtime-module-name",
1945
+ "framework": "dora",
1946
+ "clause": "Article 9(3)(b)",
1947
+ "title": "Protection and prevention",
1948
+ "rationale": "The rule reports: Assembler source loads or calls a module whose name it reads from storage at run time. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1949
+ "source": {
1950
+ "doc": "dora",
1951
+ "retrieved": "2026-09-20",
1952
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1953
+ }
1954
+ },
1708
1955
  {
1709
1956
  "kind": "compliance",
1710
1957
  "ruleId": "icsf-fixed-initialization-vector",
@@ -1757,6 +2004,32 @@
1757
2004
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1758
2005
  }
1759
2006
  },
2007
+ {
2008
+ "kind": "compliance",
2009
+ "ruleId": "input-causes-hang",
2010
+ "framework": "dora",
2011
+ "clause": "Article 9(3)(b)",
2012
+ "title": "Protection and prevention",
2013
+ "rationale": "The rule reports: An input the program accepts keeps a loop running past the statement limit that stands in for its time limit (S322). That is a technical flaw that may hinder business activity, which this clause requires be minimised.",
2014
+ "source": {
2015
+ "doc": "dora",
2016
+ "retrieved": "2026-09-20",
2017
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
2018
+ }
2019
+ },
2020
+ {
2021
+ "kind": "compliance",
2022
+ "ruleId": "input-selects-program",
2023
+ "framework": "dora",
2024
+ "clause": "Article 9(3)(b)",
2025
+ "title": "Protection and prevention",
2026
+ "rationale": "The rule reports: An input the program accepts chooses the program a CALL loads. That is a technical flaw permitting unauthorised access, which this clause requires be minimised.",
2027
+ "source": {
2028
+ "doc": "dora",
2029
+ "retrieved": "2026-09-20",
2030
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
2031
+ }
2032
+ },
1760
2033
  {
1761
2034
  "kind": "compliance",
1762
2035
  "ruleId": "input-causes-abend-s0c4",
@@ -2253,11 +2526,11 @@
2253
2526
  },
2254
2527
  {
2255
2528
  "kind": "compliance",
2256
- "ruleId": "jcl-racf-password",
2529
+ "ruleId": "jcl-racf-new-password",
2257
2530
  "framework": "dora",
2258
2531
  "clause": "Article 9(4)(d)",
2259
2532
  "title": "Protection and prevention",
2260
- "rationale": "The rule reports: Credential pattern: jcl racf password. That exposes an authentication secret in a file, defeating the authentication mechanisms and key protection this clause requires.",
2533
+ "rationale": "The rule reports: Credential pattern: jcl racf new password. That exposes an authentication secret in a file, defeating the authentication mechanisms and key protection this clause requires.",
2261
2534
  "source": {
2262
2535
  "doc": "dora",
2263
2536
  "retrieved": "2026-09-20",
@@ -2266,11 +2539,11 @@
2266
2539
  },
2267
2540
  {
2268
2541
  "kind": "compliance",
2269
- "ruleId": "jcl-racf-new-password",
2542
+ "ruleId": "jcl-racf-password",
2270
2543
  "framework": "dora",
2271
2544
  "clause": "Article 9(4)(d)",
2272
2545
  "title": "Protection and prevention",
2273
- "rationale": "The rule reports: Credential pattern: jcl racf new password. That exposes an authentication secret in a file, defeating the authentication mechanisms and key protection this clause requires.",
2546
+ "rationale": "The rule reports: Credential pattern: jcl racf password. That exposes an authentication secret in a file, defeating the authentication mechanisms and key protection this clause requires.",
2274
2547
  "source": {
2275
2548
  "doc": "dora",
2276
2549
  "retrieved": "2026-09-20",
@@ -2459,6 +2732,19 @@
2459
2732
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
2460
2733
  }
2461
2734
  },
2735
+ {
2736
+ "kind": "compliance",
2737
+ "ruleId": "racf-command-new-password",
2738
+ "framework": "dora",
2739
+ "clause": "Article 9(4)(d)",
2740
+ "title": "Protection and prevention",
2741
+ "rationale": "The rule reports: Credential pattern: racf command new password. That exposes an authentication secret in a file, defeating the authentication mechanisms and key protection this clause requires.",
2742
+ "source": {
2743
+ "doc": "dora",
2744
+ "retrieved": "2026-09-20",
2745
+ "quote": "implement policies and protocols for strong authentication mechanisms, based on relevant standards and dedicated control systems, and protection measures of cryptographic keys"
2746
+ }
2747
+ },
2462
2748
  {
2463
2749
  "kind": "compliance",
2464
2750
  "ruleId": "racf-command-password",
@@ -2602,6 +2888,19 @@
2602
2888
  "quote": "maintain relevant inventories and update them periodically and every time any major change as referred to in paragraph 3 occurs"
2603
2889
  }
2604
2890
  },
2891
+ {
2892
+ "kind": "compliance",
2893
+ "ruleId": "tso-logon-new-password",
2894
+ "framework": "dora",
2895
+ "clause": "Article 9(4)(d)",
2896
+ "title": "Protection and prevention",
2897
+ "rationale": "The rule reports: Credential pattern: tso logon new password. That exposes an authentication secret in a file, defeating the authentication mechanisms and key protection this clause requires.",
2898
+ "source": {
2899
+ "doc": "dora",
2900
+ "retrieved": "2026-09-20",
2901
+ "quote": "implement policies and protocols for strong authentication mechanisms, based on relevant standards and dedicated control systems, and protection measures of cryptographic keys"
2902
+ }
2903
+ },
2605
2904
  {
2606
2905
  "kind": "compliance",
2607
2906
  "ruleId": "tso-logon-password",
@@ -2848,6 +3147,211 @@
2848
3147
  "retrieved": "2026-09-20",
2849
3148
  "quote": "implement policies and protocols for strong authentication mechanisms, based on relevant standards and dedicated control systems, and protection measures of cryptographic keys"
2850
3149
  }
3150
+ },
3151
+ {
3152
+ "kind": "compliance",
3153
+ "ruleId": "db2-exit-routine-declared",
3154
+ "framework": "dora",
3155
+ "clause": "Article 8(4)",
3156
+ "title": "Identification",
3157
+ "rationale": "The rule reports: A table names an exit routine that runs inside Db2. That is an interdependency between assets which no single file records, and mapping it is what this clause asks for.",
3158
+ "source": {
3159
+ "doc": "dora",
3160
+ "retrieved": "2026-09-20",
3161
+ "quote": "map the configuration of the information assets and ICT assets and the links and interdependencies between the different information assets and ICT assets"
3162
+ }
3163
+ },
3164
+ {
3165
+ "kind": "compliance",
3166
+ "ruleId": "db2-external-routine",
3167
+ "framework": "dora",
3168
+ "clause": "Article 8(4)",
3169
+ "title": "Identification",
3170
+ "rationale": "The rule reports: A procedure or function runs an external load module. That is an interdependency between assets which no single file records, and mapping it is what this clause asks for.",
3171
+ "source": {
3172
+ "doc": "dora",
3173
+ "retrieved": "2026-09-20",
3174
+ "quote": "map the configuration of the information assets and ICT assets and the links and interdependencies between the different information assets and ICT assets"
3175
+ }
3176
+ },
3177
+ {
3178
+ "kind": "compliance",
3179
+ "ruleId": "db2-grant-to-public",
3180
+ "framework": "dora",
3181
+ "clause": "Article 9(4)(c)",
3182
+ "title": "Protection and prevention",
3183
+ "rationale": "The rule reports: A GRANT gives privileges to PUBLIC, every authorization ID. That grants or alters access rights outside the policy controls this clause requires be soundly administered.",
3184
+ "source": {
3185
+ "doc": "dora",
3186
+ "retrieved": "2026-09-20",
3187
+ "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"
3188
+ }
3189
+ },
3190
+ {
3191
+ "kind": "compliance",
3192
+ "ruleId": "db2-grant-with-grant-option",
3193
+ "framework": "dora",
3194
+ "clause": "Article 9(4)(c)",
3195
+ "title": "Protection and prevention",
3196
+ "rationale": "The rule reports: WITH GRANT OPTION lets the grantee grant the privilege to others. That grants or alters access rights outside the policy controls this clause requires be soundly administered.",
3197
+ "source": {
3198
+ "doc": "dora",
3199
+ "retrieved": "2026-09-20",
3200
+ "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"
3201
+ }
3202
+ },
3203
+ {
3204
+ "kind": "compliance",
3205
+ "ruleId": "db2-system-authority-granted",
3206
+ "framework": "dora",
3207
+ "clause": "Article 9(4)(c)",
3208
+ "title": "Protection and prevention",
3209
+ "rationale": "The rule reports: A system or database authority is granted. That grants or alters access rights outside the policy controls this clause requires be soundly administered.",
3210
+ "source": {
3211
+ "doc": "dora",
3212
+ "retrieved": "2026-09-20",
3213
+ "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"
3214
+ }
3215
+ },
3216
+ {
3217
+ "kind": "compliance",
3218
+ "ruleId": "ims-definition-inconsistent",
3219
+ "framework": "dora",
3220
+ "clause": "Article 9(3)(b)",
3221
+ "title": "Protection and prevention",
3222
+ "rationale": "The rule reports: A DBD or PSB holds what DBDGEN, PSBGEN or ACBGEN refuses. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
3223
+ "source": {
3224
+ "doc": "dora",
3225
+ "retrieved": "2026-09-20",
3226
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
3227
+ }
3228
+ },
3229
+ {
3230
+ "kind": "compliance",
3231
+ "ruleId": "ims-pcb-procopt-all",
3232
+ "framework": "dora",
3233
+ "clause": "Article 9(4)(c)",
3234
+ "title": "Protection and prevention",
3235
+ "rationale": "The rule reports: A database PCB lets the program get, insert, replace and delete its sensitive segments. That grants or alters access rights outside the policy controls this clause requires be soundly administered.",
3236
+ "source": {
3237
+ "doc": "dora",
3238
+ "retrieved": "2026-09-20",
3239
+ "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"
3240
+ }
3241
+ },
3242
+ {
3243
+ "kind": "compliance",
3244
+ "ruleId": "ims-senseg-unknown-segment",
3245
+ "framework": "dora",
3246
+ "clause": "Article 9(3)(b)",
3247
+ "title": "Protection and prevention",
3248
+ "rationale": "The rule reports: A SENSEG names a segment its PCB's DBD does not define, which ends the program with abend U0914. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
3249
+ "source": {
3250
+ "doc": "dora",
3251
+ "retrieved": "2026-09-20",
3252
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
3253
+ }
3254
+ },
3255
+ {
3256
+ "kind": "compliance",
3257
+ "ruleId": "pli-based-storage-addressing",
3258
+ "framework": "dora",
3259
+ "clause": "Article 8(4)",
3260
+ "title": "Identification",
3261
+ "rationale": "The rule reports: A program addresses storage through a pointer, so data flow through it is not followed. That is an interdependency between assets which no single file records, and mapping it is what this clause asks for.",
3262
+ "source": {
3263
+ "doc": "dora",
3264
+ "retrieved": "2026-09-20",
3265
+ "quote": "map the configuration of the information assets and ICT assets and the links and interdependencies between the different information assets and ICT assets"
3266
+ }
3267
+ },
3268
+ {
3269
+ "kind": "compliance",
3270
+ "ruleId": "pli-entry-variable-call",
3271
+ "framework": "dora",
3272
+ "clause": "Article 8(4)",
3273
+ "title": "Identification",
3274
+ "rationale": "The rule reports: A CALL through an entry variable dispatches to a procedure chosen at run time, so the callee is not known statically. That is an interdependency between assets which no single file records, and mapping it is what this clause asks for.",
3275
+ "source": {
3276
+ "doc": "dora",
3277
+ "retrieved": "2026-09-20",
3278
+ "quote": "map the configuration of the information assets and ICT assets and the links and interdependencies between the different information assets and ICT assets"
3279
+ }
3280
+ },
3281
+ {
3282
+ "kind": "compliance",
3283
+ "ruleId": "pli-error-condition-ignored",
3284
+ "framework": "dora",
3285
+ "clause": "Article 9(3)(b)",
3286
+ "title": "Protection and prevention",
3287
+ "rationale": "The rule reports: An ON unit for a condition does nothing with it, so the condition is silently ignored. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
3288
+ "source": {
3289
+ "doc": "dora",
3290
+ "retrieved": "2026-09-20",
3291
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
3292
+ }
3293
+ },
3294
+ {
3295
+ "kind": "compliance",
3296
+ "ruleId": "pli-fetch-title-variable",
3297
+ "framework": "dora",
3298
+ "clause": "Article 9(3)(b)",
3299
+ "title": "Protection and prevention",
3300
+ "rationale": "The rule reports: A FETCH whose TITLE is not a literal names the module to load at run time. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
3301
+ "source": {
3302
+ "doc": "dora",
3303
+ "retrieved": "2026-09-20",
3304
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
3305
+ }
3306
+ },
3307
+ {
3308
+ "kind": "compliance",
3309
+ "ruleId": "pli-preprocessor-in-use",
3310
+ "framework": "dora",
3311
+ "clause": "Article 8(4)",
3312
+ "title": "Identification",
3313
+ "rationale": "The rule reports: A program uses PL/I preprocessor directives, so the source text is not the code that is compiled. That is an interdependency between assets which no single file records, and mapping it is what this clause asks for.",
3314
+ "source": {
3315
+ "doc": "dora",
3316
+ "retrieved": "2026-09-20",
3317
+ "quote": "map the configuration of the information assets and ICT assets and the links and interdependencies between the different information assets and ICT assets"
3318
+ }
3319
+ },
3320
+ {
3321
+ "kind": "compliance",
3322
+ "ruleId": "ims-procopt-broader-than-used",
3323
+ "framework": "dora",
3324
+ "clause": "Article 9(4)(c)",
3325
+ "title": "Protection and prevention",
3326
+ "rationale": "The rule reports: A PSB grants a processing option that no DL/I call of the program it is named for uses. That grants or alters access rights outside the policy controls this clause requires be soundly administered.",
3327
+ "source": {
3328
+ "doc": "dora",
3329
+ "retrieved": "2026-09-20",
3330
+ "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"
3331
+ }
3332
+ }
3333
+ ],
3334
+ "evidence": [],
3335
+ "unmappedEvidence": [
3336
+ {
3337
+ "evidenceId": "journal-records",
3338
+ "why": "The Regulation places no obligation to record a program's runs. Article 11(8) asks for records of activities during a disruption, which a run journal is not, and its logging requirements sit in delegated acts this mapping does not read."
3339
+ },
3340
+ {
3341
+ "evidenceId": "journal-chain",
3342
+ "why": "As above: with no record-keeping obligation for runs, there is nothing whose integrity the chain evidences."
3343
+ },
3344
+ {
3345
+ "evidenceId": "provenance",
3346
+ "why": "No article of the Regulation asks for the provenance of a program's output. Article 8(4) maps the configuration of assets and their interdependencies, not where one run's output came from."
3347
+ },
3348
+ {
3349
+ "evidenceId": "options-in-force",
3350
+ "why": "Article 9(4)(e) asks for documented policies for ICT change management, not for the settings a single run used. Mapping to it would be a near miss."
3351
+ },
3352
+ {
3353
+ "evidenceId": "assumptions-register",
3354
+ "why": "No article concerns how a compiler resolves what its language leaves open."
2851
3355
  }
2852
3356
  ]
2853
3357
  }