Cyber Resilience

What a control framework can and cannot prevent

A new interactive map shows, for any two security frameworks, how much one covers the other. The most useful thing it surfaces is where a control catalog structurally runs out of reach. Last updated: 2026-08-22

Security control frameworks are not interchangeable, and they are not equally good at everything. I built an interactive map that shows, for any two frameworks, how much one covers the other, in both directions, backed by the individual control-to-control mappings. The single most useful thing it surfaces is a boundary most compliance conversations skip: what a control catalog can prevent, and what it structurally cannot.

0.83NIST 800-53's coverage of the access-control weakness family, its strongest
0.35its coverage of the incorrect-calculation family, its weakest
15directed pairs across five control frameworks plus the CWE weakness axis

The finding

When I map NIST 800-53 against the ten CWE weakness families (the research-view "pillars" that every specific weakness rolls up to), the coverage is lopsided in a way that makes sense the moment you see it. At the strong end, 800-53 covers Improper Access Control well. At the weak end sit the code-correctness families: Incorrect Comparison, Incorrect Calculation, and Insufficient Control Flow Management.

CWE weakness family800-53 coverage
Improper Access Control0.83
Protection Mechanism Failure0.77
Improper Neutralization0.73
Improper Check or Handling of Exceptional Conditions0.68
Improper Control of a Resource Through its Lifetime0.64
Improper Adherence to Coding Standards0.56
Improper Interaction Between Multiple Correctly-Behaving Entities0.55
Insufficient Control Flow Management0.48
Incorrect Comparison0.42
Incorrect Calculation0.35

Coverage is a 0 to 1 index over the weaknesses we have mapped 800-53 to in each family, weighted by how completely each control addresses each weakness. It reads "how strongly this framework covers the weaknesses we have mapped," not "share of every weakness that exists."

This is not a knock on 800-53. It is the honest shape of what an administrative and technical control catalog can do. You can mandate access control, logging, configuration baselines, and separation of duties. You cannot mandate away an off-by-one, a wrong comparison operator, or a bad arithmetic bound. Those are implementation defects, and the controls that actually close them are code review, testing, and memory-safe or strongly typed languages, none of which a policy catalog can require into existence. Graded honestly, this is an observation from our own mapping data, corroborated by the obvious prior: a control that says "review access quarterly" has no purchase on a calculation error.

Why the map, and not a spreadsheet

Here is the part that makes the map worth building rather than reading off a table. Map the same ten weakness families against NIST CSF 2.0 instead, and the lopsidedness vanishes. CSF covers all ten families at a uniformly high level, roughly 0.74 to 0.82 across the board.

That is not because CSF is a better framework than 800-53. It is because CSF describes outcomes ("Identify," "Protect," "Detect") rather than specific controls, so each outcome maps broadly to many weaknesses at a decent strength. The gaps that 800-53 exposes are still there in reality; CSF is simply at too coarse a resolution to show them. That resolution difference is the reason to have both, and to look at them side by side. Use the granular catalog to find the gaps. Use the outcome framework to check breadth. A map that puts the two next to each other, on the same weakness axis, makes the tradeoff legible in a way that neither framework's own documentation ever will.

What is under the hood

Every mapping is direct. We do not chain a weakness through a second or third taxonomy to reach a control. Chaining is lossy: when we tested the standard CWE to CAPEC to ATT&CK path on the twenty most common weaknesses, the middle taxonomy dropped most of the signal, leaving twelve of twenty with no technique at all, including the two most common. Every edge on this map is a mapping we authored and graded ourselves, first hand.

It is bidirectional, and the two directions can disagree. How much 800-53 covers CSF is a different question from how much CSF covers 800-53, and we store and show both. Where our two directions disagree at the individual control level, the map marks it rather than averaging the disagreement away.

We stopped counting policy as protection. When a governance control mandates a technical control, that is a mandate, not coverage. A policy analyzes nothing and blocks nothing on its own, so it provides none of the technical control's protective effect. We re-authored those cross-layer links as a distinct "governs and implements" relation that sits off the coverage scale entirely, 423 such links. Coverage numbers for policy-heavy control families dropped as a result. That was the honest correction, not a regression, and the map has a toggle to show the governance links on their own.

How to use it

The map is live at /framework-map/. Pick two frameworks and it does the rest.