Skip to content

Commit e4e4644

Browse files
Merge pull request #160 from nightwatchcyber/master
Fix for #158 and misc syntax fixes
2 parents 42a78aa + cc045b9 commit e4e4644

3 files changed

Lines changed: 181 additions & 111 deletions

File tree

draft-foudil-securitytxt.html

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@
339339

340340
<meta name="dct.creator" content="Foudil, E. and Y. Shafranovich" />
341341
<meta name="dct.identifier" content="urn:ietf:id:draft-foudil-securitytxt-06" />
342-
<meta name="dct.issued" scheme="ISO8601" content="2019-06-16" />
342+
<meta name="dct.issued" scheme="ISO8601" content="2019-07-16" />
343343
<meta name="dct.abstract" content="When security vulnerabilities are discovered by independent security researchers, they often lack the channels to report them properly. As a result, security vulnerabilities may be left unreported. This document defines a format (&#8220;security.txt&#8221;) to help organizations describe the process for security researchers to follow in order to report security vulnerabilities." />
344344
<meta name="description" content="When security vulnerabilities are discovered by independent security researchers, they often lack the channels to report them properly. As a result, security vulnerabilities may be left unreported. This document defines a format (&#8220;security.txt&#8221;) to help organizations describe the process for security researchers to follow in order to report security vulnerabilities." />
345345

@@ -363,12 +363,12 @@
363363
<td class="right">Y. Shafranovich</td>
364364
</tr>
365365
<tr>
366-
<td class="left">Expires: December 18, 2019</td>
366+
<td class="left">Expires: January 17, 2020</td>
367367
<td class="right">Nightwatch Cybersecurity</td>
368368
</tr>
369369
<tr>
370370
<td class="left"></td>
371-
<td class="right">June 16, 2019</td>
371+
<td class="right">July 16, 2019</td>
372372
</tr>
373373

374374

@@ -384,7 +384,7 @@ <h1 id="rfc.status"><a href="#rfc.status">Status of This Memo</a></h1>
384384
<p>This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.</p>
385385
<p>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/.</p>
386386
<p>Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."</p>
387-
<p>This Internet-Draft will expire on December 18, 2019.</p>
387+
<p>This Internet-Draft will expire on January 17, 2020.</p>
388388
<h1 id="rfc.copyrightnotice"><a href="#rfc.copyrightnotice">Copyright Notice</a></h1>
389389
<p>Copyright (c) 2019 IETF Trust and the persons identified as the document authors. All rights reserved.</p>
390390
<p>This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.</p>
@@ -524,7 +524,7 @@ <h1 id="rfc.section.3">
524524
<a href="#rfc.section.3">3.</a> <a href="#the-specification" id="the-specification">The Specification</a>
525525
</h1>
526526
<p id="rfc.section.3.p.1">This document defines a text file to be placed in a known location that provides information for security researchers to assist in disclosing security vulnerabilities.</p>
527-
<p id="rfc.section.3.p.2">The file is named &#8220;security.txt&#8221;, and this file SHOULD be placed under the /.well-known/ path (&#8220;/.well-known/security.txt&#8221;) <a href="#RFC5785" class="xref">[RFC5785]</a> of a domain name or IP address for web properties. If it is not possible to place the security.txt file in the /.well-known/ path or setup a redirect, web-based services MAY place the file in the top-level path of a given web domain or IP address (&#8220;/security.txt&#8221;) as a fallback option (see <a href="#weblocation" class="xref">Section 4.1</a>).</p>
527+
<p id="rfc.section.3.p.2">The file is named &#8220;security.txt&#8221;, and this file SHOULD be placed under the /.well-known/ path (&#8220;/.well-known/security.txt&#8221;) <a href="#RFC8615" class="xref">[RFC8615]</a> of a domain name or IP address for web properties. If it is not possible to place the security.txt file in the /.well-known/ path or setup a redirect, web-based services MAY place the file in the top-level path of a given web domain or IP address (&#8220;/security.txt&#8221;) as a fallback option (see <a href="#weblocation" class="xref">Section 4.1</a>).</p>
528528
<p id="rfc.section.3.p.3">For web-based services, the file MUST be accessible via the Hypertext Transfer Protocol (HTTP) <a href="#RFC1945" class="xref">[RFC1945]</a> as a resource of Internet Media Type &#8220;text/plain&#8221; with the default charset parameter set to &#8220;utf-8&#8221; per section 4.1.3 of <a href="#RFC2046" class="xref">[RFC2046]</a>, and it MUST be served with &#8220;https&#8221; (as per section 2.7.2 of <a href="#RFC7230" class="xref">[RFC7230]</a>). For file systems and version control repositories a &#8220;security.txt&#8221; file SHOULD be placed in the root directory of a particular file system or source code project.</p>
529529
<p id="rfc.section.3.p.4">This text file contains multiple directives with different values. The &#8220;directive&#8221; is the first part of a field all the way up to the colon (&#8220;Contact:&#8221;) and follows the syntax defined for &#8220;field-name&#8221; in section 3.6.8 of <a href="#RFC5322" class="xref">[RFC5322]</a>. Directives MUST be case-insensitive (as per section 2.3 of <a href="#RFC5234" class="xref">[RFC5234]</a>). The &#8220;value&#8221; comes after the directive (&#8220;https://example.com/security&#8221;) and follows the syntax defined for &#8220;unstructured&#8221; in section 3.2.5 of <a href="#RFC5322" class="xref">[RFC5322]</a>.</p>
530530
<p id="rfc.section.3.p.5">A &#8220;field&#8221; MUST always consist of a directive and a value (&#8220;Contact: https://example.com/security&#8221;). A security.txt file can have an unlimited number of fields. It is important to note that you MUST have a separate line for every field. One MUST NOT chain multiple values for a single directive unless it is explicitly defined by that particular field. Unless otherwise indicated in a definition of a particular field, any directive MAY appear multiple times.</p>
@@ -546,7 +546,7 @@ <h1 id="rfc.section.3.1">
546546
# This security.txt file applies to IPv6 address of 2001:db8:8:4::2.
547547
https://[2001:db8:8:4::2]/.well-known/security.txt
548548

549-
# This security.txt file applies to the /example/folder1 directory and subfolders.
549+
# This file applies to the /example/folder1 directory and subfolders.
550550
/example/folder1/security.txt
551551
</pre>
552552
<h1 id="rfc.section.3.2">
@@ -557,11 +557,11 @@ <h1 id="rfc.section.3.2">
557557
<pre>
558558
# This is a comment.
559559
</pre>
560-
<p id="rfc.section.3.2.p.3">You MAY use one or more comments as descriptive text immediately before the field. Parsers SHOULD associate the comments with the respective field.</p>
560+
<p id="rfc.section.3.2.p.3">You MAY use one or more comments as descriptive text immediately before the field. Parsers SHOULD associate the comments with the respective field. Only the line most immediately preceding a field SHOULD be associated with that field.</p>
561561
<h1 id="rfc.section.3.3">
562562
<a href="#rfc.section.3.3">3.3.</a> <a href="#separate-fields" id="separate-fields">Separate Fields</a>
563563
</h1>
564-
<p id="rfc.section.3.3.p.1">A separate line is REQUIRED for every field. You MUST NOT chain everything into a single field unless defined by that field. Every line MUST end either with a carriage return and line feed characters (CRLF / %x0D %x0A) or just a line feed character (LF / %x0A).</p>
564+
<p id="rfc.section.3.3.p.1">A separate line is REQUIRED for every new field. You MUST NOT chain everything into a single field unless defined by that field. Every line MUST end either with a carriage return and line feed characters (CRLF / %x0D %x0A) or just a line feed character (LF / %x0A).</p>
565565
<h1 id="rfc.section.3.4">
566566
<a href="#rfc.section.3.4">3.4.</a> <a href="#signature" id="signature">Digital signature</a>
567567
</h1>
@@ -698,7 +698,7 @@ <h1 id="rfc.section.4">
698698
<h1 id="rfc.section.4.1">
699699
<a href="#rfc.section.4.1">4.1.</a> <a href="#weblocation" id="weblocation">Web-based services</a>
700700
</h1>
701-
<p id="rfc.section.4.1.p.1">Web-based services SHOULD place the security.txt file under the /.well-known/ path; e.g. https://example.com/.well-known/security.txt as per <a href="#RFC5785" class="xref">[RFC5785]</a>. A security.txt file located under the top-level path SHOULD either redirect (as per section 6.4 of <a href="#RFC7231" class="xref">[RFC7231]</a>) to the security.txt file under the /.well-known/ path or be used as a fallback if the &#8220;.well-known&#8221; path cannot be used.</p>
701+
<p id="rfc.section.4.1.p.1">Web-based services SHOULD place the security.txt file under the /.well-known/ path; e.g. https://example.com/.well-known/security.txt as per <a href="#RFC8615" class="xref">[RFC8615]</a>. A security.txt file located under the top-level path SHOULD either redirect (as per section 6.4 of <a href="#RFC7231" class="xref">[RFC7231]</a>) to the security.txt file under the /.well-known/ path or be used as a fallback if the &#8220;.well-known&#8221; path cannot be used.</p>
702702
<p id="rfc.section.4.1.p.2">If retrieval of a &#8220;security.txt&#8221; file from the top-level path results in a redirect (as per section 6.4 of <a href="#RFC7231" class="xref">[RFC7231]</a>), the implementors MUST NOT follow that redirect if it leads to another domain or subdomain but SHOULD follow that redirect within the same domain name (but not different subdomain on the same domain).</p>
703703
<p id="rfc.section.4.1.p.3">The guidance regarding redirects SHOULD NOT apply to the resource locations that appear within the file.</p>
704704
<h1 id="rfc.section.4.2">
@@ -732,9 +732,9 @@ <h1 id="rfc.section.5">
732732

733733
signed = sign-header unsigned sign-footer
734734

735-
sign-header = &lt;headers and line from section 7 of [RFC4880]&gt;
735+
sign-header = &lt; headers and line from section 7 of [RFC4880] &gt;
736736

737-
sign-footer = &lt;OpenPGP signature from section 7 of [RFC4880]&gt;
737+
sign-footer = &lt; OpenPGP signature from section 7 of [RFC4880] &gt;
738738

739739
unsigned = *line [can-field eol] *line (contact-field eol) *line [lang-field eol] *line
740740
; the order of elements is not important
@@ -760,9 +760,9 @@ <h1 id="rfc.section.5">
760760

761761
contact-field = "Contact" fs SP uri
762762

763-
lang-tag = &lt;Language-Tag from section 2.1 of [RFC5646]&gt;
763+
lang-tag = &lt; Language-Tag from section 2.1 of [RFC5646] &gt;
764764

765-
uri = &lt;URI as per [RFC3986]&gt;
765+
uri = &lt; URI as per [RFC3986] &gt;
766766

767767
encryption-field = "Encryption" fs SP uri
768768

@@ -776,14 +776,15 @@ <h1 id="rfc.section.5">
776776

777777
ext-field = field-name fs SP unstructured
778778

779-
field-name = &lt;imported from section 3.6.8 of [RFC5322]&gt;
779+
field-name = &lt; imported from section 3.6.8 of [RFC5322] &gt;
780780

781-
unstructured = &lt;imported from section 3.2.5 of [RFC5322]&gt;
781+
unstructured = &lt; imported from section 3.2.5 of [RFC5322] &gt;
782782
</pre>
783783
<p id="rfc.section.5.p.3">&#8220;ext-field&#8221; refers to extension fields, which are discussed in <a href="#extensibility" class="xref">Section 4.4</a></p>
784784
<h1 id="rfc.section.6">
785785
<a href="#rfc.section.6">6.</a> <a href="#security-considerations" id="security-considerations">Security Considerations</a>
786786
</h1>
787+
<p id="rfc.section.6.p.1">Implementors SHOULD review this section as well as the security considerations section of <a href="#RFC8615" class="xref">[RFC8615]</a>.</p>
787788
<h1 id="rfc.section.6.1">
788789
<a href="#rfc.section.6.1">6.1.</a> <a href="#compromised-files-and-redirects" id="compromised-files-and-redirects">Compromised Files and Redirects</a>
789790
</h1>
@@ -830,10 +831,11 @@ <h1 id="rfc.section.7">
830831
<h1 id="rfc.section.7.1">
831832
<a href="#rfc.section.7.1">7.1.</a> <a href="#well-known-uris-registry" id="well-known-uris-registry">Well-Known URIs registry</a>
832833
</h1>
833-
<p id="rfc.section.7.1.p.1">The &#8220;Well-Known URIs&#8221; registry should be updated with the following additional values (using the template from <a href="#RFC5785" class="xref">[RFC5785]</a>):</p>
834+
<p id="rfc.section.7.1.p.1">The &#8220;Well-Known URIs&#8221; registry should be updated with the following additional values (using the template from <a href="#RFC8615" class="xref">[RFC8615]</a>):</p>
834835
<p id="rfc.section.7.1.p.2">URI suffix: security.txt</p>
835836
<p id="rfc.section.7.1.p.3">Change controller: IETF</p>
836837
<p id="rfc.section.7.1.p.4">Specification document(s): this document</p>
838+
<p id="rfc.section.7.1.p.5">Status: permanent</p>
837839
<h1 id="rfc.section.7.2">
838840
<a href="#rfc.section.7.2">7.2.</a> <a href="#registry" id="registry">Registry for security.txt Header Fields</a>
839841
</h1>
@@ -970,11 +972,6 @@ <h1 id="rfc.references.1">
970972
<a>Phillips, A.</a> and <a>M. Davis</a>, "<a href="https://tools.ietf.org/html/rfc5646">Tags for Identifying Languages</a>", BCP 47, RFC 5646, DOI 10.17487/RFC5646, September 2009.</td>
971973
</tr>
972974
<tr>
973-
<td class="reference"><b id="RFC5785">[RFC5785]</b></td>
974-
<td class="top">
975-
<a>Nottingham, M.</a> and <a>E. Hammer-Lahav</a>, "<a href="https://tools.ietf.org/html/rfc5785">Defining Well-Known Uniform Resource Identifiers (URIs)</a>", RFC 5785, DOI 10.17487/RFC5785, April 2010.</td>
976-
</tr>
977-
<tr>
978975
<td class="reference"><b id="RFC6068">[RFC6068]</b></td>
979976
<td class="top">
980977
<a>Duerst, M.</a>, <a>Masinter, L.</a> and <a>J. Zawinski</a>, "<a href="https://tools.ietf.org/html/rfc6068">The 'mailto' URI Scheme</a>", RFC 6068, DOI 10.17487/RFC6068, October 2010.</td>
@@ -999,6 +996,11 @@ <h1 id="rfc.references.1">
999996
<td class="top">
1000997
<a>Leiba, B.</a>, "<a href="https://tools.ietf.org/html/rfc8174">Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</a>", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017.</td>
1001998
</tr>
999+
<tr>
1000+
<td class="reference"><b id="RFC8615">[RFC8615]</b></td>
1001+
<td class="top">
1002+
<a>Nottingham, M.</a>, "<a href="https://tools.ietf.org/html/rfc8615">Well-Known Uniform Resource Identifiers (URIs)</a>", RFC 8615, DOI 10.17487/RFC8615, May 2019.</td>
1003+
</tr>
10021004
</tbody></table>
10031005
<h1 id="rfc.references.2">
10041006
<a href="#rfc.references.2">9.2.</a> Informative References</h1>
@@ -1155,6 +1157,9 @@ <h1 id="rfc.appendix.B.7">
11551157
<li>Fixed ABNF grammar for non-chainable directives (#150)</li>
11561158
<li>Clarified ABNF grammar (#152)</li>
11571159
<li>Clarified redirect logic (#143)</li>
1160+
<li>Clarified comments (#158)</li>
1161+
<li>Updated references and template for well-known URI to RFC 8615</li>
1162+
<li>Fixed nits from the IETF validator</li>
11581163
</ul>
11591164
<p id="rfc.section.B.7.p.2">Full list of changes can be viewed via the IETF document tracker: https://tools.ietf.org/html/draft-foudil-securitytxt</p>
11601165
<h1 id="rfc.authors"><a href="#rfc.authors">Authors' Addresses</a></h1>

draft-foudil-securitytxt.md

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ that provides information for security researchers to assist
8383
in disclosing security vulnerabilities.
8484

8585
The file is named "security.txt", and this file SHOULD be placed under the
86-
/.well-known/ path ("/.well-known/security.txt") {{!RFC5785}} of a domain name or IP address for web
86+
/.well-known/ path ("/.well-known/security.txt") {{!RFC8615}} of a domain name or IP address for web
8787
properties. If it is not possible to place the security.txt file in the /.well-known/ path or setup a redirect, web-based services MAY place the file in the top-level path
8888
of a given web domain or IP address ("/security.txt") as a fallback option (see {{weblocation}}).
8989

@@ -127,7 +127,7 @@ https://192.0.2.0/.well-known/security.txt
127127
# This security.txt file applies to IPv6 address of 2001:db8:8:4::2.
128128
https://[2001:db8:8:4::2]/.well-known/security.txt
129129

130-
# This security.txt file applies to the /example/folder1 directory and subfolders.
130+
# This file applies to the /example/folder1 directory and subfolders.
131131
/example/folder1/security.txt
132132
~~~~~~~~~~
133133

@@ -145,11 +145,12 @@ Example:
145145

146146
You MAY use one or more comments as descriptive text immediately
147147
before the field. Parsers SHOULD associate the comments with the
148-
respective field.
148+
respective field. Only the line most immediately preceding a field SHOULD
149+
be associated with that field.
149150

150151
## Separate Fields
151152

152-
A separate line is REQUIRED for every field. You MUST
153+
A separate line is REQUIRED for every new field. You MUST
153154
NOT chain everything into a single field unless defined by that field. Every line MUST end either
154155
with a carriage return and line feed characters (CRLF / %x0D %x0A) or just
155156
a line feed character (LF / %x0A).
@@ -363,7 +364,7 @@ Version: GnuPG v1
363364
## Web-based services {#weblocation}
364365

365366
Web-based services SHOULD place the security.txt file under the /.well-known/ path; e.g. https://example.com/.well-known/security.txt
366-
as per {{!RFC5785}}. A security.txt file located under the top-level path SHOULD either redirect (as per section 6.4 of {{!RFC7231}})
367+
as per {{!RFC8615}}. A security.txt file located under the top-level path SHOULD either redirect (as per section 6.4 of {{!RFC7231}})
367368
to the security.txt file under the /.well-known/ path or be used as a fallback if the ".well-known" path cannot be used.
368369

369370
If retrieval of a "security.txt" file from the top-level path results in a redirect (as per
@@ -417,9 +418,9 @@ body = signed / unsigned
417418

418419
signed = sign-header unsigned sign-footer
419420

420-
sign-header = <headers and line from section 7 of [RFC4880]>
421+
sign-header = < headers and line from section 7 of [RFC4880] >
421422

422-
sign-footer = <OpenPGP signature from section 7 of [RFC4880]>
423+
sign-footer = < OpenPGP signature from section 7 of [RFC4880] >
423424

424425
unsigned = *line [can-field eol] *line (contact-field eol) *line [lang-field eol] *line
425426
; the order of elements is not important
@@ -445,9 +446,9 @@ can-field = "Canonical" fs SP uri
445446

446447
contact-field = "Contact" fs SP uri
447448

448-
lang-tag = <Language-Tag from section 2.1 of [RFC5646]>
449+
lang-tag = < Language-Tag from section 2.1 of [RFC5646] >
449450

450-
uri = <URI as per [RFC3986]>
451+
uri = < URI as per [RFC3986] >
451452

452453
encryption-field = "Encryption" fs SP uri
453454

@@ -461,15 +462,18 @@ lang-values = lang-tag *("," [WSP] lang-tag)
461462

462463
ext-field = field-name fs SP unstructured
463464

464-
field-name = <imported from section 3.6.8 of [RFC5322]>
465+
field-name = < imported from section 3.6.8 of [RFC5322] >
465466

466-
unstructured = <imported from section 3.2.5 of [RFC5322]>
467+
unstructured = < imported from section 3.2.5 of [RFC5322] >
467468
~~~~~~~~~~
468469

469470
"ext-field" refers to extension fields, which are discussed in {{extensibility}}
470471

471472
# Security Considerations
472473

474+
Implementors SHOULD review this section as well as the security considerations
475+
section of {{!RFC8615}}.
476+
473477
## Compromised Files and Redirects
474478

475479
An attacker that has compromised a website is able to compromise
@@ -581,14 +585,16 @@ the uses indicated in {{?RFC6890}}.
581585
## Well-Known URIs registry
582586

583587
The "Well-Known URIs" registry should be updated with the following additional
584-
values (using the template from {{?RFC5785}}):
588+
values (using the template from {{?RFC8615}}):
585589

586590
URI suffix: security.txt
587591

588592
Change controller: IETF
589593

590594
Specification document(s): this document
591595

596+
Status: permanent
597+
592598
## Registry for security.txt Header Fields {#registry}
593599

594600
IANA is requested to create the "security.txt Header Fields" registry in
@@ -746,6 +752,9 @@ of DNS-stored encryption keys (#28 and #94)
746752
- Fixed ABNF grammar for non-chainable directives (#150)
747753
- Clarified ABNF grammar (#152)
748754
- Clarified redirect logic (#143)
755+
- Clarified comments (#158)
756+
- Updated references and template for well-known URI to RFC 8615
757+
- Fixed nits from the IETF validator
749758

750759
Full list of changes can be viewed via the IETF document tracker:
751760
https://tools.ietf.org/html/draft-foudil-securitytxt

0 commit comments

Comments
 (0)