Symantec Web Gateway <= 5.2.2 (new_whitelist.php) OS Command Injection Vulnerability

https://www.symantec.com

• Affected Versions:

Version 5.1.1.24, 5.2.1.80 and 5.2.2.118.

Other versions might be affected.

• Vulnerability Description:

The vulnerable code is located in the /spywall/new_whitelist.php script:

141$isNew = $_POST['isNew'];
142$sid   = $_POST['sid'];
143$exceptions = array();
144$last_modified = time();
145/* validate input */
146 
147if (!$sid && !isValidWhiteDomain($white_ip) && !isIpSubnet($white_ip)) {
148    $errors['white_ip'] = 'Please enter a valid domain or IP address or IP/mask.';
149}

The vulnerability exists because the validation checks may be bypassed by setting the ‘sid’ POST parameter to a value different from zero. In this way, even though the ‘white_ip’ POST parameter (assigned to the $white_ip variable) is not a valid domain or IP address, it will be passed to the add_whitelist() function as its $url parameter:

329function add_whitelist ($signature, $url, $whitelist, $ignore_auth, $restoreConfig = 0) {
330    [...]
331    if (!isCiu()){
332        if ($restoreConfig) {
333            syscall("sudo /usr/local/bin/updateDB 2 1 $url $whitelist $ignore_auth [...]
334        } else {
335            syscall("sudo /usr/local/bin/updateDB 2 1 $url $whitelist $ignore_auth [...]
336        }
337    }

This can be exploited to inject and execute arbitrary OS commands with the privileges of the “root” user on the appliance. Successful exploitation of this vulnerability requires an user account with read-write permissions (POLICY_LEVEL).

• Solution:

Update to version 5.2.5.

• Disclosure Timeline:

[09/07/2016] – Vendor notified

[11/07/2016] – Vendor response

[09/09/2016] – Vendor asks to confirm this is fixed in version 5.2.5

[15/09/2016] – Feedback sent to the vendor

[05/10/2016] – Publication of vendor’s advisory: https://goo.gl/aOJq5A

[06/10/2016] – Publication of this advisory

• CVE Reference:

The Common Vulnerabilities and Exposures project (cve.mitre.org) has assigned the name CVE-2016-5313 to this vulnerability.

• Credits:

Vulnerability discovered by Egidio Romano.