Critical vulnerability in Forticlient (CVE-2013-4669)

One year ago (April 2012) we discovered a critical vulnerability in the Fortinet SSL VPN client. The vulnerability is very simple. When you do a man-in-the-middle attack to intercept an SSL VPN connection the VPN client detects the fake certificate and alerts the user… but only AFTER it has sent the username and password. We were doing a pentest in a Wifi network and couldn’t believe it was so easy to get the keys to the customers internal network. We alerted Fortinet a year ago. They patched most versions but haven’t published any advisory yet.


The Fortinet FortiClient VPN client on all available platforms suffers
from a certificate validation vulnerability which allows an attacker
to successfully run a man-in-the-middle attack and to steal the
credentials of the user. 

When the FortiClient VPN client is tricked into connecting to a proxy
server rather than to the original firewall (e.g. through ARP or DNS
spoofing,) it detects the wrong SSL certificate but it only warns the
user _AFTER_ it has already sent the password to the proxy.

Critical. User can not prevent interception. Intercepted credentials
give full access to VPN.

Vulnerable versions: 
- FortiClient Lite on Windows 7
- FortiClient SSL VPN 4.0.2012 for Linux on Ubuntu
- FortiClient Lite Android 2.0

Acknowledged by vendor
- FortiClient v4.3.3 - Patch 3 on Windows
- FortiClient v4.0 - Patch 2 on MacOS

April 11, 2012: Vendor first contacted
May 2, 2012: Problem acknowledged 
Dec 21, 2012: Vendor has patched all versions except Android v2

Current Status
April 2013: 
Android FortiClient Lite v2.0.0223 still not patched and available on
Play Store.
Linux version not supported anymore. Apparently no patch available.

According to vendor all other versions have been patched on all
available platforms (as of V4.3 patch 11). 

Discovered by Cédric Tissières and Philippe Oechslin, Objectif Sécurité