The Use of Maxlength in the RPKI
Hebrew University of Jerusalem
Rothburg Family Buildings, Edmond J. Safra Campus
Jerusalem
9190416
Israel
yossigi@cs.huji.ac.il
Boston University
111 Cummington St, MCS135
Boston
MA
02215
USA
goldbe@cs.bu.edu
USA National Institute of Standards and Technology
100 Bureau Drive
Gaithersburg
MD
20899
USA
kotikalapudi.sriram@nist.gov
Fastly
Amsterdam
Netherlands
job@fastly.com
Workonline Communications
114 West St
Johannesburg
2196
South Africa
benm@workonline.africa
Secure Internet routing
Resource public key infrastructure
This document recommends ways to reduce forged-origin hijack attack surface by
prudently limiting the set of IP prefixes that are included in a Route Origin
Authorization (ROA). One recommendation is to avoid using the maxLength attribute
in ROAs except in some specific cases. The recommendations complement and extend
those in RFC 7115. The document also discusses creation of ROAs for facilitating
the use of Distributed Denial of Service (DDoS) mitigation services. Considerations
related to ROAs and origin validation in the context of destination-based Remote
Triggered Black Hole (RTBH) filtering are also highlighted.
The RPKI uses Route Origin Authorizations (ROAs) to create
a cryptographically verifiable mapping from an IP prefix to a set of autonomous
systems (ASes) that are authorized to originate that prefix.
Each ROA contains a set of IP prefixes, and an AS number of an AS authorized to
originate all the IP prefixes in the set .
The ROA is cryptographically signed by the party that holds a certificate for the
set of IP prefixes.
The ROA format also supports a maxLength attribute. According to
, "When present, the maxLength specifies the maximum length
of the IP address prefix that the AS is authorized to advertise."
Thus, rather than requiring the ROA to list each prefix the AS is authorized to
originate, the maxLength attribute provides a shorthand that authorizes an AS to
originate a set of IP prefixes.
However, measurements of current RPKI deployments have found that use of the
maxLength in ROAs tends to lead to security problems.
Specifically, measurements have shown that 84% of the prefixes specified in ROAs
that use the maxLength attribute, are vulnerable to a forged-origin subprefix
hijack .
The forged-origin prefix or subprefix hijack involves inserting the legitimate AS
as specified in the ROA as the origin AS in the AS_PATH, and can be launched
against any IP prefix/subprefix that has a ROA. Consider a prefix/subprefix that
has a ROA but is unused, i.e., not announced in BGP by a legitimate AS. A forged
origin hijack involving such a prefix/subprefix can propagate widely throughout the
Internet. On the other hand, if the prefix/subprefix were announced by the
legitimate AS, then the propagation of the forged-origin hijack is somewhat limited
because of its increased AS_PATH length relative to the legitimate announcement. Of
course, forged-origin hijacks are harmful in both cases but the extent of harm is
greater for unannounced prefixes.
For this reason, this document recommends that, whenever possible, operators SHOULD
use "minimal ROAs" that authorize only those IP prefixes that are actually
originated in BGP, and no other prefixes. Further, it recommends ways to reduce
forged-origin attack surface by prudently limiting the address space that is
included in Route Origin Authorizations (ROAs). One recommendation is to avoid
using the maxLength attribute in ROAs except in some specific cases. The
recommendations complement and extend those in . The
document also discusses creation of ROAs for facilitating the use of Distributed
Denial of Service (DDoS) mitigation services. Considerations related to ROAs and
origin validation in the context of destination-based Remote Triggered Black Hole
(RTBH) filtering are also highlighted.
One ideal place to implement the ROA related recommendations is in the user
interfaces for configuring ROAs. Thus, this document further recommends that
designers and/or providers of such user interfaces SHOULD provide warnings to draw
the user's attention to the risks of using the maxLength attribute.
Best current practices described in this document require no changes to the RPKI
specification and will not increase the number of signed ROAs in the RPKI, because
ROAs already support lists of IP prefixes .
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
interpreted as described in .
The documentation prefixes recommended in are
insufficient for use as example prefixes in this document. Therefore, this
document uses address space for constructing example
prefixes.
It is assumed that the reader understands BGP , RPKI
, Route Origin Authorizations (ROAs)
, RPKI-based Prefix Validation ,
and BGPsec .
A detailed description and discussion of forged-origin subprefix hijacks are
presented here, especially considering the case when the subprefix is not announced
in BGP.
The forged-origin subprefix hijack is relevant to a scenario in which:
(1) the RPKI is deployed, and
(2) routers use RPKI origin validation to drop invalid routes
, but
(3) BGPsec (or any similar method to validate the
truthfulness of the BGP AS_PATH attribute) is not deployed.
Note that this set of assumptions accurately describes a substantial, and growing,
number of large Internet networks at the time writing.
The forged-origin subprefix hijack
is described here using a running example.
Consider the IP prefix 192.168.0.0/16 which is allocated to an organization that
also operates AS 64496.
In BGP, AS 64496 originates the IP prefix 192.168.0.0/16 as well as its subprefix
192.168.225.0/24.
Therefore, the RPKI should contain a ROA authorizing AS 64496 to originate these
two IP prefixes.
Suppose, however, the organization issues and publishes a ROA including a maxLength
value of 24:
ROA:(192.168.0.0/16-24, AS 64496)
We refer to the above as a "loose ROA" since it authorizes AS 64496 to originate
any subprefix of 192.168.0.0/16 up to and including length /24, rather than only
those prefixes that are intended to be announced in BGP.
Because AS 64496 only originates two prefixes in BGP: 192.168.0.0/16 and
192.168.225.0/24, all other prefixes authorized by the "loose ROA" (for instance,
192.168.0.0/24), are vulnerable to the following forged-origin subprefix hijack
:
The hijacker AS 64511 sends a BGP announcement "192.168.0.0/24: AS 64511,
AS 64496", falsely claiming that AS 64511 is a neighbor of AS 64496 and
falsely claiming that AS 64496 originates the IP prefix 192.168.0.0/24.
In fact, the IP prefix 192.168.0.0/24 is not originated by AS 64496.
The hijacker's BGP announcement is valid according to the RPKI, since the
ROA (192.168.0.0/16-24, AS 64496) authorizes AS 64496 to originate BGP
routes for 192.168.0.0/24.
Because AS 64496 does not actually originate a route for 192.168.0.0/24,
the hijacker's route is the *only* route to the 192.168.0.0/24.
Longest-prefix-match routing ensures that the hijacker's route to the
subprefix 192.168.0.0/24 is always preferred over the legitimate route to
192.168.0.0/16 originated by AS 64496.
Thus, the hijacker's route propagates through the Internet, the traffic destined
for IP addresses in 192.168.0.0/24 will be delivered to the hijacker.
The forged-origin *subprefix* hijack would have failed if a "minimal ROA" described
below was used instead of the "loose ROA".
In this example, a "minimal ROA" would be:
ROA:(192.168.0.0/16, 192.168.225.0/24, AS 64496)
This ROA is "minimal" because it includes only those IP prefixes that AS 64496
originates in BGP, but no other IP prefixes .
The "minimal ROA" renders AS 64511's BGP announcement invalid, because:
(1) this ROA "covers" the attacker's announcement (since 192.168.0.0/24 is
a subprefix of 192.168.0.0/16), and
(2) there is no ROA "matching" the attacker's announcement (there is no ROA
for AS 64511 and IP prefix 192.168.0.0/24) .
If routers ignore invalid BGP announcements, the minimal ROA above ensures that the
subprefix hijack will fail.
Thus, if a "minimal ROA" had been used, the attacker would be forced to launch a
forged-origin *prefix* hijack in order to attract traffic, as follows:
The hijacker AS 64511 sends a BGP announcement "192.168.0.0/16: AS 64511,
AS 64496", falsely claiming that AS 64511 is a neighbor of AS 64496.
This forged-origin *prefix* hijack is significantly less damaging than the
forged-origin *subprefix* hijack:
AS 64496 legitimately originates 192.168.0.0/16 in BGP, so the hijacker
AS 64511 is not presenting the *only* route to 192.168.0.0/16.
Moreover, the path originated by AS 64511 is one hop longer than the path
originated by the legitimate origin AS 64496.
As discussed in , this means that the hijacker will attract
less traffic than he would have in the forged-origin *subprefix* hijack, where
the hijacker presents the *only* route to the hijacked subprefix.
In summary, a forged-origin subprefix hijack has the same impact as a regular
subprefix hijack, despite the increased AS_PATH length of the illegitimate route.
A forged-origin *subprefix* hijack is also more damaging than forged-origin
*prefix* hijack.
Network measurements have shown that 12% of the IP prefixes authorized in ROAs have
a maxLength longer than their prefix length.
Of these, the vast majority (84%) are non-minimal, as they include subprefixes that
are not announced in BGP by the legitimate AS, and are thus vulnerable to forged
origin subprefix hijacks.
See for details.
These measurements suggest that operators commonly misconfigure the maxLength
attribute, and unwittingly open themselves up to forged-origin subprefix hijacks.
That is, they are exposing a much larger attack surface for forged-origin hijacks
than necessary.
Operators SHOULD use "minimal ROAs" whenever possible.
A minimal ROA contains only those IP prefixes that are actually originated by an AS
in BGP, and no other IP prefixes.
(See for an example.)
In general, except in some special cases, operators SHOULD avoid using the
maxLength attribute in their ROAs, since its inclusion will usually make the ROA
non-minimal.
One such exception may be when all more specific prefixes permitted by the
maxLength are actually announced by the AS in the ROA.
Another exception is where: (a) the maxLength is substantially larger compared to
the specified prefix length in the ROA, and (b) a large number of more specific
prefixes in that range are announced by the AS in the ROA. This case should occur
rarely in practice (if at all). Operator discretion is necessary in this case.
This practice requires no changes to the RPKI specification and need not increase
the number of signed ROAs in the RPKI, because ROAs already support lists of IP
prefixes .
See also for further discussion of why this practice will
have minimal impact on the performance of the RPKI ecosystem.
Operational requirements may require that a route for an IP prefix be
originated on an ad-hoc basis, with little or no prior warning.
An example of such a situation arises where an operator wishes to make use of
DDoS mitigation services that use BGP to redirect traffic via a "scrubbing
center".
In order to ensure that such ad-hoc routing changes are effective, there should
exist a ROA validating the new route. However a difficulty arises due to the
fact that newly created objects in the RPKI are made visible to relying parties
considerabley more slowly than routing updates in BGP.
Ideally, it would not be necessary to pre-create the ROA which validates the
ad-hoc route, and instead create it "on-the-fly" as required. However, this is
practical only if the latency imposed by the propagation of RPKI data is
guaranteed to be within acceptable limits in the circumstances.
For time-critical interventions such as responding to a DDoS attack, this is
unlikely to be the case.
Thus, the ROA in question will usually need to be created well in advance of
the routing intervention, but such a ROA will be non-minimal, since it includes
an IP prefix that is sometimes (but not always) originated in BGP.
In this case, the ROA SHOULD include:
(1) the set of IP prefixes that are always
originated in BGP, and
(2) the set IP prefixes that are sometimes, but not always, originated
in BGP.
The ROA SHOULD NOT include any IP prefixes that the operator knows will not be
originated in BGP.
Whenever possible, the ROA SHOULD also avoid the use of the maxLength
attribute unless doing so has no impact on the set of included prefixes.
The running example is now extended to illustrate one situation where it is not
possible to issue a minimal ROA.
Consider the following scenario prior to deployment of RPKI.
Suppose AS 64496 announced 192.168.0.0/16 and has a contract with a Distributed
Denial of Service (DDoS) mitigation service provider that holds AS 64500.
Further, assume that the DDoS mitigation service contract applies to all IP
addresses covered by 192.168.0.0/22.
When a DDoS attack is detected and reported by AS 64496, AS 64500 immediately
originates 192.168.0.0/22, thus attracting all the DDoS traffic to itself.
The traffic is scrubbed at AS 64500 and then sent back to AS 64496 over a
backhaul data link.
Notice that, during a DDoS attack, the DDoS mitigation service provider AS
64500 originates a /22 prefix that is longer than AS 64496's /16 prefix, and so
all the traffic (destined to addresses in 192.168.0.0/22) that normally goes to
AS 64496 goes to AS 64500 instead.
In some deployments, the origination of the /22 route is performed by AS 64496
and announced only to AS 64500, which then announces transit for that prefix.
This variation does not change the properties considered here.
First, suppose the RPKI only had the minimal ROA for AS 64496, as described
in .
But if there is no ROA authorizing AS 64500 to announce the /22 prefix, then
the DDoS mitigation (and traffic scrubbing) scheme would not work.
That is, if AS 64500 originates the /22 prefix in BGP during DDoS attacks, the
announcement would be invalid .
Therefore, the RPKI should have two ROAs: one for AS 64496 and one for AS
64500.
ROA:(192.168.0.0/16, 192.168.225.0/24, AS 64496)
ROA:(192.168.0.0/22, AS 64500)
Neither ROA uses the maxLength attribute.
But the second ROA is not "minimal" because it contains a /22 prefix that is
not originated by anyone in BGP during normal operations.
The /22 prefix is only originated by AS 64500 as part of its DDoS mitigation
service during a DDoS attack.
Notice, however, that this scheme does not come without risks.
Namely, all IP addresses in 192.168.0.0/22 are vulnerable to a forged-origin
subprefix hijack during normal operations, when the /22 prefix is not
originated.
(The hijacker AS 64511 would send the BGP announcement "192.168.0.0/22:
AS 64511, AS 64500", falsely claiming that AS 64511 is a neighbor of AS 64500
and falsely claiming that AS 64500 originates 192.168.0.0/22.)
In some situations, the DDoS mitigation service at AS 64500 might want to limit
the amount of DDoS traffic that it attracts and scrubs.
Suppose that a DDoS attack only targets IP addresses in 192.168.0.0/24.
Then, the DDoS mitigation service at AS 64500 only wants to attract the traffic
designated for the /24 prefix that is under attack, but not the entire /22
prefix.
To allow for this, the RPKI should have two ROAs: one for AS 64496 and one for
AS 64500.
ROA:(192.168.0.0/16, 192.168.225.0/24, AS 64496)
ROA:(192.168.0.0/22-24, AS 64500)
The second ROA uses the maxLength attribute because it is designed to
explicitly enable AS 64500 to originate *any* /24 subprefix of 192.168.0.0/22.
As before, the second ROA is not "minimal" because it contains prefixes that
are not originated by anyone in BGP during normal operations.
As before, all IP addresses in 192.168.0.0/22 are vulnerable to a forged-origin
subprefix hijack during normal operations, when the /22 prefix is not
originated.
The use of maxLength in this second ROA also comes with an additional risk.
While it permits the DDoS mitigation service at AS 64500 to originate prefix
192.168.0.0/24 during a DDoS attack in that space, it also makes the *other*
/24 prefixes covered by the /22 prefix (i.e., 192.168.1.0/24, 192.168.2.0/24,
192.168.3.0/24) vulnerable to a forged-origin subprefix attacks.
In responding to certain classes of prefix hijack, in particular the
forged-origin subprefix hijack described above, it may be desirable for the
victim to perform "defensive de-aggregation". That is: to begin originating
more-specific prefixes in order to compete with the hijack routes for selection
as best path in networks that are not performing RPKI-based route origin
validation .
In some topologies, where at least one AS on every path between the victim
and hijacker filters ROV invalid prefixes, it may be the case that the
existence of a minimal ROA issued by the victim prevents the defensive more-
specific prefixes being propagated to the networks topologically close to the
attacker, thus hampering the effectiveness of this response.
Nevertheless, this document recommends that where possible, network operators
publish minimal ROAs even in the face of this risk. This is because:
Minimal ROAs offer the best possible protection against the immediate
impact of such an attack, rendering the need for such a response less
likely;
Increasing ROV adoption by network operators will, over time, decrease
the size of the neighborhoods in which this risk exists; and
Other methods for reducing the size of such neighborhoods are available
to potential victims, such as establishing direct eBGP adjacencies with
networks from whom the defensive routes would otherwise be hidden.
Considerations related to ROAs and origin validation for the
case of destination-based Remote Triggered Black Hole (RTBH) filtering are addressed
here.
In RTBH filtering, highly specific prefixes (greater than /24 in IPv4 and greater than
/48 in IPv6; possibly even /32 (IPv4) and /128 (IPv6)) are announced in BGP.
These announcements are tagged with a BLACKHOLE Community .
It is obviously not desirable to use large maxlength or include any such highly
specific prefixes in the ROAs to accommodate destination-based RTBH filtering, for the
reasons set out above.
As a result, RPKI based route origin validation is a poor fit
for the validation of RTBH routes.
Specification of new procedures to address this use case through the use of the RPKI is
outside the scope of this document.
Therefore:
Operators SHOULD NOT create non-minimal ROAs (either by creating additional
ROAs, or through the use of maxLength) for the purpose of advertising RTBH
routes; and
Operators providing a means for operators of neighboring autonomous systems to
advertise RTBH routes via BGP MUST NOT make the creation of non-minimal ROAs
a pre-requisite for its use.
The authors would like to thank the following people for their review and
contributions to this document: Omar Sagga (Boston University) and Aris
Lambrianidis (AMS-IX). Thanks are also due to Matthias Waehlisch (Free University
of Berlin) for comments and suggestions.
Maxlength Considered Harmful to the RPKI
Rethinking Security for Internet Routing
Are We There Yet? On RPKI's Deployment and Security
MaxLength Considered Harmful to the RPKI
Resilient Interdomain Traffic Exchange: BGP Security and DDoS Mitigation