Release: 1.2.4
Environment
Linux/x86, Debian 3.0r2 + gnupg 1.2.4-2 backport
Description
-----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
Hello.  I was reading some mailing lists and importing keys as needed from a
 keyserver.  After importing one of the keys, I was no longer able to
 validate any message signatures, run --update-trustdb, or complete a listing
 of keys with --list-keys.
Fortunately, I was able to restore the keyring from the "pubring.gpg~"
 backup and have that to compare to.  I couldn't find any reports of this bug
 previously.  This "old style partial length" message appears in some bug
 reports, but that appears to be due to large files > 4GB.  My keyring is
 11MB.
I am concerned that someone with malicious intent could sign a message with
 a bogus key, causing people to download the key from a keyserver and corrupt
 their keyring.  This would be a simple but effective DoS attack against gpg
 users until they restore their keyring from the ~ backup.
I am posting bzip2'd copies of pubring.gpg.working and pubring.gpg.broken
 to my website so you can do a better analysis on them than I have:
http://chris.ruvolo.net/pers/gpg/pubring.gpg.broken.bz2 http://chris.ruvolo.net/pers/gpg/pubring.gpg.working.bz2 48cb46bd06dbc1e8e8c1d0f001ddaa09 pubring.gpg.broken.bz2 fe4e219d1c63b05834914bc690e12ad7 pubring.gpg.working.bz2
Thanks for looking at this.
- -Chris
 > gpg --list-keys --keyring pubring.gpg.broken > /dev/null gpg: [don't know]: old style partial length for invalid packet type gpg: keyring_get_keyblock: read error: invalid packet gpg: keydb_get_keyblock failed: invalid keyring > gpg --update-trustdb --keyring pubring.gpg.broken gpg: [don't know]: old style partial length for invalid packet type gpg: keyring_get_keyblock: read error: invalid packet gpg: keydb_get_keyblock failed: invalid keyring gpg: keydb_search_next failed: invalid keyring gpg: [don't know]: old style partial length for invalid packet type gpg: keyring_get_keyblock: read error: invalid packet gpg: keydb_get_keyblock failed: invalid keyring gpg: validate_key_list failed > gpg --list-packets pubring.gpg.working > packets.working > gpg --list-packets pubring.gpg.broken > packets.broken gpg: [don't know]: old style partial length for invalid packet type > diff -u packets.working packets.broken
- --- packets.working     Fri Feb 13 00:45:58 2004 +++ packets.broken      Fri Feb 13 00:48:36 2004 @@ -886283,3 +886283,9 @@ data: [160 bits] data: [159 bits] :trust packet: flag=00 sigcache=03 +:public key packet: +  version 4, algo 17, created 1076546293, expires 0 +  pkey[0]: [1024 bits] +  pkey[1]: [160 bits] +  pkey[2]: [1021 bits] +  pkey[3]: [1023 bits]
 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux)
 iD8DBQFALJbLKO6EG1hc77ERAjNjAJ4pLCGU9avopGuKGRNgmu1bGVhugQCgtdCT OdoGTD3fEcGWwHL3/vgBGZw= =47uq -----END PGP SIGNATURE-----
How To Repeat
Use my pubring.gpg.broken file with the commands in the description.
Fix
Unknown