Your advisory's CVSS base score assumes an authenticated admin, but a consumer recomputes it far higher. Who is right?
answer
- the vector, not the number
- privileges-required assumes a trust boundary
- base metrics exclude the consumer's deployment
- write the assumption sentence explicitly
- soft vendor scores get overridden everywhere
basics
~20 sBoth can be right. A base score is only as good as its trust-boundary assumptions, so publish the full vector and name the configuration you scored; a consumer whose product self-serves that admin role will legitimately score it higher.
solid answer
~50 sA base score describes intrinsic properties of the flaw under an assumed product model. Scoring privileges-required as high encodes your belief that reaching the vulnerable path costs an administrative role. If you ship an SDK and the consumer's product grants tenant-admin to anyone who completes self-serve signup, that privilege is not a barrier in their product, and their higher number is honest. You have not disagreed about arithmetic; you disagreed about where the trust boundary sits. The publisher's obligation is therefore to publish the vector string, not a bare number, and to state in the text exactly which role, configuration and entry point you assumed. That is what lets a consumer see that privileges-required is the load-bearing metric and disagree precisely rather than vaguely. Never score down to reduce noise or embarrassment: a vendor believed to score soft gets overridden everywhere, and one shaded score costs you every future one.
go deeper
Know that a published severity is a judgment made under assumptions about how the software is deployed, and that a vector string carries those assumptions while a single number does not.
Explain what base metrics deliberately leave out - the consumer's deployment, compensating controls and data value - and why a privileges-required choice depends on where the product draws its trust boundary.
Show how you handle the divergence in practice: publishing the assumption sentence up front, reissuing when a consumer proves the assumption wrong, and separating 'wrong for everyone' from 'different in their deployment'.
Own the incentive problem. Explain how you keep scoring consistent when a high number triggers contractual notifications and escalations, and why a reputation for soft scores destroys the value of every advisory you will ever publish.
## What you are actually asserting when you publish a score A CVSS base score is a compression of eight metric choices - attack vector, attack complexity, privileges required, user interaction, scope, and the confidentiality, integrity and availability impacts - into one number. Every one of those choices is a judgment about the flaw as it exists in the product, and several of them are only meaningful relative to an assumed deployment. Base metrics deliberately exclude anything about a specific consumer's environment: how the software is deployed, what compensating controls sit in front of it, how valuable the data behind it is, and whether anyone is currently exploiting it. That is by design - the base score is meant to be the stable part that everyone starts from. The trouble is that 'the product as it exists' is not a single thing when you ship a library or an SDK into other people's products. ## The worked case Take a multi-tenant SaaS SDK with a bug reachable only by a caller holding the tenant-administrator role. Money and customer records sit behind it. Your product managers describe tenant admin as a privileged, contractually provisioned role; you score privileges-required as high and publish a moderate number. One of your consumers embeds the SDK in a product with self-serve signup. Anyone with an email address becomes an admin of their own tenant in ninety seconds. In that product the vulnerable path is reachable by any member of the public who is willing to click 'sign up' - and if the bug crosses tenants, that is every customer's data reachable by an anonymous internet user for the price of a free account. They recompute privileges-required as low and get a much higher number. Neither party miscalculated. You each scored a different product. The one thing that would have made this visible immediately is the vector string: it shows PR:H sitting there as the assumption doing all the work, and the consumer can point at that single metric and say 'not in our deployment'. ## What the publisher owes Three things, and they are cheap. **Publish the vector, not the number.** A bare 6.5 is a lossy hash of eight decisions. The vector string - the full `CVSS:3.1/AV:.../PR:.../...` form - lets a reader see which decision is load-bearing. Advisory formats carry severity as a vector for exactly this reason. **State the assumptions in prose.** Which role, which configuration, which entry point, which trust boundary you took as the perimeter. One sentence: 'scored assuming the tenant-administrator role is provisioned by a privileged operator; consumers who grant this role through self-service should treat privileges-required as low'. That sentence pre-empts the entire dispute and is the single highest-value thing in most vendor advisories. **Expect and welcome recomputation.** Downstream databases and consumers will produce their own numbers, and divergence is normal rather than an attack on your competence. What you want is for the divergence to be explainable from your own published data. ## When a consumer disputes your score Ask which metric they would change and why. Then one of three things is true. They are right about a supported configuration - the role really is self-serve in a way your product supports, or the entry point is reachable pre-authentication on a path you forgot. Revise the vector, reissue the entry with a note about what changed, and say plainly that the original assumption was wrong. Advisory entries are living documents; correcting one costs you far less than defending a wrong one. They are right about *their* deployment but not about yours. Say so publicly - 'in deployments where X is self-service, treat PR as low' - and let them carry their own number. That is not a concession; it is the assumption sentence you should have written in the first place. They are wrong, and you can show why from the code path. Explain the reachability, in public, on the advisory. A dispute answered with reasoning is fine. A dispute answered with authority is how vendor scores lose their standing. ## The incentive trap There is constant pressure to score low: a high number triggers customer escalations, contractual notification clauses, and awkward questions. Vendors who yield to it are noticed within about two incidents, after which consumers apply a mental multiplier to everything that vendor publishes, and the careful scoring you do on the next flaw buys nothing. Similarly, do not discount for prevalence - 'hardly anyone enables that feature' is not a base metric, it is a sentence for the details field. The reputational asset here is not being scored low. It is being scored the same way every time, with the assumptions written down, so that a consumer who disagrees can see exactly where the disagreement starts.
- Why publish the full vector string when most tools display only the number?Because the number is a lossy compression of eight judgments and cannot be argued with. The vector shows which metric carries the score, so a consumer can say 'privileges-required is low in our product' and change one term instead of rejecting the whole rating. It also lets anyone reproduce your arithmetic.
- A large customer says your score is too low and threatens to publish their own. What do you do?Ask which metric they would change and why. If they are right about a configuration you support, revise the vector and reissue the entry with a note saying what changed. If it is specific to their deployment, publish the qualifying sentence so everyone sees both readings. Arguing from authority costs more than the correction ever would.
- What should you NOT let influence the score you publish?How many customers enabled the feature, how expensive the fix is, whether a contract's notification threshold sits just above the number, and how the bug reflects on the team. None of those are properties of the flaw. They belong in your remediation planning and, where relevant, in the advisory text - never in the metrics.
A crash-test rating assumes a driver wearing a seatbelt. Publishing the rating without the assumption invites every fleet operator to re-rate the car, differently and privately.
saying these in an interview costs you the question
- Publishing a bare number with no vector string
- Treating the vendor score as final for every deployment
- Scoring down because the fix is expensive or embarrassing
- Claiming the base score already covers the customer's environment
- Refusing to reissue when an assumption is shown wrong
- Discounting severity because the feature is rarely enabled