<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">

<?rfc toc="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>

 <!ENTITY rfc3056  PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3056.xml'>
 <!ENTITY rfc3315  PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3315.xml'>
 <!ENTITY rfc3736  PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3736.xml'>
 <!ENTITY rfc3971  PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3971.xml'>
 <!ENTITY rfc4191  PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4191.xml'>
 <!ENTITY rfc4192  PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4192.xml'>
 <!ENTITY rfc4861  PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4861.xml'>
 <!ENTITY rfc4862  PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4862.xml'>

<rfc ipr="full3978" category="info" docName="draft-chown-v6ops-rogue-ra-02">
	<front>
		<title abbrev="Rogue IPv6 Router Advertisements">Rogue IPv6 Router Advertisement Problem Statement</title>
		<author fullname="Tim Chown" initials="T.J." surname="Chown">
			<organization> University of Southampton </organization>
			<address>
				<postal>
					<street/>
					<city> Southampton </city>
					<code> SO17 1BJ </code>
					<region> Hampshire </region>
					<country> United Kingdom </country>
				</postal>
				<email> tjc@ecs.soton.ac.uk </email>
			</address>
		</author>
                <author fullname="Stig Venaas" initials="S." surname="Venaas">
                        <organization> UNINETT </organization>
                        <address>
                                <postal>
                                        <city> Trondheim </city>
                                        <code> NO 7465 </code>
                                        <country> Norway</country>
                                </postal>
                                <email> venaas@uninett.no </email>
                        </address>
                </author>
		<date month="November" year="2008"/>
		<area>Operations</area>
		<workgroup>IPv6 Operations</workgroup>
		<abstract>
<t>
When deploying IPv6, whether IPv6-only or dual-stack, routers
are configured to send IPv6 Router Advertisements to convey information
to nodes that enable them to autoconfigure on the network.  This
information includes the implied default router address taken from the
observed source address of the Router Advertisement (RA) message.   
However, unintended misconfigurations or possibly malicious attacks on 
the network may lead to bogus RAs being present, which in turn can cause
operational problems for hosts on the network.   In this draft we summarise 
the scenarios in which rogue RAs may be observed and present a list of 
possible solutions to the
problem.    The goal of this text is to be Informational, and as such
to present a framework around which solutions can be proposed and discussed.
</t>
		</abstract>
	</front>
	<middle>
<section title="Introduction">
	<t>
The <xref target="RFC4861">Neighbor Discovery protocol</xref> describes
the operation of IPv6 Router Advertisements (RAs), which are used during
the IPv6 autoconfiguration process, whether a node's configuration is
stateful (via 
<xref target="RFC3315">DHCPv6</xref>)
or stateless (as
per <xref target="RFC4862">RFC4862</xref>, possibly in combination 
with <xref target="RFC3736">DHCPv6 Light</xref>).   
	</t>
	<t>
In observing the operation of deployed IPv6 networks, it is apparent that
there is a problem with undesired or 'bogus' IPv6 Router Advertisements (RAs)
appearing on network links or subnets.    By 'bogus' we mean RAs that
were not the intended configured RAs, rather RAs that have appeared for
some other reason.
	</t>
	<t>
The problem with rogue RAs is that they can cause partial or complete
failure of operation of hosts on an IPv6 link.    For example, the default
router address is drawn directly from the source address of the RA message.   
As such, rogue RAs are an operational
issue for which solution(s) are required, and for which best practice needs
to be conveyed.   This not only includes preventing or detecting rogue RAs,
but also where necessary the ability to quickly recover from a state where
host configuration is incorrect as a result of processing such an RA.
	</t>
	<t>
In the next section, we discuss
the scenarios that may give rise to rogue RAs being present.   In the
following section we present some candidate solutions for the problem,
some of which may be more practical to deploy than others.   
	</t>
</section>

<section title="Bogus RA Scenarios">

	<t>
There are three broad classes of scenario in which bogus RAs may be 
introduced to an IPv6 network.   
	</t>

	<section title="Administrator misconfiguration">
	<t>
Here an administrator incorrectly configures RAs on a router interface,
causing incorrect RAs to appear on links and hosts to generate incorrect
or unintended IPv6 address, gateway or other information.    
In such a case the default gateway
may be correct, but a host might for example become multi-addressed,
possibly with a correct and incorrect address based on a correct and
incorrect prefix.    There is also
the possibility of other configuration information being misconfigured,
such as the lifetime option.
	</t>
	<t>
In the case of a Layer 2 VLAN misconfiguration,
RAs may 'flood' to unintended links, causing hosts or more than one link
to potentially become incorrectly multiaddressed, with possibly two different
default routers available.    
	</t>
	</section>

	<section title="User misconfiguration">
	<t>
In this case a user's device 'accidentally' transmits RAs onto the local
link, adding an additional default gateway and associated 
prefix information.   
	</t>
	<t>
This seems to typically be seen on wireless (though sometimes 
wired) networks where a laptop has enabled the Windows Internet Connection 
Sharing service (ICS) which turns a host into a 
<xref target="RFC3056">6to4</xref> gateway; this can be
a useful feature, unless of course it is run when not intended.   
We have had reports
that hosts may not see the genuine RAs on link due to host firewalls, and
then turning on a connection sharing service and 6to4 as a result.
In some cases more technical users may also use a laptop as a home 
gateway (e.g. again a 6to4 gateway) and then connect to another network
with the gateway configuration still active.   
	</t>
	<t>
There are also reported incidents in enterprise networks of users physically 
plugging Ethernet cables into the wrong sockets and bridging two subnets
together, causing an problem similar to VLAN flooding.
	</t>
	</section>

	<section title="Malicious misconfiguration">
	<t>
Here an attacker is deliberately generating RAs on the local network in 
an attempt to perform some form of denial of service or man-in-the-middle
attack.
	</t>
	</section>

</section>

<section title="Methods to Mitigate against Rogue RAs">

	<t>
In this section we present a summary of methods suggested to date
for reducing or removing the possibility of rogue RAs being seen on
a network.
	</t>

	<section title="Manual configuration">
	<t>
The default gateway and host address can usually be manually configured on 
a device.
This is of course a resource intensive solution, and also prone to
administrative mistakes in itself.  
	</t>
	</section>

	<section title="Secure Neighbor Discovery">
	<t>

The <xref target="RFC3971">SeND</xref> protocol provides a method for
hosts and routers to perform secure Neighbor Discovery.   At present
there are very few SeND implementations available, and SeND is perceived
as a complex protocol to deploy.   It is also likely that not all 
scenarios will be able to use SeND, for various reasons.  In particular
SeND may be
best suited for fully managed enterprise networks, rather than those
where administrative control is not present.
	</t>
	</section>

	<section title="Introduce RA snooping">
	<t>
It should be possible to implement 'RA snooping' in Layer 2 switches in
a similar way to DHCP snooping, such that RAs observed from incorrect
sources are blocked or dropped, and not propagated through a subnet.
One candidate solution in this space called RA-Guard
<xref target="ra-guard"/> has recently been proposed.
This type of solution has appeal because it is a familiar model for
enterprise network managers, but it can also be used to complement SeND.
	</t>
	<t>
This type of solution may not be applicable everywhere, e.g. in environments
where there are not centrally controlled switches.
	</t>
	</section>

	<section title="Use ACLs on Managed Switches">
	<t>
Certain switch platforms can already implement some level of rogue
RA filtering by the
administrator configuring Access Control Lists (ACLs) that block RA ICMP
messages that might be inbound on 'user' ports.    Again this type
of 'solution' depends on the presence of such configurable switches.
	</t>
	</section>

	<section title="Use the Router Preference Option">
	<t>
<xref target="RFC4191">RFC4191</xref> introduced router preference
options, such that an RA could carry one of three router preference
values: High, Medium (default) or Low.   Thus an administrator could
use High settings for managed RAs, and hope that 'accidental' RAs
would be medium priority.   This of course would only work in some
scenarios - an attacker would certainly seek to use High priority anyway - 
and would also rely on clients having implementations of the protocol.   
	</t>
	</section>

	<section title="Rely on Layer 2 admission control">
	<t>
In principle, if a technology such as IEEE 802.1x is used, devices
would first need to authenticate to the network before being able to
send or receive IPv6 traffic.    Ideally authentication would be
mutual.   
	</t>
	<t>
Improving Layer 2 security may help to mitigate against a malicious
attacker's capability to join the network to send RAs, but it doesn't 
prevent misconfiguration issues.
	</t>
	</section>

	<section title="Use host-based packet filters">
	<t>
In a managed environment hosts could be configured via their 'personal
firewall' to only accept RAs from trusted sources.    
Hosts could also potentially be configured to discard 6to4-based RAs in
a managed enterprise environment.
	</t>
	<t>
However, the
problem is then pushed to keeping this configuration maintained and
correct.   If a router fails and is replaced, possibly with a new Layer 2
interface address, the link local source address in the filter may become
incorrect and no thus no method would be available to push the new 
information to the host over the network.
	</t>
	</section>

	<section title="Use an 'intelligent' deprecation tool">
	<t>
It could be possible to run a daemon on a link (perhaps on the router
on the link) to watch for incorrect RAs and to send a deprecating RA
with router lifetime of zero when such an RA is observed.
The KAME rafixd is an
example of such a tool, which has been used at IETF meetings with
some success.    A slightly enhanced ramond has since been developed from this
code.   As with host based firewalling, the daemon would need to somehow
know what 'good' and 'bad' RAs are, from some combination of known good
sources and/or link prefixes.   
	</t>
	<t>
In contrast, an attacker might use such
a tool to learn about prefixes being advertised on a link and to deprecate
the 'good' RA(s) in favour of their bogus RA(s).
	</t>
	<t>
Whether or not use of such a tool is the preferred method,
monitoring a link for observed RAs seems prudent from a network management
perspective.   Some such tools exist already, e.g. ndpmon.
	</t>
	</section>

	<section title="Wait before using new advertisements">
	<t>
It might be possible, in networks where configurations are very static
and systems generally remain up, to configure an option
such that any new RAs that are seen are not acted upon for a certain
period, e.g. 2 hours.   This might allow time for a misconfiguration or
accidental RA to be detected and stopped, before hosts use the data in
the RA.   Of course this would add delays where genuine new RAs are required,
while new hosts appearing on a network would still be vulnerable (or be
unable to configure at all).   
	</t>
	</section>

	<section title="Use Layer 2 Partitioning">
	<t>
If each system or user on a network is partitioned into a different
Layer 2 medium, then the impact of rogue RAs can be limited.   In
broadband networks RFC1483 bridging may be available, for example.
The benefit may be scenario-specific, e.g. whether a given user or
customer has their own network prefix or whether the provisioning is
in a shared subnet or link.   It is certainly desirable that any given
user or customer's system(s) are unable to see RAs that may be generated
by other users or customers.   
	</t>
	<t>
However, such partitioning would certainly increase
address space consumption significantly if applied in enterprise networks,
and in many cases hardware costs and software licensing costs to enable
routing to the edge can be quite significant.
	</t>
	</section>

	<section title="Add a Default Gateway Option to DHCPv6">
	<t>
It may be possible to define a new Default Gateway Option for DHCPv6
that would allow network administrators to only have hosts use DHCPv6
for default gateway configuration in managed networks.   While such
an option could be defined, its ramifications remain unclear, and such
a fundamental change to the IPv6 model of autoconfiguration would
need very careful consideration.   
	</t>
	<t>
In the absence of RAs, other configuration information would also be
missing, e.g. on-link prefix information.     Of course, it may be
that an RA is still required to inform the host to use DHCPv6, and
that may introduce a Catch-22 unless hosts are configured directly
to only use DHCPv6.
	</t>
	<t>
An advantage of DHCPv6 is that should an error be introduced, only
hosts that have refreshed their DHCP information since that time are
affected, while a multicast rogue RA will most likely affect all hosts 
immediately.   DHCPv6 also allows different answers to be given to
different hosts.
	</t>
	</section>

</section>

<section title="Scenarios and mitigations">
	<t>
In this section we summarise the scenarios and mitigations described
above in a summary matrix.   We consider, for the case of a rogue 
multicast RA, which of the mitigation methods protects against each
cause:
	</t>

	<artwork>
+------------------------+-------------+-------------+-------------+
|              Scenario  |   Admin     |   User      |  Malicious  |
| Mitigation             |   Error     |   Error     |   Attack    |
+------------------------+-------------+-------------+-------------+
| Manual configuration   |     Y       |      Y      |      Y      |
+------------------------+-------------+-------------+-------------+
| SeND                   |   Partly    |      Y      |      Y      |
+------------------------+-------------+-------------+-------------+
| RA snooping            |     Y       |      Y      |      Y      |
+------------------------+-------------+-------------+-------------+
| Use switch ACLs        |     Y       |      Y      |      Y      |
+------------------------+-------------+-------------+-------------+
| Router preference      |     N       |      Y      |      N      |
+------------------------+-------------+-------------+-------------+
| Layer 2 admission      |     N       |      N      |      Y      |
+------------------------+-------------+-------------+-------------+
| Host firewall          |     Y       |      Y      |      N      |
+------------------------+-------------+-------------+-------------+
| Deprecation daemon     |     Y       |      Y      |   Partly    |
+------------------------+-------------+-------------+-------------+
| New prefix delay       |   Partly    |   Partly    |   Partly    |
+------------------------+-------------+-------------+-------------+
| Layer 2 partition      |     N       |      Y      |      N      |
+------------------------+-------------+-------------+-------------+
| DHCPv6 gateway option  |  If Auth    |  If Auth    |  If Auth    |
+------------------------+-------------+-------------+-------------+
	</artwork>
	<t>
What the above summary does not consider is the practicality
of deploying the measure.   An easy-to-deploy method that buys 
improved resilience to rogue RAs without significant administrative
overhead is attractive.   On that basis the RA snooping proposal,
e.g. RA Guard, has merit, while approaches like manual configuration
and perhaps SeND may be less appealing.   However RA Guard is not
yet fully defined or available, while only certain managed switch
equipment may support the required ACLs.
	</t>
	<t>
Methods that involve 
changes to IPv6 protocols such as delays in processing RAs or 
a new DHCPv6 option have rather reduced appeal, regardless of their
merits or complications.
	</t>

</section>

<section title="Other related considerations">

	<t>
There are a number of related issues that have come out of discussions
on the rogue RA topic, which the authors believe are worth capturing in
this document.
	</t>

	<section title="Unicast RAs">
	<t>
The above discussion was initially held on the assumption that rogue
multicast RAs were the cause of problems on a shared network subnet.
However, the specifications for Router Advertisements allow them to
be sent unicast to a host, as per Section 6.2.6 of RFC4861.   It is thus
possible for an attacker to target one or more hosts on a shared medium
without (potentially) a rogue multicast RA being observed elsewhere on
the network (e.g. by a monitoring daemon).
	</t>
	</section>

	<section title="The DHCP vs RA threat model">
	<t>
Comparing the threat model
for rogue RAs and rogue DHCPv6 servers is an interesting exercise.
In the case of Windows ICS causing rogue 6to4-based RAs to appear on
a network, it is very likely that the same host is also acting as a
rogue IPv4 DHCP server.   The rogue DHCPv4 server can allocate a
default gateway and an address to hosts, just as a rogue RA can lead
hosts to learning of a new (additional) default gateway and address.
In the case of multicast rogue RAs however, the impact is potentially
immediate to all hosts, while the rogue DHCP server's impact will depend
on lease timers for hosts.
	</t>
	<t>
In principle Authenticated DHCP can be used to protect against rogue
DHCPv4 servers, just as SeND could be used to protect against rogue
IPv6 RAs.    However use of Authenticated DHCP is currently
minimal,  while SeND is in its infancy in implementation status.
	</t>
	<t>
Were a new DHCPv6 default gateway option to be defined as described above,
then without Authenticated DHCP the (lack of) security is just pushed to 
another place, albeit one that site administrators are more familiar and
(rightly or wrongly) comfortable with.
	</t>
	<t>
The RA Guard approach is essentially using a similar model to DHCP message
snooping to protect against rogue RAs in network (switch) equipment. 
It is worth noting that DHCPv6 message snooping would also be very
desirable in IPv6 networks.
	</t>
	</section>

	<section title="IPv4-only networks">
	<t>
The rogue RA problem should also be considered by administrators and
operators of IPv4-only networks, where IPv6 monitoring, firewalling and
other related mechanisms may not be in place.
	</t>
	<t>
For example a comment has been made that in the case of 6to4 being run by 
a host on a subnet that is not administratively configured with IPv6, some
OSes or applications may begin using IPv6 to the 6to4 host (router)
rather than IPv4 to the intended default IPv4 router, because they have
IPv6 enabled by default and some applications prefer IPv6 by default.   
Technically aware users may also deliberately choose to use IPv6, possibly
for subversive reasons.
Mitigating against this condition can also be seen to be important.
	</t>
	</section>

	<section title="Network monitoring tools">
	<t>
It would generally be prudent for network monitoring or
management platforms to be able to observe and report on observed RAs,
and whether unintended RAs (possibly from unintended sources) are
present on a network.    Further, it may be useful for individual
hosts to be able to report their address status (assuming their configuration
status allowed it of course), e.g. this could be
useful during an IPv6 renumbering phased process as described in
<xref target="RFC4192">RFC4192</xref>.
	</t>
	</section>

	<section title="Recovering from bad configuration state">
	<t>
An important issue is how readily a host can recover from bad configuration
information, e.g. considering the '2 hour rule' of Section 5.5.3 of
RFC4862 (though this applies to the prefix lifetime not the router
lifetime).   We should ensure that methods exist for a network
administrator to correct bad configuration information on a link or
subnet, and that OS platforms support these methods.    At least if the
problem can be detected, and corrected promptly, the impact is
minimised.
	</t>
	</section>

	<section title="Behaviour of a node after receiving a rogue RA">
	<t>
After a host receives and processes a rogue RA, it may have multiple
default gateways, global addresses, and potentially clashing RA options
(e.g. M/O bits).   The host's behaviour may then be unpredictable, in
terms of the default router that is used, and the (source) address(es)
used in communications.   A host that is aware of protocols such as
shim6 may believe it is genuinely multihomed.   
	</t>
	</section>

</section>

<section anchor="Conclusions" title="Conclusions">
	<t>
In this text we have described scenarios via which rogue Router Advertisements
(RAs) may appear on a network, and some measures that could be used
to mitigate against these.   We have also noted some related issues
that have arisen in the rogue RA discussions.
	</t>
	<t>
While SeND perhaps offers the most robust solution, implementations are
not widely available, and the solution is perceived as complex (parallels
can possibly be drawn with Authenticated DHCP in terms of likely deployment).
Adding a new DHCPv6 Default Gateway Option would allow configuration by
DHCP, and be a method that IPv4 administrators are comfortable with
(for better or worse), but such an option would have significant impacts
elsewhere, and in any event one must recognise that the security risk is 
then simply shifted elsewhere.
	</t>
	<t>
Further work on the solutions is certainly welcome.   In the meantime,
the simplest initial step would be for RA snooping to be defined and deployed
for Layer 2 devices, in such a way that can address (shared) wireless 
as well as wired networks.   One draft proposal in this space, RA-Guard,
has recently been published  <xref target="ra-guard"/>.    Alternatively,
certain switch platforms allow configuration of Access Control Lists (ACLs) 
that can achieve a similar function.  
	</t>
	<t>
In the longer term wider experience of SeND will be beneficial, while the
use of RA snooping will remain useful either to
complement SeND or to assist in scenarios that do not lend themselves
to SeND deployment.
	</t>
</section>

<section anchor="Security" title="Security Considerations">
	<t>
There are no extra Security consideration for this document.
	</t>
</section>

<section anchor="IANA" title="IANA Considerations">
	<t>
There are no extra IANA consideration for this document.
	</t>
</section>

<section anchor="Acknowledgments" title="Acknowledgments">
	<t>
Thanks are due to members of the IETF IPv6 Operations and DHCP WGs for their
inputs on this topic, as well as some comments from various operational 
mailing lists, including but not limited to:
Iljitsch van Beijnum,
Dale Carder,
Remi Denis-Courmant,
Tony Hain,
Christian Huitema,
Tatuya Jinmei,
David Malone,
Chip Popoviciu,
Dave Thaler,
Göran Weinholt and
Dan White.
	</t>
</section>


</middle>
<back>

<references title="Informative References">

	&rfc3056;
	&rfc3315;
	&rfc3736;
	&rfc3971;
	&rfc4191;
	&rfc4192;
	&rfc4861;
	&rfc4862;

    <reference anchor='ra-guard'>
        <front>
        <title>IPv6 RA-Guard (draft-ietf-v6ops-ra-guard-00)</title>
            <author initials='G.' surname='Van de Velde'></author>
            <author initials='E.' surname='Levy-Abegnoli'></author>
            <author initials='C.' surname='Popoviciu'></author>
            <author initials='J.' surname='Mohacsi'></author>


            <date month='July' year='2008' />
       </front>
    </reference>

<!--
    <reference anchor='bellovin'>
        <front>
       <title>Worm Propagation Strategies in an IPv6 Internet (http://www.cs.columbia.edu/~smb/papers/v6worms.pdf)</title>
            <author surname='Bellovin, S. et al'></author>
            <date month=';login:, February' year='2006' />
       </front>
    </reference>
-->

</references>
		<!--		<references title="Informative References">
		</references>
		-->
	</back>
</rfc>
