Re: [v6ops] Security issues in RFC8754 and related/subsequent drafts?
Alexandre Petrescu <alexandre.petrescu@gmail.com> Fri, 22 October 2021 06:02 UTC
Return-Path: <alexandre.petrescu@gmail.com>
X-Original-To: v6ops@ietfa.amsl.com
Delivered-To: v6ops@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3B7993A0875 for <v6ops@ietfa.amsl.com>; Thu, 21 Oct 2021 23:02:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.667
X-Spam-Level:
X-Spam-Status: No, score=0.667 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FROM=0.001, NICE_REPLY_A=-0.001, NML_ADSP_CUSTOM_MED=0.9, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mNx1F4iSp0xA for <v6ops@ietfa.amsl.com>; Thu, 21 Oct 2021 23:02:12 -0700 (PDT)
Received: from sainfoin-smtp-out.extra.cea.fr (sainfoin-smtp-out.extra.cea.fr [132.167.192.228]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 975953A0874 for <v6ops@ietf.org>; Thu, 21 Oct 2021 23:02:12 -0700 (PDT)
Received: from pisaure.intra.cea.fr (pisaure.intra.cea.fr [132.166.88.21]) by sainfoin-sys.extra.cea.fr (8.14.7/8.14.7/CEAnet-Internet-out-4.0) with ESMTP id 19M629cj022523 for <v6ops@ietf.org>; Fri, 22 Oct 2021 08:02:09 +0200
Received: from pisaure.intra.cea.fr (localhost [127.0.0.1]) by localhost (Postfix) with SMTP id 3FC83200D2D for <v6ops@ietf.org>; Fri, 22 Oct 2021 08:02:09 +0200 (CEST)
Received: from muguet2-smtp-out.intra.cea.fr (muguet2-smtp-out.intra.cea.fr [132.166.192.13]) by pisaure.intra.cea.fr (Postfix) with ESMTP id 36942200CA6 for <v6ops@ietf.org>; Fri, 22 Oct 2021 08:02:09 +0200 (CEST)
Received: from [10.14.1.78] ([10.14.1.78]) by muguet2-sys.intra.cea.fr (8.14.7/8.14.7/CEAnet-Internet-out-4.0) with ESMTP id 19M628hd022407 for <v6ops@ietf.org>; Fri, 22 Oct 2021 08:02:08 +0200
To: v6ops@ietf.org
References: <CB45220A-ECE6-492A-8A37-D189A71CDA2B@liquidtelecom.com>
From: Alexandre Petrescu <alexandre.petrescu@gmail.com>
Message-ID: <61f1f956-1ebd-3b62-078c-03d9f8fee42c@gmail.com>
Date: Fri, 22 Oct 2021 08:02:08 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0
MIME-Version: 1.0
In-Reply-To: <CB45220A-ECE6-492A-8A37-D189A71CDA2B@liquidtelecom.com>
Content-Type: text/plain; charset="utf-8"; format="flowed"
Content-Language: fr
Content-Transfer-Encoding: 8bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/v6ops/Nh9t5uzSgcXS1Lv_9ZjzfNTXnhA>
Subject: Re: [v6ops] Security issues in RFC8754 and related/subsequent drafts?
X-BeenThere: v6ops@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: v6ops discussion list <v6ops.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/v6ops>, <mailto:v6ops-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/v6ops/>
List-Post: <mailto:v6ops@ietf.org>
List-Help: <mailto:v6ops-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/v6ops>, <mailto:v6ops-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 22 Oct 2021 06:02:20 -0000
Le 21/10/2021 à 19:08, Andrew Alston a écrit : > Hi V6Ops, > > I thought I would raise the issues that follow here – and perhaps we can > look and if these issues are real – and if so – what the solutions are. > > During a close review of the compression proposals for SRv6 > (CRH/G-Srv6/USID etc etc) I noticed some potential very real > vulnerabilities in SRv6 itself – which by extensions would affect srv6, > srv6 network programming and all the compression flavors – including CRH > on which I am a co-author. Having raised these issues with my CRH > co-authors it was agreed that I raise these issues here so we could > discuss them. > > So a little background – SRrv6 is typically considered as something that > should run in the confines of a “limited-domain” – the question I > started with is – can we actually define and maintain the boundaries of > a limited-domain – and if so – how. The conclusion I came to was that > the concept of limited-domain in regards to SRv6 was an extremely fuzzy > thing. > > Now to understand this – we need first to look at the typical methods of > protecting things > > * In the case of MPLS – we have what I will loosely refer to as a > “fail-closed” scenario – that is to say – unless MPLS is enabled > explicitly on an interface – ingress packets will not be processed – > this works because of a separate ether-type > * In the case of SR-MPLS – an identical situation occurs > * In the case of dodgy IGP traffic – again, we have a fail-closed scenario > * In the case of standard IPv6 – we have the option of utilizing BCP38 > and ingress filtering – and the same thing in regards to IPv4. > > Now – lets examine SRv6 for a second. > > In a scenario of Host A (A linux box) with address 2001:db8:1:1::10/64 > utilizing a gateway of 2001:db8:1:1::fefe – packets from > 2001:db8:1:1::10 flowing towards that gateway would pass ingress filter > checks based on BCP38 since the source address was legitimate, unless we > explicitly filtered out where that packet could be destined for based on > its DA (More on this in a bit) Is one of the points made the fact that BCP38 would not work with RFC8754? Maybe an option is to update BCP38 or write another one titled "multi-version and multi-source IP ingress filtering", or simply an "IPv6 ingress filtering". Or maybe an IPsec-enabled SRH. Just some thoughts. Alex > > Now, lets imagine for a second that Host A gets compromised – and an > attack encapsulates a packet that has an entirely different source > address – and whatever random DA address inside an SRH. That SRH has a > SID list in it – be it via a direct SID or via compression mechanisms, > and a DA towards the SID itself. The packet then routes – passing the > ingress checks – and landing up at the router with the first SID. Since > this was the only SID in the list – the packet outer SRH is removed – > and the inner packet is forwarded to the FIB – and you just bypassed BCP38. > > In a similar mechanism, if the SRH states that the next protocol header > is an IPv4 packet – when the de-encapsulation happens at last SID – the > payload (the inner v4 packet) will then be forwarded via the FIB – and > off you go. > > Now, normally to protect against this as stated – an access list would > be placed on the networks borders to prevent encapsulated packets and > packets containing SID destinations from entering the network. However > – if we consider the above scenario where the attack is coming from a > compromised server inside the traditional borders – we have a problem. > The application of access lists to every port containing a server is > also potentially unrealistic and unmaintainable (not to mention could > potentially on certain devices overload the TCAMs) > > We also have an even more potentially deadly issue – and this is > entirely theoretical at this point since I haven’t had time to really > investigate and test it with real code. Let us presume in the above > that the same host A is compromised. It encapsulates a packet with an > SRH – the internal packet is an Ipv4 packet – and its destined at a > broadcast address of an IP subnet that is bound to the same network as > the de-encapsulating router. The source of the internal v4 packet is > spoofed – we’ve now managed to – through a use of the tunneling > mechanism, effectively created a version of an old tool called smurf – > in a manner that is going to be pretty hard to trace. > > Another potential scenario – would be for an attacker in host A to jit > some ebpf code – that matches – modifies and re-encapsulates incoming > return packets and retransmits then. Each time applying the same SRH. > The inner packet could be pretty much anything – so long as the internal > DA is set back to host A that is sending the packet. The packet would > then flow out as an SRH encapsulated packet, the outer header would get > popped, the inner packet would flow back towards the original > compromised host, which would match it modify it re-encapsulate it and > start the loop again. Doing this with ebpf and a kernel jit – would be > pretty difficult to spot if you didn’t know what you are doing because > you wouldn’t potentially see any obvious userland code. > > As a final thought – consider a hypervisor based system – that has > multiple VM’s on it – and the filtering implications of all of the above > – and the filtering becomes even more difficult to maintain and more > complex. > > Again – the filtering per every port that may contains a server or a > desktop – that may not be realistic – especially when we could be > running multiple ports that are handing out source addresses via RA – so > – how do we solve this – or is this a major flaw in srv6 itself – that > needs some other solution (give srv6 its own protocol code and > acknowledge that it isn’t ipv6 at all, allowing for a “fail-closed” > scenario maybe?) > > As an operator that runs extensive IPv6 – I’d really like to hear > thoughts and comments and potentially we can find a way to address these > issues. > > Thanks > > Andrew > > > _______________________________________________ > v6ops mailing list > v6ops@ietf.org > https://www.ietf.org/mailman/listinfo/v6ops >
- [v6ops] Security issues in RFC8754 and related/su… Andrew Alston
- Re: [v6ops] Security issues in RFC8754 and relate… Vasilenko Eduard
- Re: [v6ops] Security issues in RFC8754 and relate… Andrew Alston
- Re: [v6ops] Security issues in RFC8754 and relate… Vasilenko Eduard
- Re: [v6ops] Security issues in RFC8754 and relate… Ron Bonica
- Re: [v6ops] Security issues in RFC8754 and relate… Alexandre Petrescu
- Re: [v6ops] Security issues in RFC8754 and relate… Andrew Alston
- Re: [v6ops] Security issues in RFC8754 and relate… Gert Doering
- Re: [v6ops] Security issues in RFC8754 and relate… Andrew Alston
- Re: [v6ops] Security issues in RFC8754 and relate… Gert Doering
- Re: [v6ops] Security issues in RFC8754 and relate… Warren Kumari
- Re: [v6ops] Security issues in RFC8754 and relate… Eric Vyncke (evyncke)
- Re: [v6ops] Security issues in RFC8754 and relate… Gert Doering
- Re: [v6ops] Security issues in RFC8754 and relate… Andrew Alston
- Re: [v6ops] Security issues in RFC8754 and relate… otroan
- Re: [v6ops] Security issues in RFC8754 and relate… Andrew Alston
- Re: [v6ops] Security issues in RFC8754 and relate… Brian Carpenter
- Re: [v6ops] Security issues in RFC8754 and relate… Andrew Alston
- Re: [v6ops] Security issues in RFC8754 and relate… Eric Vyncke (evyncke)
- Re: [v6ops] Security issues in RFC8754 and relate… Warren Kumari
- Re: [v6ops] Security issues in RFC8754 and relate… Gert Doering
- Re: [v6ops] Security issues in RFC8754 and relate… Brian E Carpenter
- Re: [v6ops] Security issues in RFC8754 and relate… Brian E Carpenter
- Re: [v6ops] Security issues in RFC8754 and relate… Gert Doering
- Re: [v6ops] Security issues in RFC8754 and relate… Andrew Alston
- Re: [v6ops] Security issues in RFC8754 and relate… Brian E Carpenter
- Re: [v6ops] Security issues in RFC8754 and relate… Andrew Alston
- Re: [v6ops] Security issues in RFC8754 and relate… Warren Kumari
- Re: [v6ops] Security issues in RFC8754 and relate… Andrew Alston
- Re: [v6ops] Security issues in RFC8754 and relate… Warren Kumari
- Re: [v6ops] Security issues in RFC8754 and relate… Warren Kumari
- Re: [v6ops] Security issues in RFC8754 and relate… Andrew Alston
- Re: [v6ops] Security issues in RFC8754 and relate… Mark Smith
- Re: [v6ops] Security issues in RFC8754 and relate… Gert Doering
- Re: [v6ops] Security issues in RFC8754 and relate… otroan