A critical stack overflow vulnerability was discovered in the Tenda AC10U router firmware version US_AC10UV1.RTL_V15.03.06.49_multi_TDE01. This vulnerability, assigned with the identifier CVE-2023-44021, potentially allows an attacker to gain unauthorized access and control over the affected devices. This post aims to outline the details of the vulnerability, including the affected function, a code snippet demonstrating the issue, and possible exploitation methods.

Vulnerable Function: formSetClientState

The vulnerability resides in the function formSetClientState which is responsible for setting the client state based on user-supplied input. The stack overflow occurs due to insufficient boundary checks performed on this input data. It becomes easier to exploit by malicious threat actors in various scenarios, like Denial of Service (DoS) attacks, unauthorized modification of device settings, or even remote code execution.

#include <stdio.h>
#include <string.h>

#define MAX_BUF_SIZE 256

void formSetClientState(char *input) {
    char buf[MAX_BUF_SIZE];

    strcpy(buf, input);  // Vulnerable function call
    // ... (rest of the function)
}

int main() {
    char payload[MAX_BUF_SIZE];

    // Craft the payload
    memset(payload, '\x41', MAX_BUF_SIZE - 1);
    payload[MAX_BUF_SIZE - 1] = '\x00';

    formSetClientState(payload);

    return ;
}

As evident in the code snippet, the function formSetClientState does not perform any check on input data size, and uses the risky strcpy function to copy the input into the local buffer. The absence of input validation and the usage of strcpy make this function susceptible to a stack overflow attack.

Original References

Further details of this vulnerability can be found in the official Common Vulnerabilities and Exposures (CVE) record CVE-2023-44021 and the pertinent advisory published by the researcher who uncovered this issue Researcher's Advisory.

Exploit Details

To exploit this vulnerability, an attacker would need to craft a specifically formatted payload, typically containing a string of bytes exceeding the maximum buffer size, and send it to the vulnerable device. In the code snippet above, this is demonstrated using the repeated character '\x41', but adversaries could assemble different combinations of bytes to achieve desired outcomes.

Upon successful exploitation, the attacker can potentially gain full control over the target router, allowing them to modify or intercept network traffic, snoop on sensitive information, and even spread malware or launch further attacks on connected devices.

Conclusion

CVE-2023-44021 represents a severe vulnerability in the Tenda AC10U router firmware, which makes it crucial for users and administrators to apply any available patches or take measures to secure their devices. It is highly recommended to always keep router firmware - and other device software - up-to-date to protect against such critical vulnerabilities.

Timeline

Published on: 09/27/2023 15:19:35 UTC
Last modified on: 09/27/2023 18:44:39 UTC