====================================================================== = Security Objectives Advisory (SECOBJADV-2008-02) = ======================================================================
Cygwin Installation and Update Process can be Subverted Vulnerability
AFFECTED: Cygwin setup.exe 2.573.2.2
PLATFORM: Intel / Windows
CLASSIFICATION: Insufficient Verification of Data Authenticity (CWE-345)
RESEARCHER: Derek Callaway
IMPACT: Client-side code execution
REFERENCES: CVE-2008-3323, RedHat Bugzilla Bug 449929
Cygwin is a Linux-like environment for Windows. It consists of two parts:
A DLL (cygwin1.dll) which acts as a Linux API emulation layer providing substantial Linux API functionality.
A collection of tools which provide Linux look and feel.
Cygwin is a Linux-like environment for Microsoft Windows copyrighted by Red Hat, Inc. Tarball software packages are installed and updated via setup.exe. This program downloads a package list and packages from mirrors over plaintext HTTP or FTP. The package list contains MD5 checksums for verifying package integrity. If a rogue server answers the HTTP request responsible for package updates and responds with a modified MD5 string setup.exe will download and install a malicious package.
To successfully exploit this vulnerability an attacker must be able to somehow position themself such that they can impersonate a Cygwin mirror. As a proof-of-concept the local hosts file was modified but an attack that occurs in the wild can be accomplished through DNS cache poisoning, ARP redirection, TCP hijacking, impersonation of a Wi-Fi Access Point, etc. The attacker also would have configured a rogue web server to push out package code of their choosing. The success of attacks that utilize the DNS cache poisoning approach has recently been compounded by Kaminsky's birthday paradox technique (CVE-2008-1447.)
For testing purposes, gzip was used as the malicious package although
any and all packages can be trojanned (including base-files.) gzip was
chosen for testing purposes because it is so common. A real attacker
would probably target more of a lynchpin package like bash. The version, time, size, and MD5 sum of the gzip entry in the setup.ini file was modified for the rogue Cygwin server. The location of the altered gzip package was /sourceware/cygwin/release/gzip/gzip-3.1.33-7.tar.bz2.
When setup.exe is executed it will automatically download the modified package from the rogue server. /usr/bin/gzip was replaced by /usr/bin/ls during Security Objectives' testing. In a real attack scenario bash could be trojanned or a complete rootkit could be installed. The user is likely to not even notice the malicious package being setup as it is auto-selected for installation.
Refrain from using Cygwin setup.exe versions prior to 2.573.2.3.
Cygwin Setup.exe version 2.573.2.3 addresses this vulnerability.
20-May-2008 Discovery of Vulnerability 22-May-2008 Developed Proof-of-Concept 25-May-2008 Reported to Vendor 04-Jun-2008 RedHat Bugzilla ID Opened 19-Jun-2008 Vendor Supplied Patched Program for Testing 21-Jun-2008 Fix Applied to Bug in Original Patch 22-Jul-2008 New Setup Program Tested and Verified 25-Jul-2008 Published Advisory
ABOUT SECURITY OBJECTIVES
Security Objectives is a security centric consultancy and software development corporation which operates in the area of application assurance software. Security Objectives employs methods that are centered on software comprehension, therefore a more in-depth contextual understanding of the application is developed.
Permission is granted for electronic distribution of this advisory. It may not be edited without the written consent of Security Objectives.
The information contained in this advisory is believed to be accurate based on currently available information and is provided "as is" without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the information is with you.