Cyber Security

Zyxel NAS Devices Under Attack: Mirai-Like Botnet Exploiting CVE-2024-29973

A new vulnerability, CVE-2024-29973, has been discovered in Zyxel NAS devices, exposing them to attacks from a Mirai-like botnet.

This vulnerability, a Python code injection flaw, has raised significant concerns among cybersecurity experts and users alike.

According to the Outpost24 blog, the vulnerability stems from a flaw in the simZysh endpoint of the Zyxel NAS devices’ web server.

This endpoint, introduced during a patch for a previous vulnerability (CVE-2023-27992), inadvertently replicated the same security mistakes.

The core issue lies in using the eval() function, which is notorious for its potential to execute arbitrary code if not properly sanitized.

A recent tweet from Shadowserver Foundation shared that the NAS Devices from Zyxel are being attacked by a botnet similar to Mirai and exploits CVE-2024-29973.

CVE-2024-29973 – Vulnerability Details

The simZysh function in the Zyxel NAS devices’ Python web server is designed to simulate the output of zyshcgi.

Scan Your Business Email Inbox to Find Advanced Email Threats - Try AI-Powered Free Threat Scan

However, the function’s implementation contains several critical flaws:

class mainApplication(object):

# Snip...

    def simZysh(self, *url_args, **request_args):

        """Simulate zyshcgi's output. GUI's broker shall set command as the following format:

                        'controller_name action_name {"arg1": value, "arg2": value, ...}'

                """

        for i in url_args:

            if not check_str_format(i, 'url'):

                return tools_cherrypy.ARG_ERROR

        for key, value in request_args.items():

            if not check_str_format(key, 'request'):

                if not check_list(key):

                    return tools_cherrypy.ARG_ERROR

            if not check_str_format(value, 'request'):

                if not check_list(value):

                    return tools_cherrypy.ARG_ERROR

        r_value = {}

        c_index = 0

        while True:

            c_key = 'c%d' % c_index

            if request_args.has_key(c_key):

                controller_n, action_n, args = request_args[c_key].split(' ', 2)

                try:

                    controller = __import__('controllers.%s' % controller_n)

                    tmp_result = eval('controller.%s.%s(cherrypy=%s, arguments=%s)' % (

                     controller_n, action_n, 'cherrypy', args))

                    if not tmp_result:

                        raise ValueError

                    r_type = type(tmp_result)

                    if r_type == list:

                        r_value['zyshdata%d' % c_index] = tmp_result

                    else:

                        r_value['zyshdata%d' % c_index] = [

                         tmp_result]

                    r_value['errno%d' % c_index] = 0

                    r_value['errmsg%d' % c_index] = _('OK')

                except:

                    r_value['zyshdata%d' % c_index] = []

                    r_value['errno%d' % c_index] = -99999

                    r_value['errmsg%d' % c_index] = _('Execute Error')

            else:

                break

            c_index += 1

        return r_value

    simZysh.exposed = True

Exploitation and Impact

The vulnerability allows attackers to inject arbitrary Python code through carefully crafted requests.

Attackers can execute commands on the device by bypassing the mod_auth_zyxel module and avoiding Python filters. For instance, a malicious payload could look like this:

POST /cmd,/simZysh/register_main/setCookie

c0='storage_ext_cgi CGIGetExtStoInfo None) and False or __import__("subprocess").check_output("makekey", shell=True)#'

This payload exploits the eval() function to execute the makekey command, potentially opening a backdoor on the device.

Mitigation and Recommendations

Zyxel has been notified of the vulnerability and released patches.

In the meantime, users are advised to:

  1. Disable Remote Access: Restrict remote access to the NAS devices to prevent exploitation.
  2. Apply Network Segmentation: Isolate NAS devices from the rest of the network to limit potential damage.
  3. Monitor Network Traffic: Monitor unusual network activity indicating an ongoing attack.

The discovery of CVE-2024-29973 highlights the ongoing challenges in securing IoT devices.

As attackers continue to exploit such vulnerabilities, it is crucial for manufacturers to implement robust security measures and for users to stay vigilant.

Free Webinar! 3 Security Trends to Maximize MSP Growth -> Register For Free

Dhivya

Divya is a Senior Journalist at Cyber Security news covering Cyber Attacks, Threats, Breaches, Vulnerabilities and other happenings in the cyber world.

Recent Posts

NSA, CISA and NIST Release New Security Guidelines to Detect and Shut Down Rogue AI Agents

NSA, CISA, and NIST have released joint security guidelines to help organizations detect, contain, and…

3 hours ago

Hackers Exploit SiteGuard WAF Vulnerability That Could Give Them Full Control of Servers

Hackers are exploiting a command injection flaw in SiteGuard Server Edition, a web application firewall…

3 hours ago

Hackers Registered New Teams-Based Domains and Used a Login Page to Steal Your Logins

A newly registered domain copies Microsoft Teams’ login page and interface, raising concerns about a…

4 hours ago

16-Year-Old Broadcom Wi-Fi Flaw Lets Attackers Hack Routers Without Knowing Passwords

A 16-year-old flaw in Broadcom’s Wi-Fi software can let attackers within wireless range take control…

4 hours ago

Google Unveils New Android AI Protections to Block Scam Calls, Phishing Links and OTP Theft

Google has announced a new set of Android security protections designed to stop mobile scams…

9 hours ago

Hackers Exploiting Plex Vulnerabilities in the Wild to Deploy Cryptominer Malware

Hackers are exploiting flaws in Plex Media Server to install cryptocurrency mining malware, with a…

11 hours ago