Safeguard
Compliance•

NIST 800-53 SA-20 Customized Development of Critical Components

SA-20 covers rebuilding components you cannot trust and have no way to protect. What it means, and what to do when you will not rebuild.

Safeguard Security Team
3 min read

SA-20, Customized Development of Critical Components, says to reimplement or custom develop a list of critical system components that the organization names. The list is organization defined, so the control is empty until you decide what belongs on it.

800-53 binds US federal systems, and others through contract. For a small or mid size company it is a reference, and a rare one. Most teams will use it as a prompt to ask which component they would never run if they had a choice.

What it means in practice

The guidance explains the trigger. Some components likely cannot be trusted because of specific threats and vulnerabilities, and no viable control reduces the risk enough. Rebuilding or custom developing such a component can meet higher assurance needs by changing hardware, software or firmware so that standard attacks are less likely to work.

The guidance also admits the usual reality. Sometimes no alternative source exists and the organization chooses not to rebuild. In that case it can add controls: enhanced auditing, restrictions on source code and system utility access, and protection from deletion of system and application files.

For a software company, think of a parser that has produced repeated memory safety bugs, an abandoned library at the center of your product, or a cryptographic routine you were never meant to maintain. SA-20 is the decision record for those.

Evidence to collect

  • The named list of critical components, with the reason each is on it.
  • The decision for each: rebuild, replace, or keep with extra controls.
  • For rebuilt components, design notes, test results and review records.
  • For components you keep, evidence of the extra controls such as audit logs and access restrictions.

Common gaps

An empty list. Teams often have no component they consider critical because nobody has asked.

A list with no decision. Naming a component and then doing nothing is not a plan.

Rebuilding without testing. A custom component is only more trustworthy if you test it harder than the one it replaced.

How to implement it

  1. Start from your dependency and component inventory.
  2. Rank by impact and by known weakness, using vulnerability history and maintenance status.
  3. For the top few, choose rebuild, replace or contain, and write the reason.
  4. If you contain, add the controls from the guidance and show they work.
  5. Revisit the list when a component loses support or a serious flaw appears.

What an auditor may ask

  • Which components did you judge critical, and why those?
  • What did you decide for each, and when?
  • For any you kept as is, which extra controls apply and how do you know they work?

An honest short list with decisions beats an empty one.

Quick check

What if you cannot rebuild a critical component?

The guidance suggests extra controls: enhanced auditing, restrictions on source code and utility access, and protection from deletion of files.

Sources

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.