| RFC 9116 | security.txt | 2022年4月 |
| Foudil & Shafranovich | 情報提供 | [ページ] |
セキュリティ脆弱性が研究者によって発見されても、 適切な報告経路が欠如していることがよくあります。その結果、 脆弱性が報告されないままになる可能性があります。この文書は、機械可読な形式 ("security.txt")を定義し、組織が自らの脆弱性開示の実践を記述できるようにすることで、 研究者が脆弱性を報告しやすくします。¶
この文書はInternet Standards Track仕様ではありません。情報提供を目的として 公開されています。¶
この文書はInternet Engineering Task Force (IETF)の成果物です。これはIETFコミュニティの合意を表しています。公開レビューを 受けており、Internet Engineering Steering Group(IESG)によって公開が 承認されています。IESGによって承認されたすべての文書が、Internet Standardのいずれかのレベルの候補であるとは限りません。RFC 7841の第2節を参照してください。¶
この文書の現在の状態、正誤表、およびそれに関するフィードバックの提供方法についての情報は、 https://www.rfc-editor.org/info/rfc9116で入手できます。¶
Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.¶
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 Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
多くのセキュリティ研究者は、特定のリソースの所有者に連絡するための 報告経路がなく、その所有者の脆弱性開示の実践に関する情報も 入手できないため、組織にセキュリティ脆弱性を報告できない 状況に遭遇します。¶
第4節 of [RFC2142]に従い、 セキュリティ問題に関する連絡に <SECURITY@domain>メールアドレスを使用する既存の慣習が あります。この慣習は、ドメインごとに単一のメールベースの連絡経路しか 提供せず、ドメイン所有者が自らのセキュリティ開示の実践に関する情報を 公開する方法を提供しません。¶
Internet Service Providers(ISP)向けには 第2節 of [RFC3013]に、Computer Security Incident Response Teams(CSIRT)向けには 第 3.2節 of [RFC2350]に、サイト運営者向けには 第 5.2節 of [RFC2196]にも、連絡先の慣習が 規定されています。[RFC7485]に従い、IPアドレス、 Autonomous System Numbers(ASN)、およびドメイン名の所有者については、 Regional Internet Registries(RIR)およびドメインレジストリによって 提供される連絡先情報もあります。しかし、これらはいずれも、セキュリティ研究者が 脆弱性を報告するために、組織の連絡先情報および脆弱性開示の実践をどのように 見つけられるかという問題には対処していません。¶
この文書では、組織が自らのセキュリティ開示の実践および連絡方法に関する 情報を伝達するための、より豊かで、機械可読で、より拡張可能な方法を 定義します。脆弱性開示のその他の詳細は、この文書の範囲外です。読者には、 [ISO.29147.2018]や [CERT.CVD]などの他の文書を参照することを 推奨します。¶
[CERT.CVD]に従い、 「脆弱性対応」とは製品の脆弱性に関する報告を指し、 これはネットワーク侵入や侵害されたWebサイトに関する報告 (「インシデント対応」)と関連はありますが区別されます。この文書で定義される 仕組みは、前者(「脆弱性対応」)に使用されることを意図しています。実装者が この仕組みをインシデント対応に利用したい場合は、第5.1節で説明される 追加のセキュリティ上の考慮事項を認識しておくべきです。¶
"security.txt"ファイルは、組織が自らのセキュリティ開示の実践について 維持している他の公開リソースを補完することを意図しており、 代替または置換ではありません。¶
この文書におけるキーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、 「SHALL NOT」、 「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「NOT RECOMMENDED」、「MAY」、および 「OPTIONAL」は、ここに示すようにすべて大文字で現れる場合に限り、 BCP 14 [RFC2119] [RFC8174]に記述されているとおりに解釈されます。¶
「研究者」という用語は、 [ISO.29147.2018]および[CERT.CVD]における「finder」および「reporter」という用語に対応します。 「組織」という用語は、 [ISO.29147.2018]および[CERT.CVD]における「vendor」という用語に対応します。¶
「実装者」という用語には、 脆弱性開示プロセスに関与するすべての当事者が含まれます。¶
この文書は、特定の組織の脆弱性開示の実践に関する情報を提供する、 既知の場所に配置されるテキストファイルを定義します。 このファイルの形式は機械可読であり、 第4節で定義されるABNF文法に 従わなければなりません(MUST)。このファイルは、セキュリティ研究者が セキュリティ脆弱性を開示する際に役立つことを意図しています。¶
慣例により、このファイルは"security.txt"と命名されます。場所と範囲は 第3節で説明されています。¶
このテキストファイルには、異なる値を持つ複数のフィールドが含まれます。フィールドには 「名前」が含まれます。これはフィールドの最初の部分から コロンまで(例: "Contact:")であり、第3.6.8節 of [RFC5322]の"field-name"に定義された構文に従います。フィールド名は 大文字小文字を区別しません(第2.3節 of [RFC5234]に従います)。 「値」はフィールド名の後に続きます(例: "mailto:security@example.com")。これは 第3.2.5節 of [RFC5322]の "unstructured"に定義された構文に従います。このファイルには空行を含めることもできます (MAY)。¶
フィールドは常に名前と値で構成されなければなりません (MUST)(例: "Contact: mailto:security@example.com")。"security.txt"ファイルは 無制限の数のフィールドを持つことができます。各フィールドは それぞれ独自の行に現れなければなりません(MUST)。フィールド定義で別途指定されない限り、 複数の値を単一のフィールドに連結してはなりません(MUST NOT)。 特定のフィールドの定義で別途示されない限り、フィールドは 複数回現れてもかまいません(MAY)。¶
実装者は、一部のフィールドに パーセントエンコーディングを使用するURIが含まれる可能性があることを認識しておくべきです (第2.1節 of [RFC3986]に従います)。¶
"security.txt"ファイルは、 第7節 of [RFC4880]に記述されているOpenPGPクリアテキスト署名を使用して デジタル署名されることが推奨されます(RECOMMENDED)。デジタル署名が使用される場合、 組織は(第2.5.2節に従って)"Canonical"フィールドを使用することも 推奨されます(RECOMMENDED)。これにより、デジタル署名がファイルの場所を認証できます。¶
署名の生成に使用された鍵を検証する際には、 使用されている鍵が実際に信頼する鍵であることを確認する責任は、 常にセキュリティ研究者にあります。¶
他の多くの形式やプロトコルと同様に、この形式も 変化し続けるインターネットの状況に適合するため、時間の経過とともに変更が 必要になる可能性があります。そのため、第6.2節で定義される フィールド用のIANAレジストリを通じて拡張性が提供されます。そのプロセスを通じて 登録されたすべてのフィールドは、 任意と見なされなければなりません(MUST)。拡張性と相互運用性を促進するため、 研究者は明示的にサポートしていないフィールドをすべて無視しなければなりません(MUST)。¶
一般に、実装者は「自分が行うことには保守的に、 他者から受け入れるものには寛容に」すべきです([RFC0793]に従います)。¶
別途記載がない限り、すべてのフィールドは 任意と見なされなければなりません(MUST)。¶
"Acknowledgments"フィールドは、セキュリティ研究者が 報告について認められるページへのリンクを示します。参照されるページには、 セキュリティ脆弱性を報告し、その修正に協力したセキュリティ研究者を 記載するべきです。組織は、将来の攻撃を防ぐために、 公開される脆弱性情報を制限するよう注意するべきです。¶
このフィールドがWeb URIを示す場合、それは "https://"で始まらなければなりません(MUST) (第2.7.2節 of [RFC7230]に従います)。¶
例:¶
Acknowledgments: https://example.com/hall-of-fame.html¶
セキュリティ謝辞ページの例:¶
We would like to thank the following researchers: (2017-04-15) Frank Denis - Reflected cross-site scripting (2017-01-02) Alice Quinn - SQL injection (2016-12-24) John Buchner - Stored cross-site scripting (2016-06-10) Anna Richmond - A server configuration issue¶
"Canonical"フィールドは、"security.txt"ファイルが配置されている 正規URIを示します。通常は "https://example.com/.well-known/security.txt"のようなものです。 このフィールドがWeb URIを示す場合、それは "https://"で始まらなければなりません(MUST) (第2.7.2節 of [RFC7230]に従います)。¶
このフィールドは、指定されたURIから取得された"security.txt"が そのURIに適用されることを意図していることを示しますが、 ファイル内に列挙されたすべての正規URIに適用されるものとして 解釈してはなりません(MUST NOT)。研究者は、特定の正規URIが適用可能であるかを 判断するために、(第2.3節に従った)デジタル署名などの追加の 信頼メカニズムを使用するべきです(SHOULD)。¶
このフィールドが"security.txt"ファイル内に現れ、そのファイルを 取得するために使用されたURIがいずれのcanonicalフィールドにも記載されていない場合、 そのファイルの内容は信頼するべきではありません(SHOULD NOT)。¶
Canonical: https://www.example.com/.well-known/security.txt Canonical: https://someserver.example.com/.well-known/security.txt¶
"Contact"フィールドは、メールアドレス、電話番号、および/または 連絡先情報を含むWebページなど、研究者がセキュリティ脆弱性を 報告するために使用するべき方法を示します。このフィールドは "security.txt"ファイル内に常に存在しなければなりません(MUST)。このフィールドがWeb URIを示す場合、 それは"https://"で始まらなければなりません(MUST)(第2.7.2節 of [RFC7230]に従います)。 セキュリティ用メールアドレスは、第 4節 of [RFC2142]で定義される慣習を使用するべきです。¶
値は、第3節 of [RFC3986]に記述されるURI構文に 従わなければなりません(MUST)。 これは、メールアドレスおよび電話番号を指定するとき、 [RFC6068]および [RFC3966]で定義されているように、 "mailto"および"tel" URIスキームを使用しなければならないことを意味します。このフィールドの値が メールアドレスである場合、(第2.5.4節に従って)暗号化を使用することが推奨されます (RECOMMENDED)。¶
これらは優先順に列挙するべきであり(SHOULD)、 最初の出現が優先される連絡方法、2番目の出現が2番目に優先される連絡方法、 というようになります。下の例では、最初のメールアドレス ("security@example.com")が優先される連絡方法です。¶
Contact: mailto:security@example.com Contact: mailto:security%2Buri%2Bencoded@example.com Contact: tel:+1-201-555-0123 Contact: https://example.com/security-contact.html¶
"Encryption"フィールドは、セキュリティ研究者が暗号化された通信に 使用するべき暗号鍵を示します。鍵はこのフィールド内に 現れてはなりません(MUST NOT)。 その代わり、このフィールドの値は、鍵を取得できる場所を指すURIで なければなりません(MUST)。 このフィールドがWeb URIを示す場合、それは "https://"で始まらなければなりません(MUST) (第2.7.2節 of [RFC7230]に従います)。¶
鍵の真正性を検証する際には、 指定された鍵が実際に信頼する鍵であることを確認する責任は、常に セキュリティ研究者にあります。研究者は、この鍵が 第2.3節で参照されるデジタル署名の生成に使用されるものだと 想定してはなりません。¶
Webサーバーから利用可能なOpenPGP鍵の例:¶
Encryption: https://example.com/pgp-key.txt¶
OPENPGPKEY DNSレコードから利用可能なOpenPGP鍵の例:¶
Encryption: dns:5d2d37ab76d47d36._openpgpkey.example.com?type=OPENPGPKEY¶
フィンガープリントによって参照されるOpenPGP鍵の例:¶
Encryption: openpgp4fpr:5f2de5521c63a801ab59ccb603d49de44b29100f¶
"Expires"フィールドは、"security.txt"ファイル内に含まれるデータが それ以降古くなったものと見なされ、使用されるべきではない日付と時刻を 示します(第5.3節に従います)。このフィールドの値は、 [RFC3339]で定義される [ISO.8601-1]および[ISO.8601-2]のインターネットプロファイルに従って 形式化されます。このフィールドの値は、古くなることを避けるため、 未来の1年未満にすることが推奨されます(RECOMMENDED)。¶
このフィールドは常に存在しなければならず (MUST)、 2回以上現れてはなりません(MUST NOT)。¶
Expires: 2021-12-31T18:37:07z¶
"Hiring"フィールドは、ベンダーの セキュリティ関連の求人へのリンクに使用されます。 このフィールドがWeb URIを示す場合、それは "https://"で始まらなければなりません(MUST) (第2.7.2節 of [RFC7230]に従います)。¶
Hiring: https://example.com/jobs.html¶
"Policy"フィールドは、脆弱性開示ポリシーが配置されている場所へのリンクを 示します。 これは、セキュリティ研究者が 組織の脆弱性報告の実践を理解するのに役立ちます。 このフィールドがWeb URIを示す場合、それは "https://"で始まらなければなりません(MUST) (第2.7.2節 of [RFC7230]に従います)。¶
例:¶
Policy: https://example.com/disclosure-policy.html¶
"Preferred-Languages"フィールドは、セキュリティ報告を提出する際に 優先される自然言語の集合を示すために使用できます。この集合には、 コンマで区切られた複数の値を列挙できます(MAY)。 このフィールドが含まれる場合、少なくとも 1つの値が列挙されなければなりません(MUST)。この集合内の値は、 ([RFC5646]で定義される) 言語タグです。このフィールドがない場合、セキュリティ研究者は 英語が使用される言語であると想定してもかまいません(第 4.5節 of [RFC2277]に従います)。¶
それらが現れる順序は優先順位を示すものではなく、 列挙された言語は同等の優先度を持つことを意図しています。¶
このフィールドは2回以上現れてはなりません (MUST NOT)。¶
例(英語、スペイン語、フランス語):¶
Preferred-Languages: en, es, fr¶
# Our security address Contact: mailto:security@example.com # Our OpenPGP key Encryption: https://example.com/pgp-key.txt # Our security policy Policy: https://example.com/security-policy.html # Our security acknowledgments page Acknowledgments: https://example.com/hall-of-fame.html Expires: 2021-12-31T18:37:07z¶
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 # Canonical URI Canonical: https://example.com/.well-known/security.txt # Our security address Contact: mailto:security@example.com # Our OpenPGP key Encryption: https://example.com/pgp-key.txt # Our security policy Policy: https://example.com/security-policy.html # Our security acknowledgments page Acknowledgments: https://example.com/hall-of-fame.html Expires: 2021-12-31T18:37:07z -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.2 [signature] -----END PGP SIGNATURE-----¶
Webベースのサービスでは、組織は [RFC8615]に従い、ドメイン名またはIPアドレスの "/.well-known/"パスの下、例としてhttps://example.com/.well-known/security.txtに "security.txt"ファイルを配置しなければなりません(MUST)。レガシー互換性のため、 "security.txt"ファイルはトップレベルパスに配置されることがあるほか、 (第6.4節 of [RFC7231]に従って) "/.well-known/"パスの下の"security.txt"ファイルへリダイレクトされることがあります。 "security.txt"ファイルが両方の場所に存在する場合、"/.well-known/"パス内のものが 使用されなければなりません(MUST)。¶
このファイルはHTTP 1.0またはそれ以上のバージョンでアクセスされなければならず、 ファイルアクセスには"https"スキームを使用しなければなりません(MUST) (第2.7.2節 of [RFC7230]に従います)。 これは、デフォルトのcharsetパラメータを"utf-8"に設定した "text/plain"のContent-Typeを持たなければなりません(MUST) (第4.1.3節 of [RFC2046]に従います)。¶
"security.txt"ファイルおよびそのようなファイル内で示されたリソースの取得は、 (第6.4節 of [RFC7231]に従って) リダイレクトを引き起こす可能性があります。研究者は、これらのリダイレクトが 悪意のあるものではなく、攻撃者によって制御されるリソースを指していないことを確認するため、 (第 5.2節に従って)追加の分析を行うべきです。¶
"security.txt"ファイルは、それを取得するために使用されたURI内のドメイン またはIPアドレスにのみ適用されなければならず(MUST)、 そのサブドメインまたは親ドメインには適用されません。 "security.txt"ファイルは、そのファイルを公開している組織が提供する製品およびサービスにも 適用されてもかまいません(MAY)。¶
第1.1節に従い、この仕様は 脆弱性対応を意図しています。 実装者がこれをインシデント対応に使用したい場合は、 第5.1節で説明される追加の セキュリティ上の考慮事項を認識しておくべきです。¶
組織は、(第2.5.7節に従って) policyディレクティブを使用し、脆弱性開示プロセスの範囲および詳細に関する追加情報を 提供するべきです(SHOULD)。¶
いくつかの例を以下に示します:¶
# The following only applies to example.com. https://example.com/.well-known/security.txt # This only applies to subdomain.example.com. https://subdomain.example.com/.well-known/security.txt # This security.txt file applies to IPv4 address of 192.0.2.0. https://192.0.2.0/.well-known/security.txt # This security.txt file applies to IPv6 address of 2001:db8:8:4::2. https://[2001:db8:8:4::2]/.well-known/security.txt¶
"security.txt"ファイルのファイル形式は、 第4.1.3節 of [RFC2046]で定義されるプレーンテキスト (MIMEタイプ"text/plain")でなければならず(MUST)、 Net-Unicode形式[RFC5198]の UTF-8 [RFC3629]を使用して エンコードされなければなりません(MUST)。¶
このファイルの形式は、以下のABNF定義 ([RFC5234]のコアABNF規則を取り込み、 [RFC7405]の大文字小文字を区別する文字列サポートを使用する) に従わなければなりません(MUST)。¶
body = signed / unsigned
unsigned = *line (contact-field eol) ; one or more required
*line (expires-field eol) ; exactly one required
*line [lang-field eol] *line ; exactly one optional
; order of fields within the file is not important
; except that if contact-field appears more
; than once, the order of those indicates
; priority (see Section 3.5.3)
; signed is the production that should match the OpenPGP clearsigned
; document
signed = cleartext-header
1*(hash-header)
CRLF
cleartext
signature
cleartext-header = %s"-----BEGIN PGP SIGNED MESSAGE-----" CRLF
hash-header = %s"Hash: " hash-alg *("," hash-alg) CRLF
hash-alg = token
; imported from RFC 2045; see RFC 4880 Section
; 10.3.3 for a pointer to the registry of
; valid values
;cleartext = 1*( UTF8-octets [CR] LF)
; dash-escaped per RFC 4880 Section 7.1
cleartext = *((line-dash / line-from / line-nodash) [CR] LF)
line-dash = ("- ") "-" *UTF8-char-not-cr
; MUST include initial "- "
line-from = ["- "] "From " *UTF8-char-not-cr
; SHOULD include initial "- "
line-nodash = ["- "] *UTF8-char-not-cr
; MAY include initial "- "
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
; 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
signature = armor-header
armor-keys
CRLF
signature-data
armor-tail
armor-header = %s"-----BEGIN PGP SIGNATURE-----" CRLF
armor-keys = *(token ": " *( VCHAR / WSP ) CRLF)
; Armor Header Keys from RFC 4880
armor-tail = %s"-----END PGP SIGNATURE-----" CRLF
signature-data = 1*(1*(ALPHA / DIGIT / "=" / "+" / "/") CRLF)
; base64; see RFC 4648
; includes RFC 4880 checksum
line = [ (field / comment) ] eol
eol = *WSP [CR] LF
field = ; optional fields
ack-field /
can-field /
contact-field / ; optional repeated instances
encryption-field /
hiring-field /
policy-field /
ext-field
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
¶
URIおよびwell-knownリソースの使用により、以下に概説する考慮事項に加えて、 [RFC3986]および[RFC8615]のセキュリティに関する考慮事項がここに適用されます。¶
Webサイトを侵害した攻撃者は、 "security.txt"ファイルも侵害したり、自身のサイトへのリダイレクトを設定したりできます。 これにより、セキュリティ報告が組織に届かなかったり、 攻撃者に送信されたりする可能性があります。¶
これを防ぐため、組織は (第2.5.2節に従って)"Canonical"フィールドを使用して ファイルの場所を示し、(第2.3節に従って) "security.txt"ファイルにデジタル署名し、改ざんを検出するために ファイルおよび参照されるリソースを定期的に監視するべきです。¶
セキュリティ研究者は、"security.txt"ファイルに含まれる情報を使用する前に、 デジタル署名の検証や利用可能な履歴記録の確認を含めて、 "security.txt"ファイルを検証するべきです。"security.txt"ファイルが疑わしい、または侵害されているように見える場合、 それは使用されるべきではありません。¶
推奨されませんが、実装者はインシデント対応のために "security.txt"ファイル内で公開された情報を使用することを選択できます。 そのような場合、その情報は攻撃者によって侵害されている可能性があるため、 そのような情報を信頼する前には極めて慎重であるべきです。研究者は、 Pretty Good Privacy(PGP)署名の帯域外検証、DNSSECベースの手法など、 そのようなデータを検証するための追加の方法を使用するべきです。¶
ファイルおよびファイル内で参照されるリソースを取得する際、研究者は あらゆるリダイレクトを記録するべきです。これは、それらが攻撃者によって制御される 別のドメインまたはIPアドレスにつながる可能性があるためです。 ファイル内に含まれる情報を使用する前に、そのようなリダイレクトのさらなる 検査が推奨されます。¶
"security.txt"ファイル内で参照される情報およびリソースが不正確である、 または最新に保たれていない場合、セキュリティ報告が組織に届かなかったり、 誤った連絡先に送信されたりし、その結果、潜在的なセキュリティ問題が 第三者に露出する可能性があります。古くなった情報をこのファイルに持つよりも、 "security.txt"ファイルを持たない方が望ましい場合があります。組織は "Expires"フィールド(第2.5.5節参照)を使用して、 ファイル内のデータがいつ無効になるかを研究者に示さなければなりません。¶
組織は、このファイル内の情報およびWebページ、メールアドレス、 電話番号などの参照されるリソースが最新に保たれ、アクセス可能であり、 組織によって制御され、かつ安全に保たれていることを確実にするべきです。¶
侵害された、または悪意のあるサイトが、解析コードの弱点を発見または悪用しようとして、 非常に大きい、またはその他の形で不正形式のファイルを作成する可能性があります。 研究者は、そのようなコードが大きなファイルや不正形式のファイルおよびフィールドに対して 堅牢であることを確認するべきであり、32 KBを超えるファイル、2,048文字を超えるフィールド、 または1,000行を超えるファイルを解析しないように選択してもかまいません。ABNF文法 (第4節で定義)は、これらのファイルを検証する方法としても使用できます。¶
同じ懸念は、"security.txt"ファイル内で参照される その他の任意のリソース、およびこのファイルの公開の結果として受信される 任意のセキュリティ報告にも適用されます。そのようなリソースや報告は、 敵対的、不正形式、または悪意のあるものである可能性があります。¶
"security.txt"ファイルの存在は、研究者によって、 それが公開されているドメインまたはIPアドレス、あるいはそのファイルを公開している組織が 提供する製品およびサービスに対してセキュリティテストを行う許可を与えるものとして 解釈される可能性があります。 これにより、研究者による組織へのテストが増加する可能性があります。一方で、 "security.txt"ファイルを公開しないという決定は、そのWebサイトを運営する組織によって、 その特定のサイトまたはプロジェクトをテストする許可が拒否されていることを 研究者に示す方法として解釈される可能性があります。これにより、その組織に セキュリティ問題を報告する研究者に対して反発が生じる可能性があります。¶
したがって、研究者は、"security.txt"ファイルの存在または不在が、 セキュリティテストの許可または拒否を付与するものだと想定するべきではありません。 そのような許可は、会社の脆弱性開示ポリシー (第2.5.7節に従う)または新しいフィールド (第2.4節に従う)で示される場合があります。¶
マルチユーザー/マルチテナント環境では、ユーザーが "security.txt"ファイルの場所を乗っ取ることが可能な場合があります。組織は、 第三者が"security.txt"および"/.well-known/security.txt"という名前でページを作成できないように、 ルートで"security.txt"名前空間を予約するべきです。¶
"security.txt"ファイルが転送中に改ざんされることを防ぐため、 実装者はファイル自体を提供する際、およびその中で参照される任意のWeb URIを取得する際、 HTTPS(第2.7.2節 of [RFC7230]に従う)を使用しなければなりません(MUST) (この仕様で別途記されている場合を除きます)。TLSハンドシェイクの一部として、 研究者は、[RFC6125]および以下の 考慮事項に従って、提供されたX.509証明書を検証するべきです:¶
証明書は、Online Certificate Status Protocol(OCSP)[RFC6960]、 証明書失効リスト(CRL)、または同様の仕組みによって失効について確認されてもかまいません。¶
"security.txt"ファイルをHTTPS経由で提供できない場合 (localhostなど)や、無効な証明書で提供されている場合には、 内容が転送中に変更されている可能性があるため、追加の人間による検証が推奨されます。¶
追加の保護層として、組織は (第2.3節に従って)OpenPGPで"security.txt"ファイルにデジタル署名することも 推奨されます。 また、セキュリティ報告が転送中に改ざんまたは観察されることを防ぐため、 組織は、報告提出にHTTPSが使用されていない限り、 (第 2.5.4節に従って)暗号鍵を指定するべきです。¶
ただし、そのような鍵の有効性の判断は この仕様の範囲外です。セキュリティ研究者は、それらを検証するための 他の安全な手段を確立する必要があります。¶
[RFC2142]における懸念と同様に、 "security.txt"ファイルが組織によって公開されると、スパム報告による サービス拒否攻撃が容易になります。さらに、人間による分析なしに、 自動化された方法で、および/または自動スキャンの結果として報告が送信される 可能性が高まります。攻撃者は、このファイルを、関係のない第三者のリソースや 連絡先情報を列挙することによって、第三者にスパムを送る手段として使用することもできます。¶
組織は、このファイルを公開する利点と、 セキュリティ報告を分析するために必要となる可能性のある不利な点および追加リソースを 比較検討する必要があります。¶
セキュリティ研究者は、自動化された方法で報告を提出する前、または 自動スキャンの結果として報告を提出する前に、"security.txt"ファイル内のすべての情報を 確認するべきです。¶
実装者は、"security.txt"ファイル内で参照される任意のリソースが、 IANAに登録されていない限り([RFC8615]に従う)、 Well-Known URIs名前空間を指してはならないことを認識しておくべきです(MUST NOT)。¶
IANAは、([RFC8615]のテンプレートを使用して) "Well-Known URIs"レジストリを以下の追加値で更新しました:¶
IANAは、[RFC8126]に従って "security.txt Fields"レジストリを作成しました。このレジストリは、 "security.txt"ファイルで使用するための、この仕様によって定義されるフィールドを含みます。¶
新しい登録または更新は、 [RFC8126]の 4.5節および5節に記述されている "Expert Review"ガイドラインに従って公開されなければなりません(MUST)。 そのように登録された新しいフィールドは、この仕様の新しいバージョンが公開されない限り、 この仕様では任意と見なされます。¶
指定専門家は、提案された登録または更新が、この形式を使用する組織および 研究者に価値を提供するか、また [ISO.29147.2018]や [CERT.CVD]などの業界で受け入れられている 脆弱性開示プロセスの文脈で妥当であるかを判断するべきです。¶
新しい登録および更新は、以下の情報を含まなければなりません(MUST):¶
新規または更新後の状態。これは以下のいずれかで なければなりません(MUST):¶
既存の登録は、必要に応じて、この文書の将来の更新によって historicまたはdeprecatedとして示されることがあります。¶
初期レジストリには以下の値が含まれます:¶
2.1. コメント
"#"(%x23)記号で始まる任意の行は、 コメントとして解釈されなければなりません(MUST)。コメントの内容には、 %x21-7Eおよび%x80-FFFFFの範囲の任意のASCIIまたはUnicode文字に加えて、 タブ(%x09)および空白(%x20)文字を含めることができます。¶
例:¶