gpg: default to --no-auto-key-retrieve.
[gnupg.git] / doc / vuln-announce-2010-kbx-realloc.txt
1              Realloc Bug with X.509 certificates in GnuPG
2             ==============================================
3                               2010-07-23
4
5
6 Summary
7 =======
8
9 While trying to import a server certificate for a CDN service, a segv
10 bug was found in GnuPG's GPGSM tool.  It is likely that this bug is
11 exploitable by sending a special crafted signed message and having a
12 user verify the signature.
13
14 [ Please do not send private mail in response to this message.  The
15   mailing list gnupg-devel is the best place to discuss this problem
16   (please subscribe first so you don't need moderator approval [1]). ]
17
18
19 Impact
20 ======
21
22 All applications using GnuPG's GPGSM tool to process S/MIME messages
23 or manage X.509 certificates are affected.  The bug exists in all
24 versions of GnuPG including the recently released GnuPG 2.0.16.
25
26 GPG (i.e. OpenPGP) is NOT affected.
27
28 GnuPG 1.x is NOT affected because it does not come with the GPGSM
29 tool.
30
31 An exploit is not yet known but it can't be ruled out for sure that
32 the problem has not already been identified by some dark forces.
33
34
35 Description
36 ===========
37
38 Importing a certificate with more than 98 Subject Alternate Names [2]
39 via GPGSM's import command or implicitly while verifying a signature
40 causes GPGSM to reallocate an array with the names.  The bug is that
41 the reallocation code misses assigning the reallocated array to the
42 old array variable and thus the old and freed array will be used.
43 Usually this leads to a segv.
44
45 It might be possible to use one of the techniques to exploit
46 assignments to malloced and freed memory.  Such an exploit won't be
47 easy to write because the attack vector must fit into a valid ASN.1
48 DER encoded DN.  To further complicate the task, that DN is not used
49 directly but after a transformation to RFC-2253 format.
50
51
52
53 Solution
54 ========
55
56 Apply the following patch.  The patch is required for all GnuPG
57 versions < 2.0.17.  It applies to 2.0.16 but should apply to many
58 older versions as well.
59
60
61 --- kbx/keybox-blob.c   (revision 5367)
62 +++ kbx/keybox-blob.c   (working copy)
63 @@ -898,6 +898,7 @@
64                rc = gpg_error_from_syserror ();
65                goto leave;
66              }
67 +          names = tmp;
68          }
69        names[blob->nuids++] = p;
70        if (!i && (p=x509_email_kludge (p)))
71
72
73
74
75 Support 
76 =======
77
78 g10 Code GmbH [3], a Duesseldorf based company owned and headed by
79 GnuPG's principal author, is currently funding GnuPG development.
80 Support contracts or other financial backing will greatly help us to
81 improve the quality of GnuPG.
82
83
84 Thanks
85 ======
86
87 Peter Gutmann for his "A mighty fortress is our PKI" mail to the
88 cryptography ML which contained a pointer to a certificate to exhibit
89 the problem.  This bug was created, found and fixed by Werner Koch.
90
91
92 [1] See http://lists.gnupg.org/mailman/listinfo/gnupg-devel
93 [2] <http://cvs.gnupg.org/cgi-bin/viewcvs.cgi/*checkout*/trunk/tests/samplekeys/cert-with-117-akas.pem>
94 [3] See http://www.gnupg.org/service.html