A newly discovered vulnerability dubbed CVE-2022-22306 affects FortiOS versions 6.. through 6..14, 6.2. through 6.2.10, 6.4. through 6.4.8, and 7... This improper certificate validation vulnerability (CWE-295) poses a risk for a man-in-the-middle (MITM) attack, potentially allowing an unauthenticated attacker to intercept the communication between a FortiGate device and other peers, such as private Software-Defined Networks (SDNs) or external cloud platforms. This post will discuss the details of this vulnerability, including the code snippet, exploit details, and available patches.

Code Snippet

The issue resides within the FortiOS certificate validation process, where an attacker could exploit the incorrect handling of certificate chains and thus intercept the communications by spoofing a legitimate server. An example of a vulnerable code snippet may look like this:

import ssl
import socket

def insecure_certificate_validation(host, port, cafile=None):
    context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH, cafile=cafile)
    context.check_hostname = False
    context.verify_mode = ssl.CERT_NONE
    with socket.create_connection((host, port)) as sock:
        with context.wrap_socket(sock, server_hostname=host) as ssock:
            data = ssock.recv(1024)

In this example, the insecure_certificate_validation() function disables hostname checking and certificate verification by setting check_hostname to False and verify_mode to ssl.CERT_NONE. This would allow an attacker to spoof a server certificate, intercepting the communication between the FortiGate device and other network peers without being detected.

Exploit Details

An attacker leveraging this vulnerability would be positioned as a man-in-the-middle, intercepting communications between a FortiGate device and its peers. This could include sensitive information or control commands being sent between the FortiGate and connected private SDNs or external cloud platforms. By intercepting these communications, the attacker gains potential unauthorized access and the ability to manipulate FortiGate device configurations and network traffic.

To exploit this vulnerability, an attacker needs to be network-adjacent to the FortiGate device, meaning they must have access to the same network segment or VLAN the FortiGate resides on. The attacker would then create fake certificates imitating those of the trusted peers and force the FortiGate device to use them for connections. As a result, all data transmitted between the FortiGate and its peers could be intercepted and manipulated by the attacker.

- Fortinet Security Advisory: FG-IR-21-230

Mitigation and Patch Information

To address the CVE-2022-22306 vulnerability, users should upgrade their FortiGate devices to the appropriate fixed software versions. The patched releases include:

FortiOS 7..1 or later

Additionally, administrators should ensure that the network is properly segmented, and access to the FortiGate devices is limited to authorized users and systems. This can help minimize the risk of a network-adjacent attacker gaining access to the vulnerable devices.

Conclusion

The CVE-2022-22306 vulnerability in FortiOS highlights the importance of proper certificate validation to maintain secure communication between network devices. Organizations using the affected versions of FortiOS should apply the necessary patches promptly. In addition, network administrators should follow security best practices, such as segmenting the network and limiting access to critical devices, to reduce the risk of an attacker exploiting this or other vulnerabilities.

Timeline

Published on: 05/24/2022 15:15:00 UTC
Last modified on: 06/06/2022 18:22:00 UTC