| 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/ | ||||