A vulnerability in GnuPG could allow a remote attacker to execute arbitrary code on an affected system.
GNU Privacy Guard (GnuPG) is the GNU project's implementation of the OpenPGP standard as defined by RFC2440.
OpenPGP messages are processed by GnuPG using data structures called filters that are used in a way similar to pipelines in the shell. Context structures that are usually allocated on the stack and passed to the filter functions are used for communications between these filters. Before the context structure gets deallocated, the OpenPGP data stream that is fed into the filters is closed. In some cases, while decrypting encrypted packets, this may not happen and the filter may use a void context structure filled with garbage that is under the attacker's control. Another context is included in the filter context for use by the low-level decryption. The decryption algorithm is accessed by this context via a function pointer.
According to GnuPG:
Using malformed OpenPGP packets an attacker is able to modify and dereference a function pointer in GnuPG.
The GnuPG advisory notes that both encrypted and signed data could be used as attack vectors for this vulnerability.
A remote, unauthenticated attacker with the ability to supply specially crafted OpenPGP packets to a vulnerable version of GnuPG may be able to execute arbitrary code on an affected system. The attacker-supplied code would be executed with the privileges of the user or application invoking
Apply a patch or upgrade
Patches have been released to address this issue. Please see the Systems Affected section of this document for more details on specific vendors.
Users who compile GnuPG from the original distribution are encouraged to upgrade to version 1.4.6 (or later) or apply the patch to upgrade from 1.4.5 to 1.4.6.
Run with limited privileges
Running GnuPG with reduced privileges may help mitigate the effects of this vulnerability. Note that this workaround will not prevent exploitation.
Vendor| Status| Date Notified| Date Updated
Debian GNU/Linux| | 18 Dec 2006| 21 Dec 2006
Gentoo Linux| | 18 Dec 2006| 21 Dec 2006
GnuPG| | 07 Dec 2006| 07 Dec 2006
Mandriva, Inc.| | 18 Dec 2006| 18 Dec 2006
OpenPKG| | -| 21 Dec 2006
Openwall GNU/*/Linux| | 18 Dec 2006| 18 Dec 2006
Red Hat, Inc.| | -| 07 Dec 2006
rPath| | -| 07 Dec 2006
Slackware Linux Inc.| | -| 21 Dec 2006
SUSE Linux| | 18 Dec 2006| 19 Dec 2006
Trustix Secure Linux| | -| 11 Dec 2006
Ubuntu| | -| 07 Dec 2006
Apple Computer, Inc.| | 18 Dec 2006| 18 Dec 2006
Sun Microsystems, Inc.| | 18 Dec 2006| 21 Dec 2006
Conectiva Inc.| | 18 Dec 2006| 18 Dec 2006
If you are a vendor and your product is affected, let us know.
Group | Score | Vector
Base | N/A | N/A
Temporal | N/A | N/A
Environmental | N/A | N/A
This issue was publicly reported by Werner Koch of the GnuPG project who, in turn, credits Tavis Ormandy of the Gentoo Security Team with its discovery.
This document was written by Chad R Dougherty and Chris Taschner.