Which shit first?

Patch your shit.
For FedRAMP.

Your scanner found 10,000 vulnerabilities. Congratulations on the spreadsheet. Which ones can actually fuck up an agency?

Find out what breaks, who gets hurt, and how an attacker gets there. Then patch with a plan. Panic-rebooting production also counts as an outage, champ.

This is the best fucking way to do VDR. Yes, it's biased: the author maintains this site. It's still objectively the best.

These are proposed approaches to FedRAMP Vulnerability Detection and Response (VDR) and Vulnerability Evaluation and Reporting (VER), not official FedRAMP guidance or endorsement.

Start wherever your patience allows

01 / Read

Understand the method

Your scanner can scream "CRITICAL" all day. Someone still has to explain what happens to the agency. Start here before you forward another red spreadsheet.

Read the companion (PDF) →

02 / Try

Work through a finding

Pick a flaw, give it an actual asset and agency context, and watch the PAIN rating and deadline change. Look at that. A decision with working attached.

Open the PAIN playground →

03 / Trace

Follow the payload

Follow the attack through your architecture. Your public app might be hand-delivering malicious input to that "safe" internal service. Excellent customer service. Terrible security.

Open the Payload Path Explorer →

Put the CVSS sort button down.

PAIN asks: if someone exploits this flaw on this asset, how badly does the agency get screwed?

The proposed method answers that with three layers. Carry confidentiality, integrity, and availability through each one. Slapping "HIGH" on everything is how you make every ticket urgent and every engineer stop reading them.

  1. The flaw: what can it break?

    Read the vulnerability's C/I/A impact. Can it spill data, tamper with it, or knock the service on its ass? A data leak and a root shell deserve different conversations. The scanner's red badge is where your homework starts.

  2. The asset: what does this thing actually do?

    Set its confidentiality, integrity, and availability requirements independently: CR/IR/AR. Look at the data, privileges, trust, and dependencies. One Redis instance is a disposable cache; another holds live session tokens. Rate the job each does and what happens when it gets owned. Copy-pasting the same asset rating onto both is impressively lazy.

  3. The agency: what's actually at stake?

    Confirm what federal information the offering and agency intend to process. Use NIST SP 800-60's provisional information-type mappings and FIPS 199's impact categories to derive the C/I/A ceiling, with agency-confirmed adjustments. "It's the government, bro" tells us precisely jackshit about the consequences of losing this data.

Here's the handoff: for each C/I/A objective, use the lower of the asset requirement and the agency's intended-use ceiling. Apply those effective requirements to the flaw's impact in the PAIN calculation, then account for which agencies the finding can affect. Yes, you have to know what your shit does.

Keep H/M/L as H/M/L. The overall High category is not permission to photocopy the H into every box. And keep provider Certification Class in its lane: it selects the response table, not the agency's C/I/A category. We already have enough alphabet soup without pouring it into the wrong bowl.

Follow the PAIN calculation (PDF) → · Before the PAIN Equation: derive the ceiling (PDF) →

Same bug. Different box. Different shitshow.

Say your ZooKeeper or Schema Registry deployment holds non-sensitive coordination metadata, while Kafka or PostgreSQL holds sensitive agency records. The same confidentiality flaw may hurt a hell of a lot more on the data store. The CVE didn't change. What you entrusted to the box did.

Before you stamp "LOW" on ZooKeeper and go to lunch: check for secrets, sensitive metadata, and control over the rest of the cluster. Lower confidentiality needs can sit right beside high integrity and availability needs. Let someone rewrite your coordination state and enjoy explaining why every broker is having an existential crisis.

Agency use changes the stakes too. Leaking a public lunch menu is one thing. Tampering with public emergency instructions is quite another. Public information still needs integrity and availability. Assess all three dimensions, and keep the asset profile separate from the agency's intended-use ceiling. "It's public" is a terrible excuse for letting someone fuck with it.

You picked the tenancy model. You picked the blast radius.

Multi-agency impact follows from your multi-tenancy strategy. You designed where customers share data, infrastructure, credentials, and control. Draw the damn architecture. The blast radius shouldn't be a surprise at audit time.

One shared backend database for all your customers? If an exploit gives the attacker access to everyone's records, multiple agencies get screwed in the same breach. You saved on database instances and bought yourself a group incident call. Account for that shared consequence.

A dedicated, effectively isolated database per customer? A compromise contained to one customer's database can limit the damage to that agency. That's a materially different consequence from exposing every customer's records. Credit the isolation you can demonstrate.

Check what survives the compromise: database permissions, credentials, host boundaries, and shared administration. Separate database names with one all-powerful credential can still give the attacker the whole buffet. Your tenant ID column is going to need a better lawyer.

Count the agencies this finding can actually affect. A shared database, identity service, or control plane can carry a multi-agency consequence. An isolated tenant component doesn't inherit every other customer's impact just because they all pay you.

In the proposed PAIN method, a disruptive effect on one agency maps to N3; the same effect on multiple agencies maps to N4. A debilitating effect maps to N4 for one agency and N5 for multiple agencies. Establish the consequence and affected scope, then assign the rating. "We're multi-tenant" is the start of the explanation. Finish the fucking sentence.

Eight factors. Your scanner brought one number.

FedRAMP VER-EVA-EFA →

FedRAMP says providers SHOULD consider at least these eight factors. Get comfortable. "The scanner said so" is about to run out of answers.

01 / Criticality
What breaks for the agency? "prod-final-v7" is a hostname. Explain why anyone should give a shit.
02 / Reachability
Can attackers deliver the trigger? Your private IP won't save you when the public app forwards the payload.
03 / Exploitability
How easy and likely is exploitation? Check the prerequisites before declaring every 9.8 the fucking apocalypse.
04 / Detectability
Can attackers find the weakness? Leaking your exact vulnerable version saves them time. How thoughtful of you.
05 / Prevalence
One forgotten VM or every deployment from that busted image? Congratulations, you standardized the vulnerability.
06 / Privilege
What access can they gain? "Service account" sounds adorable until it owns every tenant.
07 / Proximate Vulnerabilities
Can this chain with another flaw, even a mitigated one? Individually "fine." Together, you're fucked.
08 / Known Threats
Which known threats could use this, and how likely are they to? Ransomware crews appreciate familiar tooling too.

PAIN says how bad. Now set the damn clock.

PAIN tells you how badly exploitation could hurt the agency. Exploitability and internet reachability pick the urgency column; provider Certification Class picks the timeframe table. Do the lookup. "Next quarter" doesn't become acceptable because you said it in a change advisory board meeting.

On KEV? Exploitation has already happened. EPSS estimates the probability of observed exploitation in the next 30 days. A low prediction doesn't erase an observed fact. "But the score was low" will make a lovely slide between the incident timeline and your resignation.

Read the exploit research, prerequisites, and threat reports too. A working lab exploit deserves attention; calling it an attack in the wild still needs evidence. The method uses KEV and governed EPSS thresholds for its exploitation signal. The eight factors inform the broader evaluation. Please resist feeding them into a blender and calling the result PAIN.

Trace the payload and protocol through the deployment, including indirect paths and controls you can prove work. "Behind a load balancer" is where the service lives. The attacker would also like to know what stops the malicious request. Awkwardly reasonable question.

A deployment-specific result needs your asset profile, intended agency use, affected-agency scope, applicable requirements, and current evidence. The playground illustrates the proposed method; your governed assessment is the record. CISA's published KEV due dates also apply in parallel under FedRAMP's KEV rule.

Work through a finding → · Trace a payload → · Read VDR-TFR-KEV →

SSVC? PAIN? Pass the alphabet soup.

SSVC means Stakeholder-Specific Vulnerability Categorization. The stakeholder part matters. Someone has to live with the consequences of your prioritization, and they probably don't care how beautifully you sorted the CSV.

Here, the FedRAMP agency-impact rating is PAIN, alongside exploitability, reachability, and response timeframes. The papers propose a reproducible way to derive that rating. Bring the asset and agency evidence. Collecting acronyms doesn't count as doing the assessment.

For the inevitable "where the hell did that rating come from?" The math, assumptions, and worked examples are right here. All papers below are PDFs. Yes, there's homework.

Back to the KEV countdown No patch yet? Take action anyway →