A vulnerability report is one of the highest-stakes documents in software. It has to convey what’s broken, how bad it is, and how to fix it — precisely, calmly, and without either understating or sensationalising. The language is specialised, and getting it wrong damages credibility. This guide covers the English of CVEs, severity, impact, and responsible disclosure.
The anatomy of a vulnerability report
A strong report answers, in order:
- What the vulnerability is (the class and component).
- Severity (how serious, ideally with a CVSS score).
- Impact (what an attacker can actually do).
- Reproduction (proof it’s real).
- Affected versions (the scope).
- Remediation (how to fix or mitigate).
Each section has its own conventional phrasing.
Naming the vulnerability
Use the standard vulnerability-class vocabulary — it signals competence and tells readers what to expect:
- injection — SQL injection, command injection. “This is a SQL injection in the search endpoint.”
- XSS (cross-site scripting) — “A stored XSS in the comment field.”
- CSRF (cross-site request forgery)
- SSRF (server-side request forgery)
- RCE (remote code execution) — the most serious class. “This allows unauthenticated RCE.”
- privilege escalation — gaining higher access. “A privilege-escalation flaw lets a user become admin.”
- path traversal — “A path-traversal bug exposes arbitrary files.”
- IDOR (insecure direct object reference) — accessing others’ data by changing an ID.
- information disclosure / leak — exposing data. “An information disclosure in the error response.”
“An unauthenticated attacker can achieve remote code execution via a deserialization flaw in the import endpoint.”
Severity language
Severity uses CVSS (Common Vulnerability Scoring System), a 0–10 score with bands:
- Critical (9.0–10.0)
- High (7.0–8.9)
- Medium (4.0–6.9)
- Low (0.1–3.9)
Phrasing:
- “This is rated Critical (CVSS 9.8).”
- “We assess this as High severity.”
- “The base score is 8.1 due to network attack vector and high impact.”
Be specific about the conditions that drive severity:
- attack vector — network, adjacent, local, physical. “Network-exploitable, no user interaction.”
- privileges required — “No authentication is required.”
- user interaction — “Requires the victim to click a link.”
The phrase “pre-auth” (before authentication) vs “post-auth” (after) is critical: pre-auth bugs are far more dangerous.
Describing impact precisely
Impact is where reports often fail — either vague (“it’s bad”) or hyperbolic. State exactly what an attacker can do.
- “An attacker can read arbitrary files on the host.”
- “This allows full account takeover.”
- “An attacker can execute arbitrary commands as the service user.”
- “The flaw exposes other users’ personal data.”
Use the CIA triad framing when useful — confidentiality, integrity, availability:
- “This affects confidentiality (data exposure) but not integrity.”
- “A successful exploit compromises availability — it crashes the service.”
Avoid weasel words: “could potentially possibly allow” — say “allows” if it does, “may allow under X condition” if it’s conditional.
Writing reproduction steps
A report without reproduction is a claim, not a finding. Be exact and minimal — a proof of concept, not a tutorial.
Steps to reproduce:
1. Send a POST to /api/import with the payload below.
2. Observe the server executes the embedded command.
Proof of concept:
POST /api/import
Content-Type: application/json
{ "data": "<crafted payload>" }
Result: the command `id` runs and returns the service user.
Phrases:
- “The following request demonstrates the issue:”
- “This proof of concept executes
idas the service user.” - “The vulnerability can be triggered with a single unauthenticated request.”
Redact anything dangerous when sharing publicly: “Payload redacted pending the fix.”
Affected versions and remediation
State scope and fix unambiguously:
- “Affected versions: 2.0.0 through 2.4.1.”
- “Fixed in 2.4.2.”
- “Versions prior to 2.4.2 are vulnerable.”
Remediation phrasing:
- “Upgrade to 2.4.2 or later.”
- “As a mitigation, disable the import feature until you can patch.”
- “There is no workaround; patching is required.”
Distinguish a fix (removes the vulnerability) from a mitigation (reduces risk without fully fixing).
Responsible disclosure language
When you report to a vendor, the tone is professional and cooperative, not threatening.
- “We are reporting this privately under responsible disclosure.”
- “We propose a 90-day disclosure timeline, in line with industry norms.”
- “Please confirm receipt and an expected remediation date.”
- “We will coordinate public disclosure once a patch is available.”
- “The issue is under embargo until the agreed disclosure date.”
Key terms:
- responsible / coordinated disclosure — reporting privately first.
- disclosure timeline — agreed window before going public.
- embargo — hold on public details.
- PoC (proof of concept) — demonstration code.
- patch / advisory — the fix and its announcement.
“We’ve reported this privately and agreed a 90-day embargo. We’ll publish the advisory and CVE once the patch ships.”
Before and after
Before: “There’s a really bad security hole in the import thing, hackers could totally destroy everything, you need to fix it ASAP!!!”
This is alarming, unspecific, and unprofessional.
After: “Summary: Unauthenticated RCE in the
/api/importendpoint via unsafe deserialization. Severity: Critical (CVSS 9.8), network attack vector, no auth required. Impact: Arbitrary command execution as the service user, leading to full host compromise. Affected: 2.0.0–2.4.1. Remediation: Upgrade to 2.4.2; as a mitigation, disable the import feature. PoC attached, payload redacted.”
The second is taken seriously precisely because it’s calm and specific.
Common mistakes
- Hyperbole. “Catastrophic, total destruction” reads as amateur. Let the facts carry the weight.
- Vague impact. “It’s insecure” — say what an attacker can do.
- Confusing fix and mitigation. A mitigation reduces risk; a fix removes the bug.
- Pre-auth vs post-auth left unstated. Always say whether authentication is required.
- No reproduction. Without a PoC, it’s an unverified claim.
- Overusing “could potentially possibly”. State what is, then hedge only genuinely conditional parts.
Key takeaways
- Structure: what, severity, impact, reproduction, affected versions, remediation.
- Name the vulnerability class and state pre-auth vs post-auth.
- Give a CVSS score and explain what drives it.
- Describe impact as what an attacker can actually do.
- Keep the tone calm and precise — facts, not alarm — and use responsible disclosure language.
A great vulnerability report earns trust through clarity. Write it so the reader knows exactly how bad it is and exactly what to do next.
Navigating Nuance: Addressing Specific Challenges for Non-Native Speakers
The goal of crafting effective security vulnerability reports isn’t just about conveying technical details; it’s about communicating precisely enough for a global audience – including developers who may be learning professional English as a second language. While the core concepts of CVE (Common Vulnerabilities and Exposures) and disclosure language are universal, subtle differences in phrasing can dramatically affect clarity and understanding. For those developing their English proficiency, focusing on precision and avoiding overly complex sentence structures is paramount. A common pitfall is assuming technical terms translate perfectly; always double-check definitions within the context of a security report to ensure everyone understands the terminology equally.
Consider this scenario: You’re reviewing a pull request submitted by a colleague who’s relatively new to the team. The description states, “The API endpoint is vulnerable due to insufficient input validation, leading to potential remote code execution.” While technically accurate, it lacks crucial context for someone not immediately familiar with all the jargon. A more effective phrasing might be: “The API endpoint /users/create is vulnerable because it does not properly validate user input. This allows an attacker to send malicious data that could execute arbitrary commands on the server, potentially leading to a system compromise.” Notice how this version breaks down the problem into smaller, more digestible parts and explains why insufficient validation is problematic – “allowing an attacker…” – rather than just stating it as a fact.
Another frequent challenge arises in describing the impact of a vulnerability. Rather than simply stating “High severity,” try to quantify the potential damage. Instead of “The system could be completely compromised,” consider, “A successful exploit could allow an attacker to gain full control of the server, potentially leading to data theft or denial-of-service attacks.” Using measurable terms – like “data theft” or “denial-of-service” – helps stakeholders understand the potential consequences and prioritize remediation efforts. Remember, clarity trumps technical brilliance when communicating security risks.
Finally, be mindful of passive voice. While it can sometimes sound more formal, overuse can obscure responsibility. Instead of “The vulnerability was discovered by a researcher,” say “A researcher identified this vulnerability.” This active phrasing clearly assigns ownership and accountability, which is crucial in a collaborative environment. Focus on using direct, concise language that minimizes ambiguity and facilitates clear communication across diverse teams.
Keep practising
Turn this article into muscle memory
Five-minute exercises with instant feedback — built from the same kind of real IT language.
What to read next
Frequently asked questions
What will I learn from "English for Security Vulnerability Reports: CVE and Disclosure Language"?
This is a Advanced-level Writing article covering writing, security, vulnerability and disclosure. Write clear security vulnerability reports in English — CVE descriptions, severity, impact, reproduction and responsible disclosure language — with templates and examples.
Is this article free to read?
Yes. Every article on CoderSlingo, including this one, is free to read with no account, sign-up, or paywall.
How is reading this article different from doing an exercise?
Articles like this one explain concepts and vocabulary in context through prose, while exercises are interactive drills — fill-in-the-blank, matching, and multiple-choice — that test and reinforce specific terms. Reading builds understanding; exercises build recall.
Can I practice the vocabulary used in this article?
Yes — this article's topic lines up with our writing exercises. Use the "Practice this vocabulary" link below to jump straight into a matching drill.
How long does "English for Security Vulnerability Reports: CVE and Disclosure Language" take to read?
About 10 min. Most CoderSlingo articles, including this one, are written to be read in one sitting, without needing a dictionary open in another tab.
Do I need to create an account to read or save this article?
No account is required to read any article. If you complete exercises elsewhere on the site, your progress is saved locally in your browser — no login needed.
What if I don't understand a technical term used in this article?
Check the site Glossary for plain-English definitions of common IT terms, or browse the #writing tag page for other Writing articles that use the same vocabulary in different contexts.
Can I share or link to "English for Security Vulnerability Reports: CVE and Disclosure Language"?
Yes — use the Twitter/X or LinkedIn share buttons at the end of the article, or copy the page URL directly. Attribution back to CoderSlingo is appreciated but the content is free to reference.
When was this Writing article published?
This article was published in 2026. New Writing articles are added regularly — visit the #writing tag page to see the full, continuously updated list.
Where can I find more articles like this one?
See "ISO 27001 Evidence Statements: Language Patterns That Work", "How to Write a Pull Request Description in English", "How to Write a Release Notes Summary in English" in the Related Articles section below, or browse all Writing articles from the main Blog index.