lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Fri, 28 Dec 2012 17:06:19 -0800
From: KB Sriram <>
Subject: GnuPG 1.4.12 and lower - memory access errors and keyring database corruption

Versions of GnuPG <= 1.4.12 are vulnerable to memory access violations
and public keyring database corruption when importing public keys that
have been manipulated.

An OpenPGP key can be fuzzed in such a way that gpg segfaults (or has
other memory access violations) when importing the key.

The key may also be fuzzed such that gpg reports no errors when
examining the key (eg: "gpg the_bad_key.pkr") but importing it causes
gpg to corrupt its public keyring database.

The database corruption issue was first reported on Dec 6th, through
the gpg bug tracking system:

The subsequent memory access violation was discovered and reported in
a private email with the maintainer on Dec 20th.

A zip file with keys that causes segfaults and other errors is
available at
and includes a log file that demonstrates the issues [on MacOS X and
gpg 1.4.11]

A new version of gpg -- 1.4.13 -- that addressed both these issues, was
independently released by the maintainer on Dec 20th.

The simplest solution is to upgrade all gpg installs to 1.4.13.

[Workarounds: A corrupted database may be recovered by manually
 copying back the pubring.gpg~ backup file. Certain errors may also be prevented
 by never directly importing a key, but first just "looking" at the key
 (eg: "gpg bad_key.pkr"). However, this is not guaranteed to work in all cases;
 though upgrading to 1.4.13 does work for the issues reported.]


The problem was discovered during a byte-fuzzing test of OpenPGP
certificates for an unrelated application. Each byte in turn was
replaced by a random byte, and the modified certificate fed to the
application to check that it handled errors correctly. Gpg was used as
a control, but it itself turned out to have errors related to packet
parsing. The errors are generally triggered when fuzzing the length
field of OpenPGP packets, which cascades into subsequent errors in
certain situations.


Powered by blists - more mailing lists