rfc9116.original | rfc9116.txt | |||
---|---|---|---|---|
Network Working Group E. Foudil | Internet Engineering Task Force (IETF) E. Foudil | |||
Internet-Draft | Request for Comments: 9116 | |||
Intended status: Informational Y. Shafranovich | Category: Informational Y. Shafranovich | |||
Expires: 25 November 2021 Nightwatch Cybersecurity | ISSN: 2070-1721 Nightwatch Cybersecurity | |||
24 May 2021 | April 2022 | |||
A File Format to Aid in Security Vulnerability Disclosure | A File Format to Aid in Security Vulnerability Disclosure | |||
draft-foudil-securitytxt-12 | ||||
Abstract | Abstract | |||
When security vulnerabilities are discovered by researchers, proper | When security vulnerabilities are discovered by researchers, proper | |||
reporting channels are often lacking. As a result, vulnerabilities | reporting channels are often lacking. As a result, vulnerabilities | |||
may be left unreported. This document defines a machine-parsable | may be left unreported. This document defines a machine-parsable | |||
format ("security.txt") to help organizations describe their | format ("security.txt") to help organizations describe their | |||
vulnerability disclosure practices to make it easier for researchers | vulnerability disclosure practices to make it easier for researchers | |||
to report vulnerabilities. | to report vulnerabilities. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
provisions of BCP 78 and BCP 79. | published for informational purposes. | |||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Not all documents | |||
approved by the IESG are candidates for any level of Internet | ||||
Standard; see Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 25 November 2021. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9116. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Simplified BSD License text | to this document. Code Components extracted from this document must | |||
as described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Simplified BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
1.1. Motivation, Prior Work and Scope . . . . . . . . . . . . 3 | 1.1. Motivation, Prior Work, and Scope | |||
1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.2. Terminology | |||
2. Note to Readers . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. The Specification | |||
3. The Specification . . . . . . . . . . . . . . . . . . . . . . 5 | 2.1. Comments | |||
3.1. Comments . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.2. Line Separator | |||
3.2. Line Separator . . . . . . . . . . . . . . . . . . . . . 6 | 2.3. Digital Signature | |||
3.3. Digital signature . . . . . . . . . . . . . . . . . . . . 6 | 2.4. Extensibility | |||
3.4. Extensibility . . . . . . . . . . . . . . . . . . . . . . 6 | 2.5. Field Definitions | |||
3.5. Field Definitions . . . . . . . . . . . . . . . . . . . . 6 | 2.5.1. Acknowledgments | |||
3.5.1. Acknowledgments . . . . . . . . . . . . . . . . . . . 6 | 2.5.2. Canonical | |||
3.5.2. Canonical . . . . . . . . . . . . . . . . . . . . . . 7 | 2.5.3. Contact | |||
3.5.3. Contact . . . . . . . . . . . . . . . . . . . . . . . 7 | 2.5.4. Encryption | |||
3.5.4. Encryption . . . . . . . . . . . . . . . . . . . . . 8 | 2.5.5. Expires | |||
3.5.5. Expires . . . . . . . . . . . . . . . . . . . . . . . 9 | 2.5.6. Hiring | |||
3.5.6. Hiring . . . . . . . . . . . . . . . . . . . . . . . 9 | 2.5.7. Policy | |||
3.5.7. Policy . . . . . . . . . . . . . . . . . . . . . . . 9 | 2.5.8. Preferred-Languages | |||
3.5.8. Preferred-Languages . . . . . . . . . . . . . . . . . 9 | 2.6. Example of an Unsigned "security.txt" File | |||
3.6. Example of an unsigned "security.txt" file . . . . . . . 10 | 2.7. Example of a Signed "security.txt" File | |||
3.7. Example of a signed "security.txt" file . . . . . . . . . 10 | 3. Location of the security.txt File | |||
4. Location of the security.txt file . . . . . . . . . . . . . . 11 | 3.1. Scope of the File | |||
4.1. Scope of the File . . . . . . . . . . . . . . . . . . . . 11 | 4. File Format Description and ABNF Grammar | |||
5. File Format Description and ABNF Grammar . . . . . . . . . . 12 | 5. Security Considerations | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 5.1. Compromised Files and Incident Response | |||
6.1. Compromised Files and Incident Response . . . . . . . . . 14 | 5.2. Redirects | |||
6.2. Redirects . . . . . . . . . . . . . . . . . . . . . . . . 14 | 5.3. Incorrect or Stale Information | |||
6.3. Incorrect or Stale Information . . . . . . . . . . . . . 14 | 5.4. Intentionally Malformed Files, Resources, and Reports | |||
6.4. Intentionally Malformed Files, Resources and Reports . . 15 | 5.5. No Implied Permission for Testing | |||
6.5. No Implied Permission for Testing . . . . . . . . . . . . 15 | 5.6. Multi-User Environments | |||
6.6. Multi-user Environments . . . . . . . . . . . . . . . . . 15 | 5.7. Protecting Data in Transit | |||
6.7. Protecting Data in Transit . . . . . . . . . . . . . . . 16 | 5.8. Spam and Spurious Reports | |||
6.8. Spam and Spurious Reports . . . . . . . . . . . . . . . . 16 | 6. IANA Considerations | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | 6.1. Well-Known URIs Registry | |||
7.1. Well-Known URIs registry . . . . . . . . . . . . . . . . 17 | 6.2. Registry for security.txt Fields | |||
7.2. Registry for security.txt Fields . . . . . . . . . . . . 17 | 7. References | |||
8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 19 | 7.1. Normative References | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 7.2. Informative References | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 19 | Acknowledgments | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 21 | Authors' Addresses | |||
Appendix A. Note to Readers . . . . . . . . . . . . . . . . . . 22 | ||||
Appendix B. Document History . . . . . . . . . . . . . . . . . . 22 | ||||
B.1. Since draft-foudil-securitytxt-00 . . . . . . . . . . . . 23 | ||||
B.2. Since draft-foudil-securitytxt-01 . . . . . . . . . . . . 23 | ||||
B.3. Since draft-foudil-securitytxt-02 . . . . . . . . . . . . 23 | ||||
B.4. Since draft-foudil-securitytxt-03 . . . . . . . . . . . . 24 | ||||
B.5. Since draft-foudil-securitytxt-04 . . . . . . . . . . . . 24 | ||||
B.6. Since draft-foudil-securitytxt-05 . . . . . . . . . . . . 25 | ||||
B.7. Since draft-foudil-securitytxt-06 . . . . . . . . . . . . 25 | ||||
B.8. Since draft-foudil-securitytxt-07 . . . . . . . . . . . . 25 | ||||
B.9. Since draft-foudil-securitytxt-08 . . . . . . . . . . . . 26 | ||||
B.10. Since draft-foudil-securitytxt-09 . . . . . . . . . . . . 26 | ||||
B.11. Since draft-foudil-securitytxt-10 . . . . . . . . . . . . 26 | ||||
B.12. Since draft-foudil-securitytxt-11 . . . . . . . . . . . . 26 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27 | ||||
1. Introduction | 1. Introduction | |||
1.1. Motivation, Prior Work and Scope | 1.1. Motivation, Prior Work, and Scope | |||
Many security researchers encounter situations where they are unable | Many security researchers encounter situations where they are unable | |||
to report security vulnerabilities to organizations because there are | to report security vulnerabilities to organizations because there are | |||
no reporting channels to contact the owner of a particular resource | no reporting channels to contact the owner of a particular resource, | |||
and no information available about the vulnerability disclosure | and no information is available about the vulnerability disclosure | |||
practices of such owner. | practices of such owner. | |||
As per section 4 of [RFC2142], there is an existing convention of | As per Section 4 of [RFC2142], there is an existing convention of | |||
using the <SECURITY@domain> email address for communications | using the <SECURITY@domain> email address for communications | |||
regarding security issues. That convention provides only a single, | regarding security issues. That convention provides only a single, | |||
email-based channel of communication per domain, and does not provide | email-based channel of communication per domain and does not provide | |||
a way for domain owners to publish information about their security | a way for domain owners to publish information about their security | |||
disclosure practices. | disclosure practices. | |||
There are also contact conventions prescribed for Internet Service | There are also contact conventions prescribed for Internet Service | |||
Providers (ISPs) in section 2 of [RFC3013], for Computer Security | Providers (ISPs) in Section 2 of [RFC3013], for Computer Security | |||
Incident Response Teams (CSIRTs) in section 3.2 of [RFC2350] and for | Incident Response Teams (CSIRTs) in Section 3.2 of [RFC2350], and for | |||
site operators in section 5.2 of [RFC2196]. As per [RFC7485], there | site operators in Section 5.2 of [RFC2196]. As per [RFC7485], there | |||
is also contact information provided by Regional Internet Registries | is also contact information provided by Regional Internet Registries | |||
(RIRs) and domain registries for owners of IP addresses, autonomous | (RIRs) and domain registries for owners of IP addresses, Autonomous | |||
system numbers (ASNs), and domain names. However, none of these | System Numbers (ASNs), and domain names. However, none of these | |||
tackle the issue of how security researchers can locate contact | tackle the issue of how security researchers can locate contact | |||
information and vulnerability disclosure practices for organizations | information and vulnerability disclosure practices for organizations | |||
in order to report vulnerabilities. | in order to report vulnerabilities. | |||
In this document, we define a richer, machine-parsable and more | In this document, we define a richer, machine-parsable, and more | |||
extensible way for organizations to communicate information about | extensible way for organizations to communicate information about | |||
their security disclosure practices and ways to contact them. Other | their security disclosure practices and ways to contact them. Other | |||
details of vulnerability disclosure are outside the scope of this | details of vulnerability disclosure are outside the scope of this | |||
document. Readers are encouraged to consult other documents such as | document. Readers are encouraged to consult other documents such as | |||
[ISO.29147.2018] or [CERT.CVD]. | [ISO.29147.2018] or [CERT.CVD]. | |||
As per [CERT.CVD], "vulnerability response" refers to reports of | As per [CERT.CVD], "vulnerability response" refers to reports of | |||
product vulnerabilities which is related but distinct from reports of | product vulnerabilities, which is related to but distinct from | |||
network intrusions and compromised websites ("incident response"). | reports of network intrusions and compromised websites ("incident | |||
The mechanism defined in this document is intended to be used for the | response"). The mechanism defined in this document is intended to be | |||
former ("vulnerability response"). If implementors want to utilize | used for the former ("vulnerability response"). If implementors want | |||
this mechanism for incident response, they should be aware of | to utilize this mechanism for incident response, they should be aware | |||
additional security considerations discussed in Section 6.1. | of additional security considerations discussed in Section 5.1. | |||
The "security.txt" file is intended to be complementary and not as a | The "security.txt" file is intended to be complementary and not a | |||
substitute or replacement for other public resources maintained by | substitute or replacement for other public resources maintained by | |||
organizations regarding their security disclosure practices. | organizations regarding their security disclosure practices. | |||
1.2. Terminology | 1.2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
The term "researcher" corresponds to the terms "finder" and | The term "researcher" corresponds to the terms "finder" and | |||
"reporter" in [ISO.29147.2018] and [CERT.CVD]. The term | "reporter" in [ISO.29147.2018] and [CERT.CVD]. The term | |||
"organization" corresponds to the term "vendor" in [ISO.29147.2018] | "organization" corresponds to the term "vendor" in [ISO.29147.2018] | |||
and [CERT.CVD]. | and [CERT.CVD]. | |||
The term "implementors" includes all parties involved in the | The term "implementors" includes all parties involved in the | |||
vulnerability disclosure process. | vulnerability disclosure process. | |||
2. Note to Readers | 2. The Specification | |||
*Note to the RFC Editor:* Please remove this section prior to | ||||
publication. | ||||
Development of this draft takes place on Github at: | ||||
https://github.com/securitytxt/security-txt | ||||
3. The Specification | ||||
This document defines a text file to be placed in a known location | This document defines a text file to be placed in a known location | |||
that provides information about vulnerability disclosure practices of | that provides information about vulnerability disclosure practices of | |||
a particular organization. The format of this file is machine- | a particular organization. The format of this file is machine | |||
parsable and MUST follow the ABNF grammar defined in Section 5. This | parsable and MUST follow the ABNF grammar defined in Section 4. This | |||
file is intended to help security researchers when disclosing | file is intended to help security researchers when disclosing | |||
security vulnerabilities. | security vulnerabilities. | |||
By convention, the file is named "security.txt". Location and scope | By convention, the file is named "security.txt". The location and | |||
are described in Section 4. | scope are described in Section 3. | |||
This text file contains multiple fields with different values. A | This text file contains multiple fields with different values. A | |||
field contains a "name" which is the first part of a field all the | field contains a "name", which is the first part of a field all the | |||
way up to the colon (for example: "Contact:") and follows the syntax | way up to the colon (for example: "Contact:") and follows the syntax | |||
defined for "field-name" in section 3.6.8 of [RFC5322]. Field names | defined for "field-name" in Section 3.6.8 of [RFC5322]. Field names | |||
are case-insensitive (as per section 2.3 of [RFC5234]). The "value" | are case insensitive (as per Section 2.3 of [RFC5234]). The "value" | |||
comes after the field name (for example: | comes after the field name (for example: | |||
"mailto:security@example.com") and follows the syntax defined for | "mailto:security@example.com") and follows the syntax defined for | |||
"unstructured" in section 3.2.5 of [RFC5322]. The file MAY also | "unstructured" in Section 3.2.5 of [RFC5322]. The file MAY also | |||
contain blank lines. | contain blank lines. | |||
A field MUST always consist of a name and a value (for example: | A field MUST always consist of a name and a value (for example: | |||
"Contact: mailto:security@example.com"). A "security.txt" file can | "Contact: mailto:security@example.com"). A "security.txt" file can | |||
have an unlimited number of fields. Each field MUST appear on its | have an unlimited number of fields. Each field MUST appear on its | |||
own line. Unless specified otherwise by the field definition, | own line. Unless otherwise specified by the field definition, | |||
multiple values MUST NOT be chained together for a single field. | multiple values MUST NOT be chained together for a single field. | |||
Unless otherwise indicated in a definition of a particular field, a | Unless otherwise indicated in a definition of a particular field, a | |||
field MAY appear multiple times. | field MAY appear multiple times. | |||
Implementors should be aware that some of the fields may contain URIs | Implementors should be aware that some of the fields may contain URIs | |||
using percent-encoding (as per section 2.1 of [RFC3986]). | using percent-encoding (as per Section 2.1 of [RFC3986]). | |||
3.1. Comments | 2.1. Comments | |||
Any line beginning with the "#" (%x23) symbol MUST be interpreted as | Any line beginning with the "#" (%x23) symbol MUST be interpreted as | |||
a comment. The content of the comment may contain any ASCII or | a comment. The content of the comment may contain any ASCII or | |||
Unicode characters in the %x21-7E and %x80-FFFFF ranges plus the tab | Unicode characters in the %x21-7E and %x80-FFFFF ranges plus the tab | |||
(%x09) and space (%x20) characters. | (%x09) and space (%x20) characters. | |||
Example: | Example: | |||
# This is a comment. | # This is a comment. | |||
3.2. Line Separator | 2.2. Line Separator | |||
Every line MUST end either with a carriage return and line feed | Every line MUST end with either a carriage return and line feed | |||
characters (CRLF / %x0D %x0A) or just a line feed character (LF / | characters (CRLF / %x0D %x0A) or just a line feed character (LF / | |||
%x0A). | %x0A). | |||
3.3. Digital signature | 2.3. Digital Signature | |||
It is RECOMMENDED that a "security.txt" file be digitally signed | It is RECOMMENDED that a "security.txt" file be digitally signed | |||
using an OpenPGP cleartext signature as described in section 7 of | using an OpenPGP cleartext signature as described in Section 7 of | |||
[RFC4880]. When digital signatures are used, it is also RECOMMENDED | [RFC4880]. When digital signatures are used, it is also RECOMMENDED | |||
that organizations use the "Canonical" field (as per Section 3.5.2), | that organizations use the "Canonical" field (as per Section 2.5.2), | |||
thus allowing the digital signature to authenticate the location of | thus allowing the digital signature to authenticate the location of | |||
the file. | the file. | |||
When it comes to verifying the key used to generate the signature, it | When it comes to verifying the key used to generate the signature, it | |||
is always the security researcher's responsibility to make sure the | is always the security researcher's responsibility to make sure the | |||
key being used is indeed one they trust. | key being used is indeed one they trust. | |||
3.4. Extensibility | 2.4. Extensibility | |||
Like many other formats and protocols, this format may need to be | Like many other formats and protocols, this format may need to be | |||
extended over time to fit the ever-changing landscape of the | changed over time to fit the ever-changing landscape of the Internet. | |||
Internet. Therefore, extensibility is provided via an IANA registry | Therefore, extensibility is provided via an IANA registry for fields | |||
for fields as defined in Section 7.2. Any fields registered via that | as defined in Section 6.2. Any fields registered via that process | |||
process MUST be considered optional. To encourage extensibility and | MUST be considered optional. To encourage extensibility and | |||
interoperability, researchers MUST ignore any fields they do not | interoperability, researchers MUST ignore any fields they do not | |||
explicitly support. | explicitly support. | |||
In general, implementors should "be conservative in what you do, be | In general, implementors should "be conservative in what you do, be | |||
liberal in what you accept from others" (as per [RFC0793]). | liberal in what you accept from others" (as per [RFC0793]). | |||
3.5. Field Definitions | 2.5. Field Definitions | |||
Unless otherwise stated, all fields MUST be considered optional. | Unless otherwise stated, all fields MUST be considered optional. | |||
3.5.1. Acknowledgments | 2.5.1. Acknowledgments | |||
This field indicates a link to a page where security researchers are | The "Acknowledgments" field indicates a link to a page where security | |||
recognized for their reports. The page being referenced should list | researchers are recognized for their reports. The page being | |||
security researchers that reported security vulnerabilities and | referenced should list security researchers that reported security | |||
collaborated to remediate them. Organizations should be careful to | vulnerabilities and collaborated to remediate them. Organizations | |||
limit the vulnerability information being published in order to | should be careful to limit the vulnerability information being | |||
prevent future attacks. | published in order to prevent future attacks. | |||
If this field indicates a web URI, then it MUST begin with "https://" | If this field indicates a web URI, then it MUST begin with "https://" | |||
(as per section 2.7.2 of [RFC7230]). | (as per Section 2.7.2 of [RFC7230]). | |||
Example: | Example: | |||
Acknowledgments: https://example.com/hall-of-fame.html | Acknowledgments: https://example.com/hall-of-fame.html | |||
Example security acknowledgments page: | Example security acknowledgments page: | |||
We would like to thank the following researchers: | We would like to thank the following researchers: | |||
(2017-04-15) Frank Denis - Reflected cross-site scripting | (2017-04-15) Frank Denis - Reflected cross-site scripting | |||
(2017-01-02) Alice Quinn - SQL injection | (2017-01-02) Alice Quinn - SQL injection | |||
(2016-12-24) John Buchner - Stored cross-site scripting | (2016-12-24) John Buchner - Stored cross-site scripting | |||
(2016-06-10) Anna Richmond - A server configuration issue | (2016-06-10) Anna Richmond - A server configuration issue | |||
3.5.2. Canonical | 2.5.2. Canonical | |||
This field indicates the canonical URIs where the "security.txt" file | The "Canonical" field indicates the canonical URIs where the | |||
is located, which is usually something like | "security.txt" file is located, which is usually something like | |||
"https://example.com/.well-known/security.txt". If this field | "https://example.com/.well-known/security.txt". If this field | |||
indicates a web URI, then it MUST begin with "https://" (as per | indicates a web URI, then it MUST begin with "https://" (as per | |||
section 2.7.2 of [RFC7230]). | Section 2.7.2 of [RFC7230]). | |||
While this field indicates that a "security.txt" retrieved from a | While this field indicates that a "security.txt" retrieved from a | |||
given URI is intended to apply to that URI, it MUST NOT be | given URI is intended to apply to that URI, it MUST NOT be | |||
interpreted to apply to all canonical URIs listed within the file. | interpreted to apply to all canonical URIs listed within the file. | |||
Researchers SHOULD use an additional trust mechanism such as a | Researchers SHOULD use an additional trust mechanism such as a | |||
digital signature (as per Section 3.3) to make the determination that | digital signature (as per Section 2.3) to make the determination that | |||
a particular canonical URI is applicable. | a particular canonical URI is applicable. | |||
If this field appears within a "security.txt" file, and the URI used | If this field appears within a "security.txt" file and the URI used | |||
to retrieve that file is not listed within any canonical fields, then | to retrieve that file is not listed within any canonical fields, then | |||
the contents of the file SHOULD NOT be trusted. | the contents of the file SHOULD NOT be trusted. | |||
Canonical: https://www.example.com/.well-known/security.txt | Canonical: https://www.example.com/.well-known/security.txt | |||
Canonical: https://someserver.example.com/.well-known/security.txt | Canonical: https://someserver.example.com/.well-known/security.txt | |||
3.5.3. Contact | 2.5.3. Contact | |||
This field indicates an address that researchers should use for | The "Contact" field indicates a method that researchers should use | |||
reporting security vulnerabilities such as an email address, a phone | for reporting security vulnerabilities such as an email address, a | |||
number and/or a web page with contact information. The "Contact" | phone number, and/or a web page with contact information. This field | |||
field MUST always be present in a "security.txt" file. If this field | MUST always be present in a "security.txt" file. If this field | |||
indicates a web URI, then it MUST begin with "https://" (as per | indicates a web URI, then it MUST begin with "https://" (as per | |||
section 2.7.2 of [RFC7230]). Security email addresses should use the | Section 2.7.2 of [RFC7230]). Security email addresses should use the | |||
conventions defined in section 4 of [RFC2142]. | conventions defined in Section 4 of [RFC2142]. | |||
The value MUST follow the URI syntax described in section 3 of | The value MUST follow the URI syntax described in Section 3 of | |||
[RFC3986]. This means that "mailto" and "tel" URI schemes must be | [RFC3986]. This means that "mailto" and "tel" URI schemes must be | |||
used when specifying email addresses and telephone numbers, as | used when specifying email addresses and telephone numbers, as | |||
defined in [RFC6068] and [RFC3966]. When the value of this field is | defined in [RFC6068] and [RFC3966]. When the value of this field is | |||
an email address, it is RECOMMENDED that encryption be used (as per | an email address, it is RECOMMENDED that encryption be used (as per | |||
Section 3.5.4). | Section 2.5.4). | |||
The precedence SHOULD be in listed order. The first occurrence is | These SHOULD be listed in order of preference, with the first | |||
the preferred method of contact. In the example below, the first | occurrence being the preferred method of contact, the second | |||
email address ("security@example.com") is the preferred method of | occurrence being the second most preferred method of contact, etc. | |||
contact. | In the example below, the first email address | |||
("security@example.com") is the preferred method of contact. | ||||
Contact: mailto:security@example.com | Contact: mailto:security@example.com | |||
Contact: mailto:security%2Buri%2Bencoded@example.com | Contact: mailto:security%2Buri%2Bencoded@example.com | |||
Contact: tel:+1-201-555-0123 | Contact: tel:+1-201-555-0123 | |||
Contact: https://example.com/security-contact.html | Contact: https://example.com/security-contact.html | |||
3.5.4. Encryption | 2.5.4. Encryption | |||
This field indicates an encryption key that security researchers | The "Encryption" field indicates an encryption key that security | |||
should use for encrypted communication. Keys MUST NOT appear in this | researchers should use for encrypted communication. Keys MUST NOT | |||
field - instead the value of this field MUST be a URI pointing to a | appear in this field. Instead, the value of this field MUST be a URI | |||
location where the key can be retrieved. If this field indicates a | pointing to a location where the key can be retrieved. If this field | |||
web URI, then it MUST begin with "https://" (as per section 2.7.2 of | indicates a web URI, then it MUST begin with "https://" (as per | |||
[RFC7230]). | Section 2.7.2 of [RFC7230]). | |||
When it comes to verifying the authenticity of the key, it is always | When it comes to verifying the authenticity of the key, it is always | |||
the security researcher's responsibility to make sure the key being | the security researcher's responsibility to make sure the key being | |||
specified is indeed one they trust. Researchers must not assume that | specified is indeed one they trust. Researchers must not assume that | |||
this key is used to generate the digital signature referenced in | this key is used to generate the digital signature referenced in | |||
Section 3.3. | Section 2.3. | |||
Example of an OpenPGP key available from a web server: | Example of an OpenPGP key available from a web server: | |||
Encryption: https://example.com/pgp-key.txt | Encryption: https://example.com/pgp-key.txt | |||
Example of an OpenPGP key available from an OPENPGPKEY DNS record: | Example of an OpenPGP key available from an OPENPGPKEY DNS record: | |||
Encryption: dns:5d2d37ab76d47d36._openpgpkey.example.com?type=OPENPGPKEY | Encryption: dns:5d2d37ab76d47d36._openpgpkey.example.com?type=OPENPGPKEY | |||
Example of an OpenPGP key being referenced by its fingerprint: | Example of an OpenPGP key being referenced by its fingerprint: | |||
Encryption: openpgp4fpr:5f2de5521c63a801ab59ccb603d49de44b29100f | Encryption: openpgp4fpr:5f2de5521c63a801ab59ccb603d49de44b29100f | |||
3.5.5. Expires | 2.5.5. Expires | |||
This field indicates the date and time after which the data contained | The "Expires" field indicates the date and time after which the data | |||
in the "security.txt" file is considered stale and should not be used | contained in the "security.txt" file is considered stale and should | |||
(as per Section 6.3). The value of this field is formatted according | not be used (as per Section 5.3). The value of this field is | |||
to the Internet profile of [ISO.8601] as defined in [RFC3339]. It is | formatted according to the Internet profiles of [ISO.8601-1] and | |||
RECOMMENDED that the value of this field be less than a year into the | [ISO.8601-2] as defined in [RFC3339]. It is RECOMMENDED that the | |||
future to avoid staleness. | value of this field be less than a year into the future to avoid | |||
staleness. | ||||
This field MUST always be present and MUST NOT appear more than once. | This field MUST always be present and MUST NOT appear more than once. | |||
Expires: 2021-12-31T18:37:07z | Expires: 2021-12-31T18:37:07z | |||
3.5.6. Hiring | 2.5.6. Hiring | |||
The "Hiring" field is used for linking to the vendor's security- | The "Hiring" field is used for linking to the vendor's security- | |||
related job positions. If this field indicates a web URI, then it | related job positions. If this field indicates a web URI, then it | |||
MUST begin with "https://" (as per section 2.7.2 of [RFC7230]). | MUST begin with "https://" (as per Section 2.7.2 of [RFC7230]). | |||
Hiring: https://example.com/jobs.html | Hiring: https://example.com/jobs.html | |||
3.5.7. Policy | 2.5.7. Policy | |||
This field indicates a link to where the vulnerability disclosure | The "Policy" field indicates a link to where the vulnerability | |||
policy is located. This can help security researchers understand the | disclosure policy is located. This can help security researchers | |||
organization's vulnerability reporting practices. If this field | understand the organization's vulnerability reporting practices. If | |||
indicates a web URI, then it MUST begin with "https://" (as per | this field indicates a web URI, then it MUST begin with "https://" | |||
section 2.7.2 of [RFC7230]). | (as per Section 2.7.2 of [RFC7230]). | |||
Example: | Example: | |||
Policy: https://example.com/disclosure-policy.html | Policy: https://example.com/disclosure-policy.html | |||
3.5.8. Preferred-Languages | 2.5.8. Preferred-Languages | |||
This field can be used to indicate a set of natural languages that | The "Preferred-Languages" field can be used to indicate a set of | |||
are preferred when submitting security reports. This set MAY list | natural languages that are preferred when submitting security | |||
multiple values, separated by commas. If this field is included then | reports. This set MAY list multiple values, separated by commas. If | |||
at least one value MUST be listed. The values within this set are | this field is included, then at least one value MUST be listed. The | |||
language tags (as defined in [RFC5646]). If this field is absent, | values within this set are language tags (as defined in [RFC5646]). | |||
security researchers may assume that English is the language to be | If this field is absent, security researchers may assume that English | |||
used (as per section 4.5 of [RFC2277]). | is the language to be used (as per Section 4.5 of [RFC2277]). | |||
The order in which they appear is not an indication of priority; the | The order in which they appear is not an indication of priority; the | |||
listed languages are intended to have equal priority. | listed languages are intended to have equal priority. | |||
This field MUST NOT appear more than once. | This field MUST NOT appear more than once. | |||
Example (English, Spanish and French): | Example (English, Spanish and French): | |||
Preferred-Languages: en, es, fr | Preferred-Languages: en, es, fr | |||
3.6. Example of an unsigned "security.txt" file | 2.6. Example of an Unsigned "security.txt" File | |||
# Our security address | # Our security address | |||
Contact: mailto:security@example.com | Contact: mailto:security@example.com | |||
# Our OpenPGP key | # Our OpenPGP key | |||
Encryption: https://example.com/pgp-key.txt | Encryption: https://example.com/pgp-key.txt | |||
# Our security policy | # Our security policy | |||
Policy: https://example.com/security-policy.html | Policy: https://example.com/security-policy.html | |||
# Our security acknowledgments page | # Our security acknowledgments page | |||
Acknowledgments: https://example.com/hall-of-fame.html | Acknowledgments: https://example.com/hall-of-fame.html | |||
Expires: 2021-12-31T18:37:07z | Expires: 2021-12-31T18:37:07z | |||
3.7. Example of a signed "security.txt" file | 2.7. Example of a Signed "security.txt" File | |||
-----BEGIN PGP SIGNED MESSAGE----- | -----BEGIN PGP SIGNED MESSAGE----- | |||
Hash: SHA256 | Hash: SHA256 | |||
# Canonical URI | # Canonical URI | |||
Canonical: https://example.com/.well-known/security.txt | Canonical: https://example.com/.well-known/security.txt | |||
# Our security address | # Our security address | |||
Contact: mailto:security@example.com | Contact: mailto:security@example.com | |||
skipping to change at page 11, line 5 ¶ | skipping to change at line 433 ¶ | |||
# Our security acknowledgments page | # Our security acknowledgments page | |||
Acknowledgments: https://example.com/hall-of-fame.html | Acknowledgments: https://example.com/hall-of-fame.html | |||
Expires: 2021-12-31T18:37:07z | Expires: 2021-12-31T18:37:07z | |||
-----BEGIN PGP SIGNATURE----- | -----BEGIN PGP SIGNATURE----- | |||
Version: GnuPG v2.2 | Version: GnuPG v2.2 | |||
[signature] | [signature] | |||
-----END PGP SIGNATURE----- | -----END PGP SIGNATURE----- | |||
4. Location of the security.txt file | 3. Location of the security.txt File | |||
For web-based services, organizations MUST place the "security.txt" | For web-based services, organizations MUST place the "security.txt" | |||
file under the "/.well-known/" path; e.g. https://example.com/.well- | file under the "/.well-known/" path, e.g., https://example.com/.well- | |||
known/security.txt as per [RFC8615] of a domain name or IP address. | known/security.txt as per [RFC8615] of a domain name or IP address. | |||
For legacy compatibility, a security.txt file might be placed at the | For legacy compatibility, a "security.txt" file might be placed at | |||
top-level path or redirect (as per section 6.4 of [RFC7231]) to the | the top-level path or redirect (as per Section 6.4 of [RFC7231]) to | |||
"security.txt" file under the "/.well-known/" path. If a | the "security.txt" file under the "/.well-known/" path. If a | |||
"security.txt" file is present in both locations, the one in the | "security.txt" file is present in both locations, the one in the | |||
"/.well-known/" path MUST be used. | "/.well-known/" path MUST be used. | |||
The file MUST be accessed via HTTP 1.0 or a higher version and the | The file MUST be accessed via HTTP 1.0 or a higher version, and the | |||
file access MUST use "https" scheme (as per section 2.7.2 of | file access MUST use the "https" scheme (as per Section 2.7.2 of | |||
[RFC7230]). It MUST have a Content-Type of "text/plain" with the | [RFC7230]). It MUST have a Content-Type of "text/plain" with the | |||
default charset parameter set to "utf-8" (as per section 4.1.3 of | default charset parameter set to "utf-8" (as per Section 4.1.3 of | |||
[RFC2046]). | [RFC2046]). | |||
Retrieval of "security.txt" files and resources indicated within such | Retrieval of "security.txt" files and resources indicated within such | |||
files may result in a redirect (as per section 6.4 of [RFC7231]). | files may result in a redirect (as per Section 6.4 of [RFC7231]). | |||
Researchers should perform additional analysis (as per Section 6.2) | Researchers should perform additional analysis (as per Section 5.2) | |||
to make sure these redirects are not malicious or pointing to | to make sure these redirects are not malicious or pointing to | |||
resources controlled by an attacker. | resources controlled by an attacker. | |||
4.1. Scope of the File | 3.1. Scope of the File | |||
A "security.txt" file MUST only apply to the domain or IP address in | A "security.txt" file MUST only apply to the domain or IP address in | |||
the URI used to retrieve it, not to any of its subdomains or parent | the URI used to retrieve it, not to any of its subdomains or parent | |||
domains. A "security.txt" file MAY also apply to products and | domains. A "security.txt" file MAY also apply to products and | |||
services provided by the organization publishing the file. | services provided by the organization publishing the file. | |||
As per Section 1.1, this specification is intended for vulnerability | As per Section 1.1, this specification is intended for a | |||
response. If implementors want to use this for incident response, | vulnerability response. If implementors want to use this for an | |||
they should be aware of additional security considerations discussed | incident response, they should be aware of additional security | |||
in Section 6.1. | considerations discussed in Section 5.1. | |||
Organizations SHOULD use the policy directive (as per Section 3.5.7) | Organizations SHOULD use the policy directive (as per Section 2.5.7) | |||
to provide additional details regarding scope and details of their | to provide additional details regarding the scope and details of | |||
vulnerability disclosure process. | their vulnerability disclosure process. | |||
Some examples appear below: | Some examples appear below: | |||
# The following only applies to example.com. | # The following only applies to example.com. | |||
https://example.com/.well-known/security.txt | https://example.com/.well-known/security.txt | |||
# This only applies to subdomain.example.com. | # This only applies to subdomain.example.com. | |||
https://subdomain.example.com/.well-known/security.txt | https://subdomain.example.com/.well-known/security.txt | |||
# This security.txt file applies to IPv4 address of 192.0.2.0. | # This security.txt file applies to IPv4 address of 192.0.2.0. | |||
https://192.0.2.0/.well-known/security.txt | https://192.0.2.0/.well-known/security.txt | |||
# This security.txt file applies to IPv6 address of 2001:db8:8:4::2. | # This security.txt file applies to IPv6 address of 2001:db8:8:4::2. | |||
https://[2001:db8:8:4::2]/.well-known/security.txt | https://[2001:db8:8:4::2]/.well-known/security.txt | |||
5. File Format Description and ABNF Grammar | 4. File Format Description and ABNF Grammar | |||
The file format of the "security.txt" file MUST be plain text (MIME | The file format of the "security.txt" file MUST be plain text (MIME | |||
type "text/plain") as defined in section 4.1.3 of [RFC2046] and MUST | type "text/plain") as defined in Section 4.1.3 of [RFC2046] and MUST | |||
be encoded using UTF-8 [RFC3629] in Net-Unicode form [RFC5198]. | be encoded using UTF-8 [RFC3629] in Net-Unicode form [RFC5198]. | |||
The format of this file MUST follow the ABNF definition below (using | The format of this file MUST follow the ABNF definition below (which | |||
the conventions defined in [RFC5234]). | incorporates the core ABNF rules from [RFC5234] and uses the case- | |||
sensitive string support from [RFC7405]). | ||||
body = signed / unsigned | ||||
signed = sign-header unsigned sign-footer | ||||
sign-header = < headers and line from section 7 of [RFC4880] > | ||||
sign-footer = < OpenPGP signature from section 7 of [RFC4880] > | body = signed / unsigned | |||
unsigned = *line (contact-field eol) ; one or more required | unsigned = *line (contact-field eol) ; one or more required | |||
*line (expires-field eol) ; exactly one required | *line (expires-field eol) ; exactly one required | |||
*line [lang-field eol] *line ; exactly one optional | *line [lang-field eol] *line ; exactly one optional | |||
; order of fields within the file is not important | ; order of fields within the file is not important | |||
; except that if contact-field appears more | ; except that if contact-field appears more | |||
; than once the order of those indicates | ; than once, the order of those indicates | |||
; priority (see Section 3.5.3) | ; priority (see Section 3.5.3) | |||
line = [ (field / comment) ] eol | ; signed is the production that should match the OpenPGP clearsigned | |||
; document | ||||
signed = cleartext-header | ||||
1*(hash-header) | ||||
CRLF | ||||
cleartext | ||||
signature | ||||
eol = *WSP [CR] LF | cleartext-header = %s"-----BEGIN PGP SIGNED MESSAGE-----" CRLF | |||
field = ; optional fields | hash-header = %s"Hash: " hash-alg *("," hash-alg) CRLF | |||
ack-field / | ||||
can-field / | ||||
contact-field / ; optional repeated instances | ||||
encryption-field / | ||||
hiring-field / | ||||
policy-field / | ||||
ext-field | ||||
fs = ":" | hash-alg = token | |||
; imported from RFC 2045; see RFC 4880 Section | ||||
; 10.3.3 for a pointer to the registry of | ||||
; valid values | ||||
comment = "#" *(WSP / VCHAR / %x80-FFFFF) | ;cleartext = 1*( UTF8-octets [CR] LF) | |||
; dash-escaped per RFC 4880 Section 7.1 | ||||
ack-field = "Acknowledgments" fs SP uri | cleartext = *((line-dash / line-from / line-nodash) [CR] LF) | |||
can-field = "Canonical" fs SP uri | line-dash = ("- ") "-" *UTF8-char-not-cr | |||
; MUST include initial "- " | ||||
contact-field = "Contact" fs SP uri | line-from = ["- "] "From " *UTF8-char-not-cr | |||
; SHOULD include initial "- " | ||||
expires-field = "Expires" fs SP date-time | line-nodash = ["- "] *UTF8-char-not-cr | |||
; MAY include initial "- " | ||||
encryption-field = "Encryption" fs SP uri | UTF8-char-not-dash = UTF8-1-not-dash / UTF8-2 / UTF8-3 / UTF8-4 | |||
UTF8-1-not-dash = %x00-2C / %x2E-7F | ||||
UTF8-char-not-cr = UTF8-1-not-cr / UTF8-2 / UTF8-3 / UTF8-4 | ||||
UTF8-1-not-cr = %x00-0C / %x0E-7F | ||||
hiring-field = "Hiring" fs SP uri | ; UTF8 rules from RFC 3629 | |||
UTF8-octets = *( UTF8-char ) | ||||
UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4 | ||||
UTF8-1 = %x00-7F | ||||
UTF8-2 = %xC2-DF UTF8-tail | ||||
UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) / | ||||
%xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail ) | ||||
UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / | ||||
%xF1-F3 3( UTF8-tail ) / | ||||
%xF4 %x80-8F 2( UTF8-tail ) | ||||
UTF8-tail = %x80-BF | ||||
lang-field = "Preferred-Languages" fs SP lang-values | signature = armor-header | |||
armor-keys | ||||
CRLF | ||||
signature-data | ||||
armor-tail | ||||
policy-field = "Policy" fs SP uri | armor-header = %s"-----BEGIN PGP SIGNATURE-----" CRLF | |||
date-time = < imported from section 5.6 of [RFC3339] > | armor-keys = *(token ": " *( VCHAR / WSP ) CRLF) | |||
; Armor Header Keys from RFC 4880 | ||||
lang-tag = < Language-Tag from section 2.1 of [RFC5646] > | armor-tail = %s"-----END PGP SIGNATURE-----" CRLF | |||
lang-values = lang-tag *(*WSP "," *WSP lang-tag) | signature-data = 1*(1*(ALPHA / DIGIT / "=" / "+" / "/") CRLF) | |||
; base64; see RFC 4648 | ||||
; includes RFC 4880 checksum | ||||
uri = < URI as per section 3 of [RFC3986] > | line = [ (field / comment) ] eol | |||
ext-field = field-name fs SP unstructured | eol = *WSP [CR] LF | |||
field-name = < imported from section 3.6.8 of [RFC5322] > | field = ; optional fields | |||
ack-field / | ||||
can-field / | ||||
contact-field / ; optional repeated instances | ||||
encryption-field / | ||||
hiring-field / | ||||
policy-field / | ||||
ext-field | ||||
unstructured = < imported from section 3.2.5 of [RFC5322] > | fs = ":" | |||
comment = "#" *(WSP / VCHAR / %x80-FFFFF) | ||||
ack-field = "Acknowledgments" fs SP uri | ||||
can-field = "Canonical" fs SP uri | ||||
contact-field = "Contact" fs SP uri | ||||
expires-field = "Expires" fs SP date-time | ||||
encryption-field = "Encryption" fs SP uri | ||||
hiring-field = "Hiring" fs SP uri | ||||
lang-field = "Preferred-Languages" fs SP lang-values | ||||
policy-field = "Policy" fs SP uri | ||||
date-time = < imported from Section 5.6 of [RFC3339] > | ||||
lang-tag = < Language-Tag from Section 2.1 of [RFC5646] > | ||||
lang-values = lang-tag *(*WSP "," *WSP lang-tag) | ||||
uri = < URI as per Section 3 of [RFC3986] > | ||||
ext-field = field-name fs SP unstructured | ||||
field-name = < imported from Section 3.6.8 of [RFC5322] > | ||||
unstructured = < imported from Section 3.2.5 of [RFC5322] > | ||||
token = < imported from Section 5.1 of [RFC2045] > | ||||
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z | ||||
BIT = "0" / "1" | ||||
CHAR = %x01-7F | ||||
; any 7-bit US-ASCII character, | ||||
; excluding NUL | ||||
CR = %x0D | ||||
; carriage return | ||||
CRLF = CR LF | ||||
; Internet standard newline | ||||
CTL = %x00-1F / %x7F | ||||
; controls | ||||
DIGIT = %x30-39 | ||||
; 0-9 | ||||
DQUOTE = %x22 | ||||
; " (Double Quote) | ||||
HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F" | ||||
HTAB = %x09 | ||||
; horizontal tab | ||||
LF = %x0A | ||||
; linefeed | ||||
LWSP = *(WSP / CRLF WSP) | ||||
; Use of this linear-white-space rule | ||||
; permits lines containing only white | ||||
; space that are no longer legal in | ||||
; mail headers and have caused | ||||
; interoperability problems in other | ||||
; contexts. | ||||
; Do not use when defining mail | ||||
; headers and use with caution in | ||||
; other contexts. | ||||
OCTET = %x00-FF | ||||
; 8 bits of data | ||||
SP = %x20 | ||||
VCHAR = %x21-7E | ||||
; visible (printing) characters | ||||
WSP = SP / HTAB | ||||
; white space | ||||
"ext-field" refers to extension fields, which are discussed in | "ext-field" refers to extension fields, which are discussed in | |||
Section 3.4 | Section 2.4. | |||
6. Security Considerations | 5. Security Considerations | |||
Because of the use of URIs and well-known resources, security | Because of the use of URIs and well-known resources, security | |||
considerations of [RFC3986] and [RFC8615] apply here, in addition to | considerations of [RFC3986] and [RFC8615] apply here, in addition to | |||
the considerations outlined below. | the considerations outlined below. | |||
6.1. Compromised Files and Incident Response | 5.1. Compromised Files and Incident Response | |||
An attacker that has compromised a website is able to compromise the | An attacker that has compromised a website is able to compromise the | |||
"security.txt" file as well or setup a redirect to their own site. | "security.txt" file as well or set up a redirect to their own site. | |||
This can result in security reports not being received by the | This can result in security reports not being received by the | |||
organization or sent to the attacker. | organization or being sent to the attacker. | |||
To protect against this, organizations should use the "Canonical" | To protect against this, organizations should use the "Canonical" | |||
field to indicate the locations of the file (as per Section 3.5.2), | field to indicate the locations of the file (as per Section 2.5.2), | |||
digitally sign their "security.txt" files (as per Section 3.3), and | digitally sign their "security.txt" files (as per Section 2.3), and | |||
regularly monitor the file and the referenced resources to detect | regularly monitor the file and the referenced resources to detect | |||
tampering. | tampering. | |||
Security researchers should validate the "security.txt" file | Security researchers should validate the "security.txt" file, | |||
including verifying the digital signature and checking any available | including verifying the digital signature and checking any available | |||
historical records before using the information contained in the | historical records before using the information contained in the | |||
file. If the "security.txt" file looks suspicious or compromised, it | file. If the "security.txt" file looks suspicious or compromised, it | |||
should not be used. | should not be used. | |||
While it is not recommended, implementors may choose to use the | While it is not recommended, implementors may choose to use the | |||
information published within a "security.txt" file for incident | information published within a "security.txt" file for an incident | |||
response. In such cases, extreme caution should be taken before | response. In such cases, extreme caution should be taken before | |||
trusting such information, since it may have been compromised by an | trusting such information, since it may have been compromised by an | |||
attacker. Researchers should use additional methods to verify such | attacker. Researchers should use additional methods to verify such | |||
data including out of band verification of the PGP signature, DNSSEC- | data including out-of-band verification of the Pretty Good Privacy | |||
based approaches, etc. | (PGP) signature, DNSSEC-based approaches, etc. | |||
6.2. Redirects | 5.2. Redirects | |||
When retrieving the file and any resources referenced in the file, | When retrieving the file and any resources referenced in the file, | |||
researchers should record any redirects since they can lead to a | researchers should record any redirects since they can lead to a | |||
different domain or IP address controlled by an attacker. Further | different domain or IP address controlled by an attacker. Further | |||
inspections of such redirects is recommended before using the | inspection of such redirects is recommended before using the | |||
information contained within the file. | information contained within the file. | |||
6.3. Incorrect or Stale Information | 5.3. Incorrect or Stale Information | |||
If information and resources referenced in a "security.txt" file are | If information and resources referenced in a "security.txt" file are | |||
incorrect or not kept up to date, this can result in security reports | incorrect or not kept up to date, this can result in security reports | |||
not being received by the organization or sent to incorrect contacts, | not being received by the organization or sent to incorrect contacts, | |||
thus exposing possible security issues to third parties. Not having | thus exposing possible security issues to third parties. Not having | |||
a "security.txt" file may be preferable to having stale information | a "security.txt" file may be preferable to having stale information | |||
in this file. Organizations must use the "Expires" field (see | in this file. Organizations must use the "Expires" field (see | |||
Section 3.5.5) to indicate to researchers when the data in the file | Section 2.5.5) to indicate to researchers when the data in the file | |||
is no longer valid. | is no longer valid. | |||
Organizations should ensure that information in this file and any | Organizations should ensure that information in this file and any | |||
referenced resources such as web pages, email addresses, and | referenced resources such as web pages, email addresses, and | |||
telephone numbers are kept current, are accessible, controlled by the | telephone numbers are kept current, are accessible, are controlled by | |||
organization, and are kept secure. | the organization, and are kept secure. | |||
6.4. Intentionally Malformed Files, Resources and Reports | 5.4. Intentionally Malformed Files, Resources, and Reports | |||
It is possible for compromised or malicious sites to create files | It is possible for compromised or malicious sites to create files | |||
that are extraordinarily large or otherwise malformed in an attempt | that are extraordinarily large or otherwise malformed in an attempt | |||
to discover or exploit weaknesses in parsing code. Researchers | to discover or exploit weaknesses in the parsing code. Researchers | |||
should make sure that any such code is robust against large or | should make sure that any such code is robust against large or | |||
malformed files and fields, and may choose not to parse files larger | malformed files and fields, and they may choose to have the code not | |||
than 32 KBs, having fields longer than 2,048 characters or containing | parse files larger than 32 KBs, those with fields longer than 2,048 | |||
more than 1,000 lines. The ABNF grammar (as defined in Section 5) | characters, or those containing more than 1,000 lines. The ABNF | |||
can also be used as a way to verify these files. | grammar (as defined in Section 4) can also be used as a way to verify | |||
these files. | ||||
The same concerns apply to any other resources referenced within | The same concerns apply to any other resources referenced within | |||
"security.txt" files, as well as any security reports received as a | "security.txt" files, as well as any security reports received as a | |||
result of publishing this file. Such resources and reports may be | result of publishing this file. Such resources and reports may be | |||
hostile, malformed or malicious. | hostile, malformed, or malicious. | |||
6.5. No Implied Permission for Testing | 5.5. No Implied Permission for Testing | |||
The presence of a "security.txt" file might be interpreted by | The presence of a "security.txt" file might be interpreted by | |||
researchers as providing permission to do security testing against | researchers as providing permission to do security testing against | |||
the domain or IP address where it is published, or products and | the domain or IP address where it is published or against products | |||
services provided by the organization publishing the file. This | and services provided by the organization publishing the file. This | |||
might result in increased testing against an organization by | might result in increased testing against an organization by | |||
researchers. On the other hand, a decision not to publish a | researchers. On the other hand, a decision not to publish a | |||
"security.txt" file might be interpreted by the organization | "security.txt" file might be interpreted by the organization | |||
operating that website to be a way to signal to researchers that | operating that website to be a way to signal to researchers that | |||
permission to test that particular site or project is denied. This | permission to test that particular site or project is denied. This | |||
might result in pushback against researchers reporting security | might result in pushback against researchers reporting security | |||
issues to that organization. | issues to that organization. | |||
Therefore, researchers shouldn't assume that presence or absence of a | Therefore, researchers shouldn't assume that the presence or absence | |||
"security.txt" file grants or denies permission for security testing. | of a "security.txt" file grants or denies permission for security | |||
Any such permission may be indicated in the company's vulnerability | testing. Any such permission may be indicated in the company's | |||
disclosure policy (as per Section 3.5.7) or a new field (as per | vulnerability disclosure policy (as per Section 2.5.7) or a new field | |||
Section 3.4). | (as per Section 2.4). | |||
6.6. Multi-user Environments | 5.6. Multi-User Environments | |||
In multi-user / multi-tenant environments, it may possible for a user | In multi-user / multi-tenant environments, it may be possible for a | |||
to take over the location of the "security.txt" file. Organizations | user to take over the location of the "security.txt" file. | |||
should reserve the "security.txt" namespace at the root to ensure no | Organizations should reserve the "security.txt" namespace at the root | |||
third-party can create a page with the "security.txt" AND "/.well- | to ensure no third party can create a page with the "security.txt" | |||
known/security.txt" names. | AND "/.well-known/security.txt" names. | |||
6.7. Protecting Data in Transit | 5.7. Protecting Data in Transit | |||
To protect a "security.txt" file from being tampered with in transit, | To protect a "security.txt" file from being tampered with in transit, | |||
implementors MUST use HTTPS (as per section 2.7.2 of [RFC7230]) when | implementors MUST use HTTPS (as per Section 2.7.2 of [RFC7230]) when | |||
serving the file itself and for retrieval of any web URIs referenced | serving the file itself and for retrieval of any web URIs referenced | |||
in it (except when otherwise noted in this specification). As part | in it (except when otherwise noted in this specification). As part | |||
of the TLS handshake, researchers should validate the provided X.509 | of the TLS handshake, researchers should validate the provided X.509 | |||
certificate in accordance with [RFC6125] and the following | certificate in accordance with [RFC6125] and the following | |||
considerations: | considerations: | |||
* Matching is performed only against the DNS-ID identifiers. | * Matching is performed only against the DNS-ID identifiers. | |||
* DNS domain names in server certificates MAY contain the wildcard | * DNS domain names in server certificates MAY contain the wildcard | |||
character '*' as the complete left-most label within the | character '*' as the complete leftmost label within the | |||
identifier. | identifier. | |||
The certificate may also be checked for revocation via the Online | The certificate may also be checked for revocation via the Online | |||
Certificate Status Protocol (OCSP) [RFC6960], certificate revocation | Certificate Status Protocol (OCSP) [RFC6960], certificate revocation | |||
lists (CRLs), or similar mechanisms. | lists (CRLs), or similar mechanisms. | |||
In cases where the "security.txt" file cannot be served via HTTPS | In cases where the "security.txt" file cannot be served via HTTPS | |||
(such as localhost) or is being served with an invalid certificate, | (such as localhost) or is being served with an invalid certificate, | |||
additional human validation is recommended since the contents may | additional human validation is recommended since the contents may | |||
have been modified while in transit. | have been modified while in transit. | |||
As an additional layer of protection, it is also recommended that | As an additional layer of protection, it is also recommended that | |||
organizations digitally sign their "security.txt" file with OpenPGP | organizations digitally sign their "security.txt" file with OpenPGP | |||
(as per Section 3.3). Also, to protect security reports from being | (as per Section 2.3). Also, to protect security reports from being | |||
tampered with or observed while in transit, organizations should | tampered with or observed while in transit, organizations should | |||
specify encryption keys (as per Section 3.5.4) unless HTTPS is being | specify encryption keys (as per Section 2.5.4) unless HTTPS is being | |||
used for report submission. | used for report submission. | |||
However, the determination of validity of such keys is out of scope | However, the determination of validity of such keys is out of scope | |||
for this specification. Security researchers need to establish other | for this specification. Security researchers need to establish other | |||
secure means to verify them. | secure means to verify them. | |||
6.8. Spam and Spurious Reports | 5.8. Spam and Spurious Reports | |||
Similar to concerns in [RFC2142], denial of service attacks via spam | Similar to concerns in [RFC2142], denial-of-service attacks via spam | |||
reports would become easier once a "security.txt" file is published | reports would become easier once a "security.txt" file is published | |||
by an organization. In addition, there is an increased likelihood of | by an organization. In addition, there is an increased likelihood of | |||
reports being sent in an automated fashion and/or as result of | reports being sent in an automated fashion and/or as a result of | |||
automated scans without human analysis. Attackers can also use this | automated scans without human analysis. Attackers can also use this | |||
file as a way to spam unrelated third parties by listing their | file as a way to spam unrelated third parties by listing their | |||
resources and/or contact information. | resources and/or contact information. | |||
Organizations need to weigh the advantages of publishing this file | Organizations need to weigh the advantages of publishing this file | |||
versus the possible disadvantages and increased resources required to | versus the possible disadvantages and increased resources required to | |||
analyze security reports. | analyze security reports. | |||
Security researchers should review all information within the | Security researchers should review all information within the | |||
"security.txt" file before submitting reports in an automated fashion | "security.txt" file before submitting reports in an automated fashion | |||
or as resulting from automated scans. | or reports resulting from automated scans. | |||
7. IANA Considerations | 6. IANA Considerations | |||
Implementors should be aware that any resources referenced within a | Implementors should be aware that any resources referenced within a | |||
"security.txt" file MUST NOT point to the Well-Known URIs namespace | "security.txt" file MUST NOT point to the Well-Known URIs namespace | |||
unless they are registered with IANA (as per [RFC8615]). | unless they are registered with IANA (as per [RFC8615]). | |||
7.1. Well-Known URIs registry | 6.1. Well-Known URIs Registry | |||
The "Well-Known URIs" registry should be updated with the following | IANA has updated the "Well-Known URIs" registry with the following | |||
additional values (using the template from [RFC8615]): | additional values (using the template from [RFC8615]): | |||
URI suffix: security.txt | URI suffix: security.txt | |||
Change controller: IETF | ||||
Change controller: IETF | Specification document(s): RFC 9116 | |||
Status: permanent | ||||
Specification document(s): this document | ||||
Status: permanent | ||||
7.2. Registry for security.txt Fields | 6.2. Registry for security.txt Fields | |||
IANA is requested to create the "security.txt Fields" registry in | IANA has created the "security.txt Fields" registry in accordance | |||
accordance with [RFC8126]. This registry will contain fields for use | with [RFC8126]. This registry contains fields for use in | |||
in "security.txt" files, defined by this specification. | "security.txt" files, defined by this specification. | |||
New registrations or updates MUST be published in accordance with the | New registrations or updates MUST be published in accordance with the | |||
"Expert Review" guidelines as described in sections 4.5 and 5 of | "Expert Review" guidelines as described in Sections 4.5 and 5 of | |||
[RFC8126]. Any new field thus registered is considered optional by | [RFC8126]. Any new field thus registered is considered optional by | |||
this specification unless a new version of this specification is | this specification unless a new version of this specification is | |||
published. | published. | |||
Designated Experts are expected to check whether a proposed | Designated experts should determine whether a proposed registration | |||
registration or update makes sense in the context of industry | or update provides value to organizations and researchers using this | |||
accepted vulnerability disclosure processes such as [ISO.29147.2018] | format and makes sense in the context of industry-accepted | |||
and [CERT.CVD], and provides value to organizations and researchers | vulnerability disclosure processes such as [ISO.29147.2018] and | |||
using this format. | [CERT.CVD]. | |||
New registrations and updates MUST contain the following information: | New registrations and updates MUST contain the following information: | |||
1. Name of the field being registered or updated | 1. Name of the field being registered or updated | |||
2. Short description of the field | 2. Short description of the field | |||
3. Whether the field can appear more than once | 3. Whether the field can appear more than once | |||
4. The document in which the specification of the field is published | 4. New or updated status, which MUST be one of the following: | |||
(if available) | ||||
5. New or updated status, which MUST be one of: | ||||
* current: The field is in current use | ||||
* deprecated: The field has been in use, but new usage is | current: The field is in current use. | |||
discouraged | deprecated: The field has been in use, but new usage is | |||
discouraged. | ||||
historic: The field is no longer in current use. | ||||
* historic: The field is no longer in current use | 5. Change controller | |||
6. Change controller | 6. The document in which the specification of the field is published | |||
(if available) | ||||
An update may make a notation on an existing registration indicating | Existing registrations may be marked historic or deprecated, as | |||
that a registered field is historical or deprecated if appropriate. | appropriate, by a future update to this document. | |||
The initial registry contains these values: | The initial registry contains these values: | |||
Field Name: Acknowledgments | Field Name: Acknowledgments | |||
Description: link to page where security researchers are recognized | Description: link to page where security researchers are recognized | |||
Multiple Appearances: Yes | Multiple Appearances: yes | |||
Published in: this document | Status: current | |||
Status: current | Change controller: IETF | |||
Change controller: IETF | Reference: RFC 9116 | |||
Field Name: Canonical | ||||
Description: canonical URI for this file | ||||
Multiple Appearances: Yes | ||||
Published in: this document | ||||
Status: current | ||||
Change controller: IETF | ||||
Field Name: Contact | ||||
Description: contact information to use for reporting vulnerabilities | ||||
Multiple Appearances: Yes | ||||
Published in: this document | ||||
Status: current | ||||
Change controller: IETF | ||||
Field Name: Expires | ||||
Description: date and time after which this file is considered stale | ||||
Multiple Appearances: No | ||||
Published in: this document | ||||
Status: current | ||||
Change controller: IETF | ||||
Field Name: Encryption | ||||
Description: link to a key to be used for encrypted communication | ||||
Multiple Appearances: Yes | ||||
Published in: this document | ||||
Status: current | ||||
Change controller: IETF | ||||
Field Name: Hiring | Field Name: Canonical | |||
Description: link to the vendor's security-related job positions | Description: canonical URI for this file | |||
Multiple Appearances: Yes | Multiple Appearances: yes | |||
Published in: this document | Status: current | |||
Status: current | Change controller: IETF | |||
Change controller: IETF | Reference: RFC 9116 | |||
Field Name: Policy | Field Name: Contact | |||
Description: link to security policy page | Description: contact information to use for reporting | |||
Multiple Appearances: Yes | vulnerabilities | |||
Published in: this document | Multiple Appearances: yes | |||
Status: current | Status: current | |||
Change controller: IETF | Change controller: IETF | |||
Reference: RFC 9116 | ||||
Field Name: Preferred-Languages | Field Name: Expires | |||
Description: list of preferred languages for security reports | Description: date and time after which this file is considered stale | |||
Multiple Appearances: No | Multiple Appearances: no | |||
Published in: this document | Status: current | |||
Status: current | Change controller: IETF | |||
Change controller: IETF | Reference: RFC 9116 | |||
8. Contributors | Field Name: Encryption | |||
Description: link to a key to be used for encrypted communication | ||||
Multiple Appearances: yes | ||||
Status: current | ||||
Change controller: IETF | ||||
Reference: RFC 9116 | ||||
The authors would like to acknowledge the help provided during the | Field Name: Hiring | |||
development of this document by Tom Hudson, Jobert Abma, Gerben | Description: link to the vendor's security-related job positions | |||
Janssen van Doorn, Austin Heap, Stephane Bortzmeyer, Max Smith, | Multiple Appearances: yes | |||
Eduardo Vela, and Krzysztof Kotowicz. | Status: current | |||
Change controller: IETF | ||||
Reference: RFC 9116 | ||||
The authors would also like to acknowledge the feedback provided by | Field Name: Policy | |||
multiple members of IETF's LAST CALL, SAAG, and SECDISPATCH lists. | Description: link to security policy page | |||
Multiple Appearances: yes | ||||
Status: current | ||||
Change controller: IETF | ||||
Reference: RFC 9116 | ||||
Yakov would like to also thank L.T.S. (for everything). | Field Name: Preferred-Languages | |||
Description: list of preferred languages for security reports | ||||
Multiple Appearances: no | ||||
Status: current | ||||
Change controller: IETF | ||||
Reference: RFC 9116 | ||||
9. References | 7. References | |||
9.1. Normative References | 7.1. Normative References | |||
[RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | |||
Extensions (MIME) Part Two: Media Types", RFC 2046, | Extensions (MIME) Part Two: Media Types", RFC 2046, | |||
DOI 10.17487/RFC2046, November 1996, | DOI 10.17487/RFC2046, November 1996, | |||
<https://www.rfc-editor.org/info/rfc2046>. | <https://www.rfc-editor.org/info/rfc2046>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
skipping to change at page 21, line 40 ¶ | skipping to change at line 1036 ¶ | |||
[RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | |||
Protocol (HTTP/1.1): Message Syntax and Routing", | Protocol (HTTP/1.1): Message Syntax and Routing", | |||
RFC 7230, DOI 10.17487/RFC7230, June 2014, | RFC 7230, DOI 10.17487/RFC7230, June 2014, | |||
<https://www.rfc-editor.org/info/rfc7230>. | <https://www.rfc-editor.org/info/rfc7230>. | |||
[RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | |||
Protocol (HTTP/1.1): Semantics and Content", RFC 7231, | Protocol (HTTP/1.1): Semantics and Content", RFC 7231, | |||
DOI 10.17487/RFC7231, June 2014, | DOI 10.17487/RFC7231, June 2014, | |||
<https://www.rfc-editor.org/info/rfc7231>. | <https://www.rfc-editor.org/info/rfc7231>. | |||
[RFC7405] Kyzivat, P., "Case-Sensitive String Support in ABNF", | ||||
RFC 7405, DOI 10.17487/RFC7405, December 2014, | ||||
<https://www.rfc-editor.org/info/rfc7405>. | ||||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8615] Nottingham, M., "Well-Known Uniform Resource Identifiers | [RFC8615] Nottingham, M., "Well-Known Uniform Resource Identifiers | |||
(URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019, | (URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019, | |||
<https://www.rfc-editor.org/info/rfc8615>. | <https://www.rfc-editor.org/info/rfc8615>. | |||
9.2. Informative References | 7.2. Informative References | |||
[CERT.CVD] Software Engineering Institute, Carnegie Mellon | [CERT.CVD] Software Engineering Institute, "The CERT Guide to | |||
University, "The CERT Guide to Coordinated Vulnerability | Coordinated Vulnerability Disclosure", Carnegie Mellon | |||
Disclosure (CMU/SEI-2017-SR-022)", 2017. | University, CMU/SEI-2017-SR-022, August 2017. | |||
[ISO.29147.2018] | [ISO.29147.2018] | |||
International Organization for Standardization (ISO), | ISO, "Information technology - Security techniques - | |||
"ISO/IEC 29147:2018, Information technology - Security | Vulnerability disclosure", ISO/IEC 29147:2018, October | |||
techniques - Vulnerability disclosure", 2018. | 2018. | |||
[ISO.8601] International Organization for Standardization (ISO), | [ISO.8601-1] | |||
"ISO/IEC 8601, Date and time - Representations for | ISO, "Date and time - Representations for information | |||
information interchange - Parts 1 and 2", 2019. | interchange - Part 1: Basic rules", ISO 8601-1:2019, | |||
February 2019. | ||||
[ISO.8601-2] | ||||
ISO, "Date and time - Representations for information | ||||
interchange - Part 2: Extensions", ISO 8601-2:2019, | ||||
February 2019. | ||||
[RFC0793] Postel, J., "Transmission Control Protocol", STD 7, | [RFC0793] Postel, J., "Transmission Control Protocol", STD 7, | |||
RFC 793, DOI 10.17487/RFC0793, September 1981, | RFC 793, DOI 10.17487/RFC0793, September 1981, | |||
<https://www.rfc-editor.org/info/rfc793>. | <https://www.rfc-editor.org/info/rfc793>. | |||
[RFC2196] Fraser, B., "Site Security Handbook", FYI 8, RFC 2196, | [RFC2196] Fraser, B., "Site Security Handbook", FYI 8, RFC 2196, | |||
DOI 10.17487/RFC2196, September 1997, | DOI 10.17487/RFC2196, September 1997, | |||
<https://www.rfc-editor.org/info/rfc2196>. | <https://www.rfc-editor.org/info/rfc2196>. | |||
[RFC2350] Brownlee, N. and E. Guttman, "Expectations for Computer | [RFC2350] Brownlee, N. and E. Guttman, "Expectations for Computer | |||
skipping to change at page 22, line 42 ¶ | skipping to change at line 1097 ¶ | |||
[RFC7485] Zhou, L., Kong, N., Shen, S., Sheng, S., and A. Servin, | [RFC7485] Zhou, L., Kong, N., Shen, S., Sheng, S., and A. Servin, | |||
"Inventory and Analysis of WHOIS Registration Objects", | "Inventory and Analysis of WHOIS Registration Objects", | |||
RFC 7485, DOI 10.17487/RFC7485, March 2015, | RFC 7485, DOI 10.17487/RFC7485, March 2015, | |||
<https://www.rfc-editor.org/info/rfc7485>. | <https://www.rfc-editor.org/info/rfc7485>. | |||
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
<https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
Appendix A. Note to Readers | Acknowledgments | |||
*Note to the RFC Editor:* Please remove this section prior to | ||||
publication. | ||||
Development of this draft takes place on Github at | ||||
https://github.com/securitytxt/security-txt | ||||
Appendix B. Document History | ||||
*Note to the RFC Editor:* Please remove this section prior to | ||||
publication. | ||||
B.1. Since draft-foudil-securitytxt-00 | ||||
* Moved to use IETF's markdown tools for draft updates | ||||
* Added table of contents and a fuller list of references | ||||
* Moved file to .well-known URI and added IANA registration (#3) | ||||
* Added extensibility with an IANA registry for fields (#34) | ||||
* Added text explaining relationship to RFC 2142 / security@ email | ||||
address (#25) | ||||
* Scope expanded to include internal hosts, domains, IP addresses | ||||
and file systems | ||||
* Support for digital signatures added (#19) | ||||
The full list of changes can be viewed via the IETF document tracker: | ||||
https://tools.ietf.org/html/draft-foudil-securitytxt-01 | ||||
B.2. Since draft-foudil-securitytxt-01 | ||||
* Added appendix with pointer to Github and document history | ||||
* Added external signature file to the well known URI registry (#59) | ||||
* Added policy field (#53) | ||||
* Added diagram explaining the location of the file on public vs. | ||||
internal systems | ||||
* Added recommendation that external signature files should use | ||||
HTTPS (#55) | ||||
* Added recommendation that organizations should monitor their | ||||
security.txt files (#14) | ||||
The full list of changes can be viewed via the IETF document tracker: | ||||
https://tools.ietf.org/html/draft-foudil-securitytxt-02 | ||||
B.3. Since draft-foudil-securitytxt-02 | ||||
* Use "mailto" and "tel" (#62) | ||||
* Fix typo in the "Example" section (#64) | ||||
* Clarified that the root directory is a fallback option (#72) | ||||
* Defined content-type for the response (#68) | ||||
* Clarify the scope of the security.txt file (#69) | ||||
* Cleaning up text based on the NITS tools suggestions (#82) | ||||
* Added clarification for newline values | ||||
* Clarified the encryption field language, added examples of DNS- | ||||
stored encryption keys (#28 and #94) | ||||
* Added "Hiring" field | ||||
B.4. Since draft-foudil-securitytxt-03 | ||||
* Added "Hiring" field to the registry section | ||||
* Added an encryption example using a PGP fingerprint (#107) | ||||
* Added reference to the mailing list (#111) | ||||
* Added a section referencing related work (#113) | ||||
* Fixes for idnits (#82) | ||||
* Changing some references to informative instead of normative | ||||
* Adding "Permission" field (#30) | ||||
* Fixing remaining ABNF issues (#83) | ||||
* Additional editorial changes and edits | ||||
B.5. Since draft-foudil-securitytxt-04 | ||||
* Addressing IETF feedback (#118) | ||||
* Case sensitivity clarification (#127) | ||||
* Syntax fixes (#133, #135 and #136) | ||||
* Removed permission field (#30) | ||||
* Removed signature field and switched to inline signatures (#93 and | ||||
#128) | ||||
* Adding canonical field (#100) | ||||
* Text and ABNF grammar improvements plus ABNF changes for comments | ||||
(#123) | ||||
* Changed ".security.txt" to "security.txt" to be consistent | ||||
B.6. Since draft-foudil-securitytxt-05 | ||||
* Changing HTTPS to MUST (#55) | ||||
* Adding language recommending encryption for email reports (#134) | ||||
* Added language handling redirects (#143) | ||||
* Expanded security considerations section and fixed typos (#30, | ||||
#73, #103, #112) | ||||
B.7. Since draft-foudil-securitytxt-06 | ||||
* Fixed ABNF grammar for non-chainable fields (#150) | ||||
* Clarified ABNF grammar (#152) | ||||
* Clarified redirect logic (#143) | ||||
* Clarified comments (#158) | ||||
* Updated references and template for well-known URI to RFC 8615 | ||||
* Fixed nits from the IETF validator | ||||
B.8. Since draft-foudil-securitytxt-07 | ||||
* Addressing AD feedback (#165) | ||||
* Fix for ABNF grammar in lang-values (#164) | ||||
* Fixing idnits warnings | ||||
* Adding guidance for designated experts | ||||
B.9. Since draft-foudil-securitytxt-08 | ||||
* Added language and example regarding URI encoding (#176) | ||||
* Add "Expires" field (#181) | ||||
* Changed language from "directive" to "field" (#182) | ||||
* Addressing last call feedback (#179, #180 and #183) | ||||
* Clarifying order of fields (#174) | ||||
* Revert comment/field association (#158) | ||||
B.10. Since draft-foudil-securitytxt-09 | ||||
* Adjust ABNF to allow blank lines between directives (#191) | ||||
* Make "Expires" field required (#190) | ||||
* Adding a warning about the well-known URI namespace (#188) | ||||
* Adding scope language around products/services (#185) | ||||
* Addressing last call feedback (#189) | ||||
B.11. Since draft-foudil-securitytxt-10 | ||||
* Changes addressing IESG feedback | ||||
* Removed language regarding file systems (#201) | ||||
* Adding language to explain alignment with the CERT CVD guide | ||||
(#202) | ||||
B.12. Since draft-foudil-securitytxt-11 | ||||
* Changed date format from RFC 5322 to RFC 3339 / ISO 8601 (#208) | ||||
* Added clarification in "canonical" field regarding the URI used to | ||||
retrieve the file | ||||
* Added language about machine-parsability | The authors would like to acknowledge the help provided during the | |||
development of this document by Tom Hudson, Jobert Abma, Gerben | ||||
Janssen van Doorn, Austin Heap, Stephane Bortzmeyer, Max Smith, | ||||
Eduardo Vela, and Krzysztof Kotowicz. | ||||
* Added quotes around "security.txt" for consistency | The authors would also like to acknowledge the feedback provided by | |||
multiple members of the IETF's LAST CALL, SAAG, and SECDISPATCH | ||||
lists. | ||||
Full list of changes can be viewed via the IETF document tracker: | Yakov Shafranovich would like to also thank L.T.S. (for everything). | |||
https://tools.ietf.org/html/draft-foudil-securitytxt | ||||
Authors' Addresses | Authors' Addresses | |||
Edwin Foudil | Edwin Foudil | |||
Email: contact@edoverflow.com | Email: contact@edoverflow.com | |||
Yakov Shafranovich | Yakov Shafranovich | |||
Nightwatch Cybersecurity | Nightwatch Cybersecurity | |||
Email: yakov+ietf@nightwatchcybersecurity.com | Email: yakov+ietf@nightwatchcybersecurity.com | |||
End of changes. 163 change blocks. | ||||
592 lines changed or deleted | 496 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |