Skip to content
GDPR compliant. Hosted in DE.
14-day free trial →
RFC 9116Coordinated DisclosureSecurity Scan
Security 12 min read 19 Jun 2026

Setting Up security.txt and Vulnerability Disclosure 2026

security.txt per RFC 9116 makes your vulnerability reporting channel discoverable. How to set up the file, the CVD process, and expiry monitoring correctly.

X

XICTRAQ Team

XICTRAQ

security.txtRFC 9116Vulnerability DisclosureCVDSecurity
1.25%
of the top 1M domains use security.txt (URIports 2025)
44%
of existing files are RFC-compliant (URIports 2025)
Dec 112027
CRA requires a CVD policy (EU)
security.txt and Vulnerability Disclosure/.well-known/security.txtContact:mailto:security@your-domain.comReporting channel for researchers (REQUIRED)okExpires:2026-12-31T23:59:00.000ZExpiry date (REQUIRED, < 1 year recommended)okPolicy:https://your-domain.com/security-policyLink to disclosure policy (optional)Encryption:https://your-domain.com/pgp-key.txtPGP key for encrypted reports-----BEGIN PGP SIGNATURE----- (recommended)RFC 9116 requires only Contact + Expires(IETF RFC 9116, 2022)Only 44% of files are RFC-compliant(URIports 2025)Most common error: Expires is in the pastPresence and expiry checkshop.your-domain.com/.well-known/security.txt foundExpires in 204 daysVALID!www.your-domain.comFile present, but Expireselapsed 41 days agoSTALEapi.your-domain.comNo security.txtHTTP 404 under /.well-known/MISSINGXICTRAQ Security ScanPresence + RFC fields checkedExpiry warning before ExpiresAlert on removal / 404Email, Slack, TelegramOnly 1.25% of the top 1M domains have security.txt (URIports 2025) — XICTRAQ Security Scan
When a security researcher finds a vulnerability on your website, there should be a clear, predefined way to report it to you. That is exactly what security.txt provides: a small text file at /.well-known/security.txt, standardized in the IETF's RFC 9116 (IETF 2022). It names the reporting channel, the disclosure policy, and an expiry date. Despite the minimal effort, adoption is low: only 1.25% of the top 1M domains publish a security.txt in 2025 (URIports 2025), and of those, only 44% are RFC-compliant (URIports 2025). At the same time, pressure is rising: the 21,500+ new CVEs in the first half of 2025 alone (Deepstrike 2025) and the EU Cyber Resilience Act, which requires a coordinated vulnerability disclosure policy from 11 December 2027 (CRA, EU), make a clean reporting channel a basic obligation. This guide shows how to set up security.txt and coordinated vulnerability disclosure (CVD) — and why a security scan continuously monitors the file's presence and expiry date.

What security.txt Is and Which Problem RFC 9116 Solves

security.txt is a machine- and human-readable text file located at a standardized path: https://your-domain.com/.well-known/security.txt. It answers one decisive question: how does an external finder report a security gap without guessing? Before RFC 9116, researchers had to track down the right contact through contact forms, LinkedIn, or generic info@ addresses — friction that causes reports to land in spam or never be sent at all.

The standard was adopted as RFC 9116 by the IETF in 2022 (IETF 2022). It defines a simple key-value format: each line consists of a field name, a colon, and a value. The file must be served over HTTPS and located at the canonical path /.well-known/security.txt — an additional fallback in the web root (/security.txt) is permitted, but /.well-known/ is the intended location. This puts the information exactly where automated scanners and researchers look first.

The benefit is asymmetric: publishing takes minutes, while the payoff in an emergency is hours or days of saved response time. A researcher who finds a reporting channel is more likely to disclose in a coordinated way — instead of going public out of frustration. In 2024, a prominent case made headlines when a researcher broke with coordinated disclosure after failing to reach anyone (DARKNAVY 2024). A clear channel reduces exactly this friction.

The Fields of security.txt: Required, Optional, and Useful

RFC 9116 distinguishes between a few mandatory fields and a set of optional ones. Only two are strictly required: Contact (one or more) and Expires (exactly once). All other fields increase the value but are not mandatory (IETF 2022). The overview below shows the key fields and their purpose.

FieldStatusPurpose / Example
ContactRequiredReporting channel — mailto:, https:, or tel:. Example: Contact: mailto:security@your-domain.com
ExpiresRequiredExpiry date of the file (RFC 3339). Recommended less than one year in the future
EncryptionOptionalLink to the PGP key for encrypted reports
PolicyOptionalLink to the vulnerability disclosure policy
AcknowledgmentsOptionalHall-of-fame page for reporting researchers
Preferred-LanguagesOptionalPreferred languages, e.g. en, de
CanonicalOptionalCanonical URL of the file (against confusion)
Do not forget Expires

The Expires field is mandatory and may appear only once. The most common error in practice is an expiry date in the past (URIports 2025) — an outdated file is arguably more harmful than none, because researchers may assume the contact details are invalid. RFC 9116 recommends a value less than one year in the future (IETF 2022). So set yourself a renewal reminder — or have the expiry date monitored automatically.

/.well-known/security.txt (example)
Contact: mailto:security@your-domain.com
Contact: https://your-domain.com/security-contact
Expires: 2026-12-31T23:59:00.000Z
Encryption: https://your-domain.com/pgp-key.txt
Policy: https://your-domain.com/security-policy
Acknowledgments: https://your-domain.com/hall-of-fame
Preferred-Languages: en, de
Canonical: https://your-domain.com/.well-known/security.txt

RFC 9116 additionally recommends signing the file with a PGP key (-----BEGIN PGP SIGNATURE-----) so that its authenticity is verifiable. Germany's BSI names exactly this combination — security.txt with contact address, PGP key, and reporting URL — as recommended practice in its CVD guideline (BSI). The signature is not a mandatory field, but it makes sense for high-protection needs because it makes a tampered file detectable.

Coordinated Vulnerability Disclosure: The Process Behind the File

security.txt is only the front door. Behind it sits the actual process: coordinated vulnerability disclosure (CVD). CVD describes how a reported vulnerability is fixed in coordination between finder and operator before details become public. The BSI has published its own CVD guideline and operates a central reporting office (BSI). At the EU level, the Cyber Resilience Act explicitly requires manufacturers of digital products to maintain a coordinated vulnerability disclosure policy (CRA, EU).

A resilient CVD process involves more than an email address. It governs how reports are acknowledged, within what timeframe an initial response is given, how status is communicated, and under which conditions a so-called safe harbor applies — that is, the assurance that good-faith research will not be prosecuted. The OWASP Vulnerability Disclosure Cheat Sheet describes these building blocks as a minimum standard for operators (OWASP).

Intake & acknowledgment

The Contact channel from security.txt must be actively monitored. An automatic acknowledgment signals that the report has arrived.

Disclosure policy

A linked policy (Policy field) defines scope, permitted tests, and safe harbor. It creates legal certainty for both sides.

Response times

Defined timeframes for first response and remediation prevent frustration. If a response fails to come, uncoordinated disclosure tends to follow (DARKNAVY 2024).

Recognition

An acknowledgments page or an optional reward-free program honors reporters — even that lowers the barrier to coordinated reporting (BSI).

How Widespread Adoption Really Is — and Where It Falls Short

The adoption figures are sobering but trending up. Among the top 1M domains, the share with security.txt rose from 0.7% (6,816 domains) in April 2024 to 1.25% (12,510 domains) in 2025 (URIports 2025) — nearly a doubling, but still a single-digit per-mille range across the entire domain universe. Even among large IT companies the gap is wide: in one sample, 39 of 50 IT firms tested (78%) failed to serve an RFC 9116-compliant security.txt (Hartwork Blog 2025).

More important than existence is quality. Of the domains that publish a security.txt at all, only 44% meet the RFC requirements (URIports 2025). The most common error sources: an expired or missing Expires field, missing HTTPS delivery, an incorrect path outside /.well-known/, or a file with the wrong content type. A formally present but faulty file conveys a false sense of security.

File missing entirely

Without security.txt, researchers search manually — or give up. Only 1.25% of the top 1M domains have the file (URIports 2025).

Expires elapsed

The most common conformance issue is an expiry date in the past (URIports 2025). The file then looks abandoned.

Not RFC-compliant

Only 44% of existing files are RFC-compliant (URIports 2025) — wrong path, missing mandatory fields, or no HTTPS.

Separate per subdomain

Each host needs its own file. shop., www., and api. of a domain are checked independently — one central file is not enough.

Cyber Resilience Act and NIS2: Why CVD Is Becoming Mandatory

The regulatory tailwind is substantial. The EU Cyber Resilience Act (CRA) requires manufacturers of products with digital elements to maintain a coordinated vulnerability disclosure policy with a clear reporting channel — full application of the requirements applies from 11 December 2027 (CRA, EU). The CVD policy is one of eight vulnerability-handling requirements that must be in place by then (CRA, Article 14).

The CRA explicitly recommends publishing security policies in machine-readable form — and security.txt is the established format for exactly that. In parallel, the EU launched ENISA's European Vulnerability Database (EUVD) in 2025 to consolidate information on vulnerabilities affecting the EU market (ENISA). According to ENISA, 21.3% of security incidents in Europe in early 2025 were traced to the exploitation of vulnerabilities (ENISA) — direct evidence of why a working reporting path matters.

Authorities lead by example

The US agency CISA operates a VDP platform for federal agencies. In fiscal year 2025 alone, it received more than 12,800 vulnerability reports, of which over 1,200 were valid and 1,099 (90%) were remediated (CISA 2025). This shows: an official reporting channel produces actionable leads — provided it is discoverable and maintained.

Nationally, the framework is becoming more concrete too: the NIS2 Directive and its implementation raise the requirements for vulnerability handling across many companies. The BSI recommends security.txt with contact address, PGP key, and reporting URL as a first step — even for smaller organizations without a large budget (BSI). A reward-free CVD program or a simple security.txt is thus an inexpensive way to align with upcoming EU rules.

Setting Up security.txt: Step by Step

Setup usually takes less than 15 minutes. The following order has proven effective — from the file through the process to permanent monitoring.

  1. Create a mailbox — set up a monitored address such as security@your-domain.com, ideally with an auto-reply as acknowledgment
  2. Set the mandatory fields — at least Contact and Expires; the expiry date less than one year in the future (IETF 2022)
  3. Place the file — at /.well-known/security.txt, served over HTTPS with content type text/plain
  4. Add optional fields — Policy (link the policy), Encryption (PGP key), Preferred-Languages, Canonical
  5. Sign it — sign the file with PGP, as recommended by the BSI (BSI), to make tampering detectable
  6. Write a disclosure policy — define scope, permitted tests, response times, and safe harbor (OWASP)
  7. Check per host — each public subdomain needs its own reachable file
  8. Monitor — automatically check presence, RFC conformance, and expiry date so the file does not silently expire
From an entry to a reliable reporting path

A security.txt is quickly set up — the real value only emerges when the process behind it works and the file stays current. An expired Expires field or a file accidentally deleted during a relaunch makes the entire reporting path invisible. This silent drift is exactly the risk that continuous monitoring addresses.

Monitoring Presence and Expiry: Where the Security Scan Comes In

A security.txt is not set-and-forget. It disappears during relaunches, server migrations, or CMS updates, and its expiry date inevitably elapses. Without monitoring, this only surfaces when a researcher cannot find contact details — exactly at the wrong moment. The XICTRAQ security scan checks the file's presence at /.well-known/security.txt, validates the mandatory fields, and monitors the Expires date so you are warned before it expires.

security.txt is one component of a broader security-headers and compliance check. If the file disappears, the expiry date lapses, or the content changes unexpectedly, you receive a notification via email, Slack, Discord, or Telegram — before it becomes a friction point in an emergency. This keeps the reporting path discoverable over time.

The reporting channel plugs into an end-to-end control chain: security.txt tells researchers how to report — the remaining security headers and script controls close the gaps that attacks run through in the first place. The following articles explore how these layers interact.

HTTP security headers

security.txt governs reporting, headers govern browser behavior. The basics are explained in the article on HTTP security headers.

Content Security Policy

A CSP limits which resources may load. How to build one is shown in the guide to Content Security Policy.

Third-party scripts

External scripts are a common entry point. The risk is described in the article on third-party scripts.

Subresource Integrity

SRI prevents tampered embedded files. Monitoring is explained in the article on Subresource Integrity.

Anyone also securing their interfaces will find further guidance in the article on GraphQL API monitoring and on DNS propagation monitoring with multiple resolvers. Together with a maintained reporting channel and solid GDPR compliance, this forms a verifiable, multi-layered protection base.

Keeping the Reporting Path Discoverable Over Time

security.txt is one of the few security features with a nearly unbeatable effort-to-benefit ratio: minutes of setup against potentially hours of saved response time in an emergency. With the Cyber Resilience Act, the underlying CVD process becomes mandatory for many manufacturers from December 2027 anyway (CRA, EU) — those who start now build routine before the deadline bites.

The real challenge is not creating the file but keeping it current. An expired Expires, a file lost during a relaunch, or a security.txt placed only on the main domain but not on subdomains makes the reporting path invisible — and no one notices until it is too late. This is exactly where automated monitoring comes in: it checks presence, conformance, and expiry continuously and reports any deviation before it becomes a problem.

Combined with monitoring your security headers, script integrity, and API endpoints, this creates seamless control over the security layer of your online presence — from the front door for researchers to the technical safeguards behind it.

Sources and studies

This article is based on data from: IETF (RFC 9116, 2022), URIports (security.txt adoption and conformance 2025), Hartwork Blog (security.txt at IT companies 2025), CISA (VDP platform Year in Review 2025), ENISA (coordinated vulnerability disclosure, EUVD, incident statistics 2025), EU Cyber Resilience Act (Article 14, application from 11 Dec 2027), BSI (CVD guideline and security.txt recommendation), OWASP (Vulnerability Disclosure Cheat Sheet), Deepstrike (CVE statistics H1 2025), DARKNAVY (disclosure frustration 2024).

Frequently Asked Questions About security.txt and Vulnerability Disclosure

Is a security.txt file legally required?
The file itself is not currently mandated directly. However, the EU Cyber Resilience Act requires many manufacturers of digital products to maintain a coordinated vulnerability disclosure policy from 11 December 2027 and recommends a machine-readable form (CRA, EU) — and security.txt is the established format for that. For many organizations it is therefore typically a sensible and inexpensive first step toward compliance.
Which fields must a security.txt contain at minimum?
Under RFC 9116, only two fields are mandatory: Contact (one or more) and Expires (exactly once). All other fields such as Policy, Encryption, or Preferred-Languages are optional but typically increase practical value (IETF 2022). The Expires field should, as a rule, be less than one year in the future.
Why is an expired Expires date a problem?
An expiry date in the past is the most common conformance error (URIports 2025). An expired file looks abandoned, so researchers may assume the contact details are invalid. An outdated file is therefore arguably more problematic than a missing one — which is why automated expiry monitoring is advisable.
Where exactly must the file be located?
The canonical path is /.well-known/security.txt, served over HTTPS. An additional entry in the web root is permitted as a fallback but does not replace the standard path. Importantly, the file must exist per host: subdomains such as shop. or api. are usually checked independently and each needs its own reachable file.
Do I need a bug bounty program for CVD?
No. Coordinated vulnerability disclosure does not require a paid bug bounty program. A reward-free reporting channel with a clear policy also serves the purpose and is a workable entry point, especially for smaller organizations (BSI). What matters is a reachable contact, defined response times, and ideally a safe-harbor assurance.
How can a security.txt be monitored over time?
An automated check that continuously verifies presence, RFC conformance, and the Expires date and warns before expiry is advisable. Manual spot checks typically miss creeping drift until the file disappears during a relaunch or the expiry date has passed. A security scan can trigger a notification as soon as something changes about the reporting path.

Related in XICTRAQ

Start in 60 seconds

Let XICTRAQ watch your website.

Permanent free plan available. No credit card, no installation, no hidden fees.