[OPNFLWPLUG-1012] Denial of Service, Improper Authentication and, Authorization, and Covert Channel in the OpenFlow 1.0+ handshake Created: 22/May/18  Updated: 11/Jun/18  Resolved: 11/Jun/18

Status: Resolved
Project: OpenFlowPlugin
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: High
Reporter: Luke Hinds Assignee: Anil Vishnoi
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

The following CVE was raised against the OpenFlow Plugin, but we were informed after it went public, so creating this as an open Jira ticket with no security context label to keep it private:

http://www.openwall.com/lists/oss-security/2018/05/09/4

 We have identified issues with a popular Software-Defined Networking protocol, OpenFlow. Below are the details of the vulnerabilities. OpenFlow controller implementations should strongly consider addressing these issues, and OpenFlow adopters should be aware of such security risks.

CVE-2018-1000155: Denial of Service, Improper Authentication and Authorization, and Covert Channel in the OpenFlow handshake Severity:

Important Vendor: Open Networking Foundation (ONF), OpenFlow controllers

Versions Affected: OpenFlow specification 1.0 onwards

Description: The OpenFlow handshake does not require the controller to authenticate switches during the OpenFlow handshake. Furthermore, the controller is not required to authorize switches access to the controller. The absence of authentication and authorization in the OpenFlow handshake allows one or more malicious switches connected to an OpenFlow controller to cause Denial of Service attacks in certain OpenFlow controllers by spoofing OpenFlow switch identifiers known as DataPath Identifiers (DPIDs). Additionally, the lack of authentication and authorization in the OpenFlow handshake can be exploited by malicious switches for covert communications, bypassing data plane (and potentially control plane) security mechanisms. In particular, the OpenFlow "Features Reply" message sent by the switch is inherently trusted by the controller. Note that for the attacker to launch an attack, the OpenFlow switch must first establish a (secure) transport connection with the OpenFlow controller (e.g., TLS and TCP), and the switch must be controlled by the attacker.

Mitigation: The attack can be deterred if OpenFlow connections are secured via the following hardened authentication scheme: Unique TLS certificates for switches, white-list of switch DPIDs at controllers which also includes the switches’ respective public-key certificate identifier, and lastly a controller mechanism that verifies the DPID announced in the OpenFlow handshake is over the TLS connection with the associated (DPID) certificate.

 A patch was developed and released by onos: https://github.com/opennetworkinglab/onos/commit/f69e3e34092139600404681798cebeefebcfa6c6

Credit: Kashyap Thimmaraju (Technische Universität Berlin), Robert Krösche (Technische Universität Berlin), Liron Schiff (GuardiCore Labs) and Stefan Schmid (University of Vienna)



 Comments   
Comment by Luke Hinds [ 22/May/18 ]

Avishnoi please could you verify this as the PTL of OpenFlowPlugin.

Comment by Anil Vishnoi [ 03/Jun/18 ]

lukehinds I believe OpenFlow plugin already supports the TLS connections between controller and switches. More details can be found on the following opendaylight documentation.

 

https://docs.opendaylight.org/en/stable-oxygen/user-guide/authentication-and-authorization-services.html?highlight=management#id4

https://wiki.opendaylight.org/view/OpenDaylight_OpenFlow_Plugin:_TLS_Support

 

ecelgp You recently tested the secure connection (TLS) functionality supported by openflowplugin, do you have any more details to  add to this ticket that user can leverage to setup their environment securely to avoid this attack ?

 

Comment by Luis Gomez [ 03/Jun/18 ]

We support TLS authentication for dataplane switches from long time back. These settings are not enabled by default but we understand whoever wants to deploy the OF plugin in production will do that.

Also I see a contradiction in the security note:

1) "Note that for the attacker to launch an attack, the OpenFlow switch must first establish a (secure) transport connection with the OpenFlow controller"

This is also my understanding, no OF negotiation will happen until TLS session is established, so TLS (if supported) effectively protects the OF session.

2) In the Mitigation section they suggest a hardening schema including "white-list of switch DPIDs", this for me is an extra layer of security but if TLS is correctly configured with all required switches public certificates I do not see a need for this, unless I am missing something here.

Comment by Luke Hinds [ 04/Jun/18 ]

Makes sense to me, and this really comes down to standard security measures.

 

> These settings are not enabled by default but we understand whoever wants to deploy the OF plugin in production will do that.

 

Maybe what we could do is add a recommendation that operators deploy with TLS in production and then point to the TLS_Support wiki page on how to set up. Now I know this is likely obvious to us and most users, but at least this way we have it clearly outlined and its easier to find for anyone using [1]

[1] https://docs.opendaylight.org/en/stable-oxygen/user-guide/openflow-plugin-project-user-guide.html

 

With that I would be happy to close this as won't fix.

 

Sounds good?

Comment by Anil Vishnoi [ 04/Jun/18 ]

lukehinds Make sense to me.

Comment by Luke Hinds [ 07/Jun/18 ]

Avishnoi https://git.opendaylight.org/gerrit/72745

Generated at Wed Feb 07 20:33:58 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.