| rfc9674.original | rfc9674.txt | |||
|---|---|---|---|---|
| SIDROPS J. Snijders | Internet Engineering Task Force (IETF) J. Snijders | |||
| Internet-Draft Fastly | Request for Comments: 9674 Fastly | |||
| Updates: 8182 (if approved) 2 October 2024 | Updates: 8182 November 2024 | |||
| Intended status: Standards Track | Category: Standards Track | |||
| Expires: 5 April 2025 | ISSN: 2070-1721 | |||
| Same-Origin Policy for the RPKI Repository Delta Protocol (RRDP) | Same-Origin Policy for the RPKI Repository Delta Protocol (RRDP) | |||
| draft-ietf-sidrops-rrdp-same-origin-04 | ||||
| Abstract | Abstract | |||
| This document describes a Same-Origin Policy (SOP) requirement for | This document describes a Same-Origin Policy (SOP) requirement for | |||
| RPKI Repository Delta Protocol (RRDP) servers and clients. | Resource Public Key Infrastructure (RPKI) Repository Delta Protocol | |||
| Application of SOP in RRDP client/server communication isolates | (RRDP) servers and clients. Application of a SOP in RRDP client/ | |||
| resources such as Delta and Snapshot files from different Repository | server communication isolates resources such as Delta and Snapshot | |||
| Servers, reducing possible attack vectors. This document updates RFC | files from different Repository Servers, reducing possible attack | |||
| 8182. | vectors. This document updates RFC 8182. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| 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). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 5 April 2025. | 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/rfc9674. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2024 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 Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| 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 Revised 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 . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
| 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 | 1.1. Requirements Language | |||
| 2. Implications of cross-origin resource requests in RRDP . . . 3 | 2. Implications of Cross-Origin Resource Requests in RRDP | |||
| 3. Changes to RFC 8182 . . . . . . . . . . . . . . . . . . . . . 3 | 3. Changes to RFC 8182 | |||
| 3.1. New Requirements for RRDP Repository Servers . . . . . . 3 | 3.1. New Requirements for RRDP Repository Servers | |||
| 3.2. New Requirements for Relying Parties using RRDP . . . . . 3 | 3.2. New Requirements for Relying Parties Using RRDP | |||
| 4. Deployability in the Internet's current RPKI . . . . . . . . 4 | 4. Deployability in the Internet's Current RPKI | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 4 | 5. Security Considerations | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 4 | 6. IANA Considerations | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 7. References | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 4 | 7.1. Normative References | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 5 | 7.2. Informative References | |||
| Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 6 | Acknowledgements | |||
| Appendix B. Implementation status . . . . . . . . . . . . . . . 6 | Author's Address | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 6 | ||||
| 1. Introduction | 1. Introduction | |||
| This document specifies a Same-origin policy (SOP) requirement for | This document specifies a Same-Origin Policy (SOP) requirement for | |||
| RPKI Repository Delta Protocol (RRDP) servers and clients. The SOP | RPKI Repository Delta Protocol (RRDP) servers and clients. The SOP | |||
| concept is a security mechanism to restrict how a document loaded | concept is a security mechanism to restrict how a document loaded | |||
| from one origin can cause interaction with resources from another | from one origin can cause interaction with resources from another | |||
| origin. See [RFC6454] for an overview of the concept of an "origin". | origin. See [RFC6454] for an overview of the concept of an "origin". | |||
| Application of SOP in RRDP client/server communication isolates | Application of a SOP in RRDP client/server communication isolates | |||
| resources such as Delta and Snapshot files from different Repository | resources such as Delta and Snapshot files from different Repository | |||
| Servers, reducing possible attack vectors. Another way to avoid | Servers, reducing possible attack vectors. Another way to avoid | |||
| undesirable implications (as described in Section 2) would be for a | undesirable implications (as described in Section 2) would be for a | |||
| future version of the RRDP protocol to use relative URIs instead of | future version of RRDP to use relative URIs instead of absolute URIs. | |||
| absolute URIs. This document updates [RFC8182]. | This document updates [RFC8182]. | |||
| 1.1. Requirements Language | 1.1. Requirements Language | |||
| 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 | "OPTIONAL" in this document are to be interpreted as described in | |||
| BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 2. Implications of cross-origin resource requests in RRDP | 2. Implications of Cross-Origin Resource Requests in RRDP | |||
| The first RRDP protocol specification did not explicitly disallow | The first RRDP specification did not explicitly disallow 'cross- | |||
| 'cross-origin' URI references from the Update Notification file | origin' URI references from the Update Notification file | |||
| (Section 3.5.1 of [RFC8182]) towards Delta (Section 3.5.3 of | (Section 3.5.1 of [RFC8182]) towards Delta (Section 3.5.3 of | |||
| [RFC8182]) and Snapshot (Section 3.5.2 of [RFC8182]) files, and was | [RFC8182]) and Snapshot (Section 3.5.2 of [RFC8182]) files, and it | |||
| silent on the topic of HTTP Redirection (Section 15.4 of [RFC9110]). | was silent on the topic of HTTP Redirection (Section 15.4 of | |||
| [RFC9110]). | ||||
| The implication of cross-origin references in Update Notification | The implication of cross-origin references in Update Notification | |||
| files is that one Repository Server can reference RRDP resources on | files is that one Repository Server can reference RRDP resources on | |||
| another Repository Server and in doing so inappropriately increase | another Repository Server and in doing so inappropriately increase | |||
| the resource consumption for both RRDP clients and the referenced | the resource consumption for both RRDP clients and the referenced | |||
| Repository Server. An adversary could also employ cross-origin HTTP | Repository Server. An adversary could also employ cross-origin HTTP | |||
| Redirects towards other Repository Servers, causing similar | Redirects towards other Repository Servers, causing similar | |||
| undesirable behavior. | undesirable behavior. | |||
| 3. Changes to RFC 8182 | 3. Changes to RFC 8182 | |||
| To overcome the aforementioned issue described in Section 2, RRDP | To overcome the issue described in Section 2, RRDP Repository Servers | |||
| Repository Servers and Clients MUST apply a Same-Origin Policy to | and Clients MUST apply a Same-Origin Policy to both the URIs | |||
| both the URIs referenced in an Update Notification File and any HTTP | referenced in an Update Notification File and any HTTP Redirects. | |||
| Redirects. | ||||
| 3.1. New Requirements for RRDP Repository Servers | 3.1. New Requirements for RRDP Repository Servers | |||
| The following checklist items are added to Section 3.5.1.3 of | The following checklist items are added to Section 3.5.1.3 of | |||
| [RFC8182]: | [RFC8182]: | |||
| NEW | NEW | |||
| | * The "uri" attribute in the snapshot element and optional delta | | * The "uri" attribute in the snapshot element and optional delta | |||
| | elements MUST be part of the same origin (i.e., represent the | | elements MUST be part of the same origin (i.e., represent the | |||
| | same principal), meaning referenced URIs MUST have the same | | same principal), meaning referenced URIs MUST have the same | |||
| | scheme, host, and port as the URI for the Update Notification | | scheme, host, and port as the URI for the Update Notification | |||
| | File specified in the referring RRDP SIA AccessDescription. | | File specified in the referring RRDP SIA AccessDescription. | |||
| | | | | |||
| | * The Repository Server MUST NOT respond with HTTP Redirects | | * The Repository Server MUST NOT respond with HTTP Redirects | |||
| | towards locations with an origin different from the origin of | | towards locations with an origin different from the origin of | |||
| | the Update Notification File specified in the referring RRDP | | the Update Notification File specified in the referring RRDP | |||
| | SIA AccessDescription. | | SIA AccessDescription. | |||
| 3.2. New Requirements for Relying Parties using RRDP | 3.2. New Requirements for Relying Parties Using RRDP | |||
| The following adds to Section 3.4.1 of [RFC8182]: | The following adds to Section 3.4.1 of [RFC8182]: | |||
| NEW | NEW | |||
| | * The Relying Party MUST verify whether the "uri" attributes in | | * The Relying Party MUST verify whether the "uri" attributes in | |||
| | the Update Notification File are of the same origin as the | | the Update Notification File are of the same origin as the | |||
| | Update Notification File itself. If this verification fails, | | Update Notification File itself. If this verification fails, | |||
| | the file MUST be rejected and RRDP cannot be used, see | | the file MUST be rejected and RRDP cannot be used; see | |||
| | Section 3.4.5 of [RFC8182] for considerations. Implementations | | Section 3.4.5 for considerations. Implementations SHOULD log a | |||
| | SHOULD log a message when cross-origin referrals are detected. | | message when cross-origin referrals are detected. | |||
| | | | | |||
| | * The Relying Party MUST NOT follow HTTP Redirection following | | * The Relying Party MUST NOT follow HTTP Redirection that results | |||
| | from attempts to download Update Notification, Delta, and | | from attempts to download Update Notification, Delta, and | |||
| | Snapshot files if the target origin is different from the | | Snapshot files if the target origin is different from the | |||
| | origin of the Update Notification File specified in the | | origin of the Update Notification File specified in the | |||
| | referring RRDP SIA AccessDescription. If this verification | | referring RRDP SIA AccessDescription. If this verification | |||
| | fails, the RRDP session MUST be rejected and RRDP cannot be | | fails, the RRDP session MUST be rejected and RRDP cannot be | |||
| | used, see Section 3.4.5 of [RFC8182] for considerations. | | used; see Section 3.4.5 for considerations. Implementations | |||
| | Implementations SHOULD log a message when cross-origin | | SHOULD log a message when cross-origin redirects are detected. | |||
| | redirects are detected. | ||||
| 4. Deployability in the Internet's current RPKI | 4. Deployability in the Internet's Current RPKI | |||
| Analysing the [rpkiviews] archives for the period from April to | Analyzing the [rpkiviews] archives for the period from April to | |||
| September 2024, only one RRDP server (reached following the TALs of | September 2024, only one RRDP server (reached following the Trust | |||
| the five Regional Internet Registries) employed a same-origin HTTP | Anchor Locators (TALs) of the five Regional Internet Registries) | |||
| redirect. In the period October 2021 - October 2024 no RRDP | employed a same-origin HTTP redirect. In the period October 2021 - | |||
| Repository Servers were observed which employed cross-origin URIs in | October 2024 no RRDP Repository Servers were observed that employed | |||
| Update Notification Files. | cross-origin URIs in Update Notification Files. | |||
| This means that imposing a requirement for the application of a Same- | This means that imposing a requirement for the application of a Same- | |||
| Origin Policy does not cause any existing commonly-used RRDP | Origin Policy does not cause any existing commonly used RRDP | |||
| Repository Server operations to become non-compliant. | Repository Server operations to become non-compliant. | |||
| 5. Security Considerations | 5. Security Considerations | |||
| This document addresses an oversight in the original RRDP protocol | This document addresses an oversight in the original RRDP | |||
| specification: cross-origin requests are detrimental as they allow | specification: Cross-origin requests are detrimental as they allow | |||
| one repository operator to increase resource consumption for other | one repository operator to increase resource consumption for other | |||
| repository operators and RRDP clients. | repository operators and RRDP clients. | |||
| 6. IANA Considerations | 6. IANA Considerations | |||
| No IANA actions required. | This document has no IANA actions. | |||
| 7. References | 7. References | |||
| 7.1. Normative References | 7.1. Normative References | |||
| [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 5, line 30 ¶ | skipping to change at line 203 ¶ | |||
| DOI 10.17487/RFC8182, July 2017, | DOI 10.17487/RFC8182, July 2017, | |||
| <https://www.rfc-editor.org/info/rfc8182>. | <https://www.rfc-editor.org/info/rfc8182>. | |||
| [RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | [RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
| Ed., "HTTP Semantics", STD 97, RFC 9110, | Ed., "HTTP Semantics", STD 97, RFC 9110, | |||
| DOI 10.17487/RFC9110, June 2022, | DOI 10.17487/RFC9110, June 2022, | |||
| <https://www.rfc-editor.org/info/rfc9110>. | <https://www.rfc-editor.org/info/rfc9110>. | |||
| 7.2. Informative References | 7.2. Informative References | |||
| [FORT-validator] | ||||
| Leiva, A., "FORT validator", | ||||
| <https://fortproject.net/en/validator>. | ||||
| [Routinator] | ||||
| NLNet Labs, "Routinator", | ||||
| <https://github.com/NLnetLabs/routinator/>. | ||||
| [rpki-client] | ||||
| Jeker, C., Snijders, J., Dzonsons, K., and T. Buehler, | ||||
| "rpki-client", <https://www.rpki-client.org/>. | ||||
| [rpki-prover] | ||||
| Puzanov, M., "rpki-prover", | ||||
| <https://github.com/lolepezy/rpki-prover>. | ||||
| [rpkiviews] | [rpkiviews] | |||
| Snijders, J., "rpkiviews", October 2024, | Snijders, J., "rpkiviews", <https://www.rpkiviews.org>. | |||
| <http://www.rpkiviews.org/>. | ||||
| Appendix A. Acknowledgements | Acknowledgements | |||
| The author wishes to thank Theo Buehler, Claudio Jeker, Alberto | The author wishes to thank Theo Buehler, Claudio Jeker, Alberto | |||
| Leiva, Tim Bruijnzeels, Ties de Kock, Martin Hoffmann, and Mikhail | Leiva, Tim Bruijnzeels, Ties de Kock, Martin Hoffmann, and Mikhail | |||
| Puzanov for their helpful feedback, comments, and implementation | Puzanov for their helpful feedback, comments, and implementation | |||
| work. The author wishes to thank Keyur Patel, Meral Shirazipour, | work. The author wishes to thank Keyur Patel, Meral Shirazipour, | |||
| Niclas Comstedt, Dan Harkins, Erik Kline, Roman Danyliw, and Éric | Niclas Comstedt, Dan Harkins, Erik Kline, Roman Danyliw, and Éric | |||
| Vyncke for their review. | Vyncke for their review. | |||
| Appendix B. Implementation status | ||||
| This section is to be removed before publishing as an RFC. | ||||
| This section records the status of known implementations of the | ||||
| protocol defined by this specification at the time of posting of this | ||||
| Internet-Draft, and is based on a proposal described in RFC 7942. | ||||
| The description of implementations in this section is intended to | ||||
| assist the IETF in its decision processes in progressing drafts to | ||||
| RFCs. Please note that the listing of any individual implementation | ||||
| here does not imply endorsement by the IETF. Furthermore, no effort | ||||
| has been spent to verify the information presented here that was | ||||
| supplied by IETF contributors. This is not intended as, and must not | ||||
| be construed to be, a catalog of available implementations or their | ||||
| features. Readers are advised to note that other implementations may | ||||
| exist. | ||||
| According to RFC 7942, "this will allow reviewers and working groups | ||||
| to assign due consideration to documents that have the benefit of | ||||
| running code, which may serve as evidence of valuable experimentation | ||||
| and feedback that have made the implemented protocols more mature. | ||||
| It is up to the individual working groups to use this information as | ||||
| they see fit". | ||||
| * OpenBSD's [rpki-client] | ||||
| * Mikhail Puzanov's [rpki-prover] | ||||
| * FORT project's [FORT-validator] | ||||
| * NLNet Labs' [Routinator] | ||||
| Author's Address | Author's Address | |||
| Job Snijders | Job Snijders | |||
| Fastly | Fastly | |||
| Amsterdam | Amsterdam | |||
| Netherlands | Netherlands | |||
| Email: job@fastly.com | Email: job@fastly.com | |||
| End of changes. 29 change blocks. | ||||
| 128 lines changed or deleted | 75 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||