@portll/cobolwork 0.3.0 → 0.5.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 (46) hide show
  1. package/README.md +35 -9
  2. package/bin/cobolwork.mjs +7 -1
  3. package/lib/bms.mjs +8 -0
  4. package/lib/capabilities.mjs +2 -2
  5. package/lib/cics-commands.mjs +308 -42
  6. package/lib/consequence.mjs +19 -0
  7. package/lib/constants.mjs +60 -0
  8. package/lib/control.mjs +61 -17
  9. package/lib/csd.mjs +6 -1
  10. package/lib/dataflow.mjs +107 -27
  11. package/lib/explain.mjs +31 -5
  12. package/lib/exploitability.mjs +49 -4
  13. package/lib/gate.mjs +31 -9
  14. package/lib/hlasm.mjs +79 -0
  15. package/lib/kernel/findings.mjs +2 -0
  16. package/lib/kernel/registry.mjs +6 -0
  17. package/lib/kernel/source-tree.mjs +1 -0
  18. package/lib/options.mjs +6 -2
  19. package/lib/packs.mjs +4 -0
  20. package/lib/parser.mjs +67 -12
  21. package/lib/precompile-cics.mjs +9 -3
  22. package/lib/precompile.mjs +3 -2
  23. package/lib/revision.json +1 -1
  24. package/lib/sarif.mjs +3 -2
  25. package/lib/scan.mjs +2 -1
  26. package/lib/sets/abend.mjs +186 -0
  27. package/lib/sets/compile.mjs +2 -1
  28. package/lib/sets/crypto.mjs +110 -0
  29. package/lib/sets/flow.mjs +18 -0
  30. package/lib/sets/hidden.mjs +1 -1
  31. package/lib/sets/hlasm.mjs +121 -0
  32. package/lib/sets/jcl.mjs +16 -1
  33. package/lib/sets/recon.mjs +1 -0
  34. package/lib/sets/web.mjs +99 -4
  35. package/lib/sources.mjs +12 -2
  36. package/lib/utilities.mjs +2 -0
  37. package/lib/verify.mjs +2 -1
  38. package/lib/words.mjs +377 -17
  39. package/package.json +1 -1
  40. package/rules/compliance-cobit2019.json +180 -0
  41. package/rules/compliance-dora.json +195 -0
  42. package/rules/compliance-ffiec.json +195 -0
  43. package/rules/compliance-nist80053.json +195 -0
  44. package/rules/gitleaks-mainframe.toml +24 -10
  45. package/rules/hlasm-operations.json +451 -0
  46. package/rules/icsf-services.json +1178 -0
@@ -1522,6 +1522,150 @@
1522
1522
  "idsOnly": true
1523
1523
  }
1524
1524
  },
1525
+ {
1526
+ "kind": "compliance",
1527
+ "ruleId": "hlasm-calls-security-product",
1528
+ "framework": "cobit-2019",
1529
+ "clause": "BAI09.01",
1530
+ "rationale": "The rule reports: Assembler source calls the security product directly. That is a component the record of assets does not account for, which this practice requires be identified and recorded.",
1531
+ "source": {
1532
+ "doc": "cobit2019",
1533
+ "retrieved": "2026-09-20",
1534
+ "idsOnly": true
1535
+ }
1536
+ },
1537
+ {
1538
+ "kind": "compliance",
1539
+ "ruleId": "hlasm-cross-memory-service",
1540
+ "framework": "cobit-2019",
1541
+ "clause": "DSS05.04",
1542
+ "rationale": "The rule reports: Assembler source uses a cross-memory instruction, reaching another address space or another authority. That is access or authentication handled outside the managed identity and logical access this practice requires.",
1543
+ "source": {
1544
+ "doc": "cobit2019",
1545
+ "retrieved": "2026-09-20",
1546
+ "idsOnly": true
1547
+ }
1548
+ },
1549
+ {
1550
+ "kind": "compliance",
1551
+ "ruleId": "hlasm-executes-built-instruction",
1552
+ "framework": "cobit-2019",
1553
+ "clause": "DSS06.02",
1554
+ "rationale": "The rule reports: Assembler source runs an instruction whose length or mask comes from a register at run time. That is information processed without the control that keeps it valid, authorised and accurate, which is what this practice asks of business process controls.",
1555
+ "source": {
1556
+ "doc": "cobit2019",
1557
+ "retrieved": "2026-09-20",
1558
+ "idsOnly": true
1559
+ }
1560
+ },
1561
+ {
1562
+ "kind": "compliance",
1563
+ "ruleId": "hlasm-provides-called-module",
1564
+ "framework": "cobit-2019",
1565
+ "clause": "BAI09.01",
1566
+ "rationale": "The rule reports: An assembler CSECT or ENTRY is a module a COBOL program in this tree CALLs. That is a component the record of assets does not account for, which this practice requires be identified and recorded.",
1567
+ "source": {
1568
+ "doc": "cobit2019",
1569
+ "retrieved": "2026-09-20",
1570
+ "idsOnly": true
1571
+ }
1572
+ },
1573
+ {
1574
+ "kind": "compliance",
1575
+ "ruleId": "hlasm-supervisor-state-change",
1576
+ "framework": "cobit-2019",
1577
+ "clause": "DSS05.04",
1578
+ "rationale": "The rule reports: Assembler source switches to PSW key zero or supervisor state. That is access or authentication handled outside the managed identity and logical access this practice requires.",
1579
+ "source": {
1580
+ "doc": "cobit2019",
1581
+ "retrieved": "2026-09-20",
1582
+ "idsOnly": true
1583
+ }
1584
+ },
1585
+ {
1586
+ "kind": "compliance",
1587
+ "ruleId": "icsf-fixed-initialization-vector",
1588
+ "framework": "cobit-2019",
1589
+ "clause": "DSS06.06",
1590
+ "rationale": "The rule reports: A program enciphers through ICSF with an initialization vector that never changes. That is information released to people it was never meant for, which this practice requires be secured.",
1591
+ "source": {
1592
+ "doc": "cobit2019",
1593
+ "retrieved": "2026-09-20",
1594
+ "idsOnly": true
1595
+ }
1596
+ },
1597
+ {
1598
+ "kind": "compliance",
1599
+ "ruleId": "icsf-single-length-des-key",
1600
+ "framework": "cobit-2019",
1601
+ "clause": "DSS06.06",
1602
+ "rationale": "The rule reports: A program generates a single-length DES key through ICSF. That is information released to people it was never meant for, which this practice requires be secured.",
1603
+ "source": {
1604
+ "doc": "cobit2019",
1605
+ "retrieved": "2026-09-20",
1606
+ "idsOnly": true
1607
+ }
1608
+ },
1609
+ {
1610
+ "kind": "compliance",
1611
+ "ruleId": "icsf-weak-hash",
1612
+ "framework": "cobit-2019",
1613
+ "clause": "DSS06.06",
1614
+ "rationale": "The rule reports: A program hashes with MD5 or SHA-1 through ICSF. That is information released to people it was never meant for, which this practice requires be secured.",
1615
+ "source": {
1616
+ "doc": "cobit2019",
1617
+ "retrieved": "2026-09-20",
1618
+ "idsOnly": true
1619
+ }
1620
+ },
1621
+ {
1622
+ "kind": "compliance",
1623
+ "ruleId": "input-causes-abend",
1624
+ "framework": "cobit-2019",
1625
+ "clause": "DSS06.02",
1626
+ "rationale": "The rule reports: An input the program accepts ends its run with an abend. That is information processed without the control that keeps it valid, authorised and accurate, which is what this practice asks of business process controls.",
1627
+ "source": {
1628
+ "doc": "cobit2019",
1629
+ "retrieved": "2026-09-20",
1630
+ "idsOnly": true
1631
+ }
1632
+ },
1633
+ {
1634
+ "kind": "compliance",
1635
+ "ruleId": "input-causes-abend-s0c4",
1636
+ "framework": "cobit-2019",
1637
+ "clause": "DSS06.02",
1638
+ "rationale": "The rule reports: An input the program accepts ends its run with a protection exception (S0C4). That is information processed without the control that keeps it valid, authorised and accurate, which is what this practice asks of business process controls.",
1639
+ "source": {
1640
+ "doc": "cobit2019",
1641
+ "retrieved": "2026-09-20",
1642
+ "idsOnly": true
1643
+ }
1644
+ },
1645
+ {
1646
+ "kind": "compliance",
1647
+ "ruleId": "input-causes-abend-s0c7",
1648
+ "framework": "cobit-2019",
1649
+ "clause": "DSS06.02",
1650
+ "rationale": "The rule reports: An input the program accepts ends its run with a data exception (S0C7). That is information processed without the control that keeps it valid, authorised and accurate, which is what this practice asks of business process controls.",
1651
+ "source": {
1652
+ "doc": "cobit2019",
1653
+ "retrieved": "2026-09-20",
1654
+ "idsOnly": true
1655
+ }
1656
+ },
1657
+ {
1658
+ "kind": "compliance",
1659
+ "ruleId": "input-causes-abend-subscript-range",
1660
+ "framework": "cobit-2019",
1661
+ "clause": "DSS06.02",
1662
+ "rationale": "The rule reports: An input the program accepts drives a subscript or reference modification out of range, and the run abends. That is information processed without the control that keeps it valid, authorised and accurate, which is what this practice asks of business process controls.",
1663
+ "source": {
1664
+ "doc": "cobit2019",
1665
+ "retrieved": "2026-09-20",
1666
+ "idsOnly": true
1667
+ }
1668
+ },
1525
1669
  {
1526
1670
  "kind": "compliance",
1527
1671
  "ruleId": "intermediate-result-loses-high-order-digits",
@@ -1954,6 +2098,18 @@
1954
2098
  "idsOnly": true
1955
2099
  }
1956
2100
  },
2101
+ {
2102
+ "kind": "compliance",
2103
+ "ruleId": "jcl-racf-new-password",
2104
+ "framework": "cobit-2019",
2105
+ "clause": "DSS05.04",
2106
+ "rationale": "The rule reports: Credential pattern: jcl racf new password. That is access or authentication handled outside the managed identity and logical access this practice requires.",
2107
+ "source": {
2108
+ "doc": "cobit2019",
2109
+ "retrieved": "2026-09-20",
2110
+ "idsOnly": true
2111
+ }
2112
+ },
1957
2113
  {
1958
2114
  "kind": "compliance",
1959
2115
  "ruleId": "job-loads-from-an-authorised-library",
@@ -2254,6 +2410,18 @@
2254
2410
  "idsOnly": true
2255
2411
  }
2256
2412
  },
2413
+ {
2414
+ "kind": "compliance",
2415
+ "ruleId": "web-client-opens-cleartext",
2416
+ "framework": "cobit-2019",
2417
+ "clause": "DSS05.02",
2418
+ "rationale": "The rule reports: A program opens an outbound HTTP connection without TLS. That is information or a credential crossing a connection with nothing protecting it, which this practice requires be secured.",
2419
+ "source": {
2420
+ "doc": "cobit2019",
2421
+ "retrieved": "2026-09-20",
2422
+ "idsOnly": true
2423
+ }
2424
+ },
2257
2425
  {
2258
2426
  "kind": "compliance",
2259
2427
  "ruleId": "web-cookie-without-secure-attributes",
@@ -2278,6 +2446,18 @@
2278
2446
  "idsOnly": true
2279
2447
  }
2280
2448
  },
2449
+ {
2450
+ "kind": "compliance",
2451
+ "ruleId": "web-receive-length-exceeds-area",
2452
+ "framework": "cobit-2019",
2453
+ "clause": "DSS06.02",
2454
+ "rationale": "The rule reports: A web receive lets CICS write more bytes than the area it writes into. That is information processed without the control that keeps it valid, authorised and accurate, which is what this practice asks of business process controls.",
2455
+ "source": {
2456
+ "doc": "cobit2019",
2457
+ "retrieved": "2026-09-20",
2458
+ "idsOnly": true
2459
+ }
2460
+ },
2281
2461
  {
2282
2462
  "kind": "compliance",
2283
2463
  "ruleId": "web-request-changes-state-without-a-token",
@@ -1640,6 +1640,162 @@
1640
1640
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1641
1641
  }
1642
1642
  },
1643
+ {
1644
+ "kind": "compliance",
1645
+ "ruleId": "hlasm-calls-security-product",
1646
+ "framework": "dora",
1647
+ "clause": "Article 8(4)",
1648
+ "title": "Identification",
1649
+ "rationale": "The rule reports: Assembler source calls the security product directly. That is an interdependency between assets which no single file records, and mapping it is what this clause asks for.",
1650
+ "source": {
1651
+ "doc": "dora",
1652
+ "retrieved": "2026-09-20",
1653
+ "quote": "map the configuration of the information assets and ICT assets and the links and interdependencies between the different information assets and ICT assets"
1654
+ }
1655
+ },
1656
+ {
1657
+ "kind": "compliance",
1658
+ "ruleId": "hlasm-cross-memory-service",
1659
+ "framework": "dora",
1660
+ "clause": "Article 9(4)(c)",
1661
+ "title": "Protection and prevention",
1662
+ "rationale": "The rule reports: Assembler source uses a cross-memory instruction, reaching another address space or another authority. That grants or alters access rights outside the policy controls this clause requires be soundly administered.",
1663
+ "source": {
1664
+ "doc": "dora",
1665
+ "retrieved": "2026-09-20",
1666
+ "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"
1667
+ }
1668
+ },
1669
+ {
1670
+ "kind": "compliance",
1671
+ "ruleId": "hlasm-executes-built-instruction",
1672
+ "framework": "dora",
1673
+ "clause": "Article 9(3)(b)",
1674
+ "title": "Protection and prevention",
1675
+ "rationale": "The rule reports: Assembler source runs an instruction whose length or mask comes from a register at run time. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1676
+ "source": {
1677
+ "doc": "dora",
1678
+ "retrieved": "2026-09-20",
1679
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1680
+ }
1681
+ },
1682
+ {
1683
+ "kind": "compliance",
1684
+ "ruleId": "hlasm-provides-called-module",
1685
+ "framework": "dora",
1686
+ "clause": "Article 8(4)",
1687
+ "title": "Identification",
1688
+ "rationale": "The rule reports: An assembler CSECT or ENTRY is a module a COBOL program in this tree CALLs. That is an interdependency between assets which no single file records, and mapping it is what this clause asks for.",
1689
+ "source": {
1690
+ "doc": "dora",
1691
+ "retrieved": "2026-09-20",
1692
+ "quote": "map the configuration of the information assets and ICT assets and the links and interdependencies between the different information assets and ICT assets"
1693
+ }
1694
+ },
1695
+ {
1696
+ "kind": "compliance",
1697
+ "ruleId": "hlasm-supervisor-state-change",
1698
+ "framework": "dora",
1699
+ "clause": "Article 9(4)(c)",
1700
+ "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.",
1702
+ "source": {
1703
+ "doc": "dora",
1704
+ "retrieved": "2026-09-20",
1705
+ "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
+ }
1707
+ },
1708
+ {
1709
+ "kind": "compliance",
1710
+ "ruleId": "icsf-fixed-initialization-vector",
1711
+ "framework": "dora",
1712
+ "clause": "Article 9(3)(c)",
1713
+ "title": "Protection and prevention",
1714
+ "rationale": "The rule reports: A program enciphers through ICSF with an initialization vector that never changes. That risks the loss of data and the impairment of its integrity, which this clause requires be prevented.",
1715
+ "source": {
1716
+ "doc": "dora",
1717
+ "retrieved": "2026-09-20",
1718
+ "quote": "prevent the lack of availability, the impairment of the authenticity and integrity, the breaches of confidentiality and the loss of data"
1719
+ }
1720
+ },
1721
+ {
1722
+ "kind": "compliance",
1723
+ "ruleId": "icsf-single-length-des-key",
1724
+ "framework": "dora",
1725
+ "clause": "Article 9(3)(c)",
1726
+ "title": "Protection and prevention",
1727
+ "rationale": "The rule reports: A program generates a single-length DES key through ICSF. That risks the loss of data and the impairment of its integrity, which this clause requires be prevented.",
1728
+ "source": {
1729
+ "doc": "dora",
1730
+ "retrieved": "2026-09-20",
1731
+ "quote": "prevent the lack of availability, the impairment of the authenticity and integrity, the breaches of confidentiality and the loss of data"
1732
+ }
1733
+ },
1734
+ {
1735
+ "kind": "compliance",
1736
+ "ruleId": "icsf-weak-hash",
1737
+ "framework": "dora",
1738
+ "clause": "Article 9(3)(c)",
1739
+ "title": "Protection and prevention",
1740
+ "rationale": "The rule reports: A program hashes with MD5 or SHA-1 through ICSF. That risks the loss of data and the impairment of its integrity, which this clause requires be prevented.",
1741
+ "source": {
1742
+ "doc": "dora",
1743
+ "retrieved": "2026-09-20",
1744
+ "quote": "prevent the lack of availability, the impairment of the authenticity and integrity, the breaches of confidentiality and the loss of data"
1745
+ }
1746
+ },
1747
+ {
1748
+ "kind": "compliance",
1749
+ "ruleId": "input-causes-abend",
1750
+ "framework": "dora",
1751
+ "clause": "Article 9(3)(b)",
1752
+ "title": "Protection and prevention",
1753
+ "rationale": "The rule reports: An input the program accepts ends its run with an abend. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1754
+ "source": {
1755
+ "doc": "dora",
1756
+ "retrieved": "2026-09-20",
1757
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1758
+ }
1759
+ },
1760
+ {
1761
+ "kind": "compliance",
1762
+ "ruleId": "input-causes-abend-s0c4",
1763
+ "framework": "dora",
1764
+ "clause": "Article 9(3)(b)",
1765
+ "title": "Protection and prevention",
1766
+ "rationale": "The rule reports: An input the program accepts ends its run with a protection exception (S0C4). That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
1767
+ "source": {
1768
+ "doc": "dora",
1769
+ "retrieved": "2026-09-20",
1770
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
1771
+ }
1772
+ },
1773
+ {
1774
+ "kind": "compliance",
1775
+ "ruleId": "input-causes-abend-s0c7",
1776
+ "framework": "dora",
1777
+ "clause": "Article 9(3)(b)",
1778
+ "title": "Protection and prevention",
1779
+ "rationale": "The rule reports: An input the program accepts ends its run with a data exception (S0C7). 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
+ },
1786
+ {
1787
+ "kind": "compliance",
1788
+ "ruleId": "input-causes-abend-subscript-range",
1789
+ "framework": "dora",
1790
+ "clause": "Article 9(3)(b)",
1791
+ "title": "Protection and prevention",
1792
+ "rationale": "The rule reports: An input the program accepts drives a subscript or reference modification out of range, and the run abends. 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
+ },
1643
1799
  {
1644
1800
  "kind": "compliance",
1645
1801
  "ruleId": "intermediate-result-loses-high-order-digits",
@@ -2108,6 +2264,19 @@
2108
2264
  "quote": "implement policies and protocols for strong authentication mechanisms, based on relevant standards and dedicated control systems, and protection measures of cryptographic keys"
2109
2265
  }
2110
2266
  },
2267
+ {
2268
+ "kind": "compliance",
2269
+ "ruleId": "jcl-racf-new-password",
2270
+ "framework": "dora",
2271
+ "clause": "Article 9(4)(d)",
2272
+ "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.",
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
+ },
2111
2280
  {
2112
2281
  "kind": "compliance",
2113
2282
  "ruleId": "job-loads-from-an-authorised-library",
@@ -2459,6 +2628,19 @@
2459
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"
2460
2629
  }
2461
2630
  },
2631
+ {
2632
+ "kind": "compliance",
2633
+ "ruleId": "web-client-opens-cleartext",
2634
+ "framework": "dora",
2635
+ "clause": "Article 9(3)(a)",
2636
+ "title": "Protection and prevention",
2637
+ "rationale": "The rule reports: A program opens an outbound HTTP connection without TLS. That is data leaving through a channel the program opened itself, which bears directly on the security of the means of transfer.",
2638
+ "source": {
2639
+ "doc": "dora",
2640
+ "retrieved": "2026-09-20",
2641
+ "quote": "ensure the security of the means of transfer of data"
2642
+ }
2643
+ },
2462
2644
  {
2463
2645
  "kind": "compliance",
2464
2646
  "ruleId": "web-cookie-without-secure-attributes",
@@ -2485,6 +2667,19 @@
2485
2667
  "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
2486
2668
  }
2487
2669
  },
2670
+ {
2671
+ "kind": "compliance",
2672
+ "ruleId": "web-receive-length-exceeds-area",
2673
+ "framework": "dora",
2674
+ "clause": "Article 9(3)(b)",
2675
+ "title": "Protection and prevention",
2676
+ "rationale": "The rule reports: A web receive lets CICS write more bytes than the area it writes into. That is a technical flaw permitting unauthorised access or data corruption, which this clause requires be minimised.",
2677
+ "source": {
2678
+ "doc": "dora",
2679
+ "retrieved": "2026-09-20",
2680
+ "quote": "minimise the risk of corruption or loss of data, unauthorised access and technical flaws that may hinder business activity"
2681
+ }
2682
+ },
2488
2683
  {
2489
2684
  "kind": "compliance",
2490
2685
  "ruleId": "web-request-changes-state-without-a-token",
@@ -1649,6 +1649,162 @@
1649
1649
  "quote": "Secure coding practices help developers minimize the potential for known source code-related vulnerabilities in the development phase."
1650
1650
  }
1651
1651
  },
1652
+ {
1653
+ "kind": "compliance",
1654
+ "ruleId": "hlasm-calls-security-product",
1655
+ "framework": "ffiec",
1656
+ "clause": "DA&M IV",
1657
+ "title": "Common Development, Acquisition, and Maintenance Practices",
1658
+ "rationale": "The rule reports: Assembler source calls the security product directly. That is a component or dependency the inventory does not accurately account for, which this practice requires be catalogued.",
1659
+ "source": {
1660
+ "doc": "ffiec",
1661
+ "retrieved": "2026-09-20",
1662
+ "quote": "Inventory of all systems and components (e.g., open-source, proprietary, application programming interfaces [API], and container images and registries), including related licenses, and data as part of IT asset management (ITAM)."
1663
+ }
1664
+ },
1665
+ {
1666
+ "kind": "compliance",
1667
+ "ruleId": "hlasm-cross-memory-service",
1668
+ "framework": "ffiec",
1669
+ "clause": "IS II.C.7",
1670
+ "title": "User Security Controls",
1671
+ "rationale": "The rule reports: Assembler source uses a cross-memory instruction, reaching another address space or another authority. That is authority granted or exercised beyond job necessity, which the principle of least privilege exists to constrain.",
1672
+ "source": {
1673
+ "doc": "ffiec",
1674
+ "retrieved": "2026-09-20",
1675
+ "quote": "Principle of least privilege, which recommends minimum user profile privileges for both physical and logical access based on job necessity."
1676
+ }
1677
+ },
1678
+ {
1679
+ "kind": "compliance",
1680
+ "ruleId": "hlasm-executes-built-instruction",
1681
+ "framework": "ffiec",
1682
+ "clause": "DA&M V",
1683
+ "title": "Development",
1684
+ "rationale": "The rule reports: Assembler source runs an instruction whose length or mask comes from a register at run time. That is a source code-related vulnerability of the kind secure coding practices exist to minimise.",
1685
+ "source": {
1686
+ "doc": "ffiec",
1687
+ "retrieved": "2026-09-20",
1688
+ "quote": "Secure coding practices help developers minimize the potential for known source code-related vulnerabilities in the development phase."
1689
+ }
1690
+ },
1691
+ {
1692
+ "kind": "compliance",
1693
+ "ruleId": "hlasm-provides-called-module",
1694
+ "framework": "ffiec",
1695
+ "clause": "DA&M IV",
1696
+ "title": "Common Development, Acquisition, and Maintenance Practices",
1697
+ "rationale": "The rule reports: An assembler CSECT or ENTRY is a module a COBOL program in this tree CALLs. That is a component or dependency the inventory does not accurately account for, which this practice requires be catalogued.",
1698
+ "source": {
1699
+ "doc": "ffiec",
1700
+ "retrieved": "2026-09-20",
1701
+ "quote": "Inventory of all systems and components (e.g., open-source, proprietary, application programming interfaces [API], and container images and registries), including related licenses, and data as part of IT asset management (ITAM)."
1702
+ }
1703
+ },
1704
+ {
1705
+ "kind": "compliance",
1706
+ "ruleId": "hlasm-supervisor-state-change",
1707
+ "framework": "ffiec",
1708
+ "clause": "IS II.C.7",
1709
+ "title": "User Security Controls",
1710
+ "rationale": "The rule reports: Assembler source switches to PSW key zero or supervisor state. That is authority granted or exercised beyond job necessity, which the principle of least privilege exists to constrain.",
1711
+ "source": {
1712
+ "doc": "ffiec",
1713
+ "retrieved": "2026-09-20",
1714
+ "quote": "Principle of least privilege, which recommends minimum user profile privileges for both physical and logical access based on job necessity."
1715
+ }
1716
+ },
1717
+ {
1718
+ "kind": "compliance",
1719
+ "ruleId": "icsf-fixed-initialization-vector",
1720
+ "framework": "ffiec",
1721
+ "clause": "IS II.C.19",
1722
+ "title": "Encryption",
1723
+ "rationale": "The rule reports: A program enciphers through ICSF with an initialization vector that never changes. That is an authentication credential or sensitive data left unprotected, which this control requires be encrypted in storage and in transit.",
1724
+ "source": {
1725
+ "doc": "ffiec",
1726
+ "retrieved": "2026-09-20",
1727
+ "quote": "Encryption is used to secure communications and data storage, particularly authentication credentials and the transmission of sensitive information."
1728
+ }
1729
+ },
1730
+ {
1731
+ "kind": "compliance",
1732
+ "ruleId": "icsf-single-length-des-key",
1733
+ "framework": "ffiec",
1734
+ "clause": "IS II.C.19",
1735
+ "title": "Encryption",
1736
+ "rationale": "The rule reports: A program generates a single-length DES key through ICSF. That is an authentication credential or sensitive data left unprotected, which this control requires be encrypted in storage and in transit.",
1737
+ "source": {
1738
+ "doc": "ffiec",
1739
+ "retrieved": "2026-09-20",
1740
+ "quote": "Encryption is used to secure communications and data storage, particularly authentication credentials and the transmission of sensitive information."
1741
+ }
1742
+ },
1743
+ {
1744
+ "kind": "compliance",
1745
+ "ruleId": "icsf-weak-hash",
1746
+ "framework": "ffiec",
1747
+ "clause": "IS II.C.19",
1748
+ "title": "Encryption",
1749
+ "rationale": "The rule reports: A program hashes with MD5 or SHA-1 through ICSF. That is an authentication credential or sensitive data left unprotected, which this control requires be encrypted in storage and in transit.",
1750
+ "source": {
1751
+ "doc": "ffiec",
1752
+ "retrieved": "2026-09-20",
1753
+ "quote": "Encryption is used to secure communications and data storage, particularly authentication credentials and the transmission of sensitive information."
1754
+ }
1755
+ },
1756
+ {
1757
+ "kind": "compliance",
1758
+ "ruleId": "input-causes-abend",
1759
+ "framework": "ffiec",
1760
+ "clause": "DA&M V",
1761
+ "title": "Development",
1762
+ "rationale": "The rule reports: An input the program accepts ends its run with an abend. That is a source code-related vulnerability of the kind secure coding practices exist to minimise.",
1763
+ "source": {
1764
+ "doc": "ffiec",
1765
+ "retrieved": "2026-09-20",
1766
+ "quote": "Secure coding practices help developers minimize the potential for known source code-related vulnerabilities in the development phase."
1767
+ }
1768
+ },
1769
+ {
1770
+ "kind": "compliance",
1771
+ "ruleId": "input-causes-abend-s0c4",
1772
+ "framework": "ffiec",
1773
+ "clause": "DA&M V",
1774
+ "title": "Development",
1775
+ "rationale": "The rule reports: An input the program accepts ends its run with a protection exception (S0C4). That is a source code-related vulnerability of the kind secure coding practices exist to minimise.",
1776
+ "source": {
1777
+ "doc": "ffiec",
1778
+ "retrieved": "2026-09-20",
1779
+ "quote": "Secure coding practices help developers minimize the potential for known source code-related vulnerabilities in the development phase."
1780
+ }
1781
+ },
1782
+ {
1783
+ "kind": "compliance",
1784
+ "ruleId": "input-causes-abend-s0c7",
1785
+ "framework": "ffiec",
1786
+ "clause": "DA&M V",
1787
+ "title": "Development",
1788
+ "rationale": "The rule reports: An input the program accepts ends its run with a data exception (S0C7). That is a source code-related vulnerability of the kind secure coding practices exist to minimise.",
1789
+ "source": {
1790
+ "doc": "ffiec",
1791
+ "retrieved": "2026-09-20",
1792
+ "quote": "Secure coding practices help developers minimize the potential for known source code-related vulnerabilities in the development phase."
1793
+ }
1794
+ },
1795
+ {
1796
+ "kind": "compliance",
1797
+ "ruleId": "input-causes-abend-subscript-range",
1798
+ "framework": "ffiec",
1799
+ "clause": "DA&M V",
1800
+ "title": "Development",
1801
+ "rationale": "The rule reports: An input the program accepts drives a subscript or reference modification out of range, and the run abends. That is a source code-related vulnerability of the kind secure coding practices exist to minimise.",
1802
+ "source": {
1803
+ "doc": "ffiec",
1804
+ "retrieved": "2026-09-20",
1805
+ "quote": "Secure coding practices help developers minimize the potential for known source code-related vulnerabilities in the development phase."
1806
+ }
1807
+ },
1652
1808
  {
1653
1809
  "kind": "compliance",
1654
1810
  "ruleId": "intermediate-result-loses-high-order-digits",
@@ -2117,6 +2273,19 @@
2117
2273
  "quote": "Encryption is used to secure communications and data storage, particularly authentication credentials and the transmission of sensitive information."
2118
2274
  }
2119
2275
  },
2276
+ {
2277
+ "kind": "compliance",
2278
+ "ruleId": "jcl-racf-new-password",
2279
+ "framework": "ffiec",
2280
+ "clause": "IS II.C.19",
2281
+ "title": "Encryption",
2282
+ "rationale": "The rule reports: Credential pattern: jcl racf new password. That is an authentication credential or sensitive data left unprotected, which this control requires be encrypted in storage and in transit.",
2283
+ "source": {
2284
+ "doc": "ffiec",
2285
+ "retrieved": "2026-09-20",
2286
+ "quote": "Encryption is used to secure communications and data storage, particularly authentication credentials and the transmission of sensitive information."
2287
+ }
2288
+ },
2120
2289
  {
2121
2290
  "kind": "compliance",
2122
2291
  "ruleId": "job-loads-from-an-authorised-library",
@@ -2442,6 +2611,19 @@
2442
2611
  "quote": "Principle of least privilege, which recommends minimum user profile privileges for both physical and logical access based on job necessity."
2443
2612
  }
2444
2613
  },
2614
+ {
2615
+ "kind": "compliance",
2616
+ "ruleId": "web-client-opens-cleartext",
2617
+ "framework": "ffiec",
2618
+ "clause": "IS II.C.19",
2619
+ "title": "Encryption",
2620
+ "rationale": "The rule reports: A program opens an outbound HTTP connection without TLS. That is an authentication credential or sensitive data left unprotected, which this control requires be encrypted in storage and in transit.",
2621
+ "source": {
2622
+ "doc": "ffiec",
2623
+ "retrieved": "2026-09-20",
2624
+ "quote": "Encryption is used to secure communications and data storage, particularly authentication credentials and the transmission of sensitive information."
2625
+ }
2626
+ },
2445
2627
  {
2446
2628
  "kind": "compliance",
2447
2629
  "ruleId": "web-cookie-without-secure-attributes",
@@ -2468,6 +2650,19 @@
2468
2650
  "quote": "Secure coding practices help developers minimize the potential for known source code-related vulnerabilities in the development phase."
2469
2651
  }
2470
2652
  },
2653
+ {
2654
+ "kind": "compliance",
2655
+ "ruleId": "web-receive-length-exceeds-area",
2656
+ "framework": "ffiec",
2657
+ "clause": "DA&M V",
2658
+ "title": "Development",
2659
+ "rationale": "The rule reports: A web receive lets CICS write more bytes than the area it writes into. That is a source code-related vulnerability of the kind secure coding practices exist to minimise.",
2660
+ "source": {
2661
+ "doc": "ffiec",
2662
+ "retrieved": "2026-09-20",
2663
+ "quote": "Secure coding practices help developers minimize the potential for known source code-related vulnerabilities in the development phase."
2664
+ }
2665
+ },
2471
2666
  {
2472
2667
  "kind": "compliance",
2473
2668
  "ruleId": "web-request-changes-state-without-a-token",