Package: gnupg / 1.4.18-7+deb8u5

gpg-Sanitize-diagnostic-with-the-original-file-name.patch Patch series | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
From: Werner Koch <wk@gnupg.org>
Date: Fri, 8 Jun 2018 10:45:21 +0200
Subject: gpg: Sanitize diagnostic with the original file name.
Origin:  https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commit;h=2326851c60793653069494379b16d84e4c10a0ac
Bug: https://dev.gnupg.org/T4012
Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2018-12020

* g10/mainproc.c (proc_plaintext): Sanitize verbose output.
--

This fixes a forgotten sanitation of user supplied data in a verbose
mode diagnostic.  The mention CVE is about using this to inject
status-fd lines into the stderr output.  Other harm good as well be
done.  Note that GPGME based applications are not affected because
GPGME does not fold status output into stderr.

CVE-id: CVE-2018-12020
GnuPG-bug-id: 4012
(cherry picked from commit 13f135c7a252cc46cff96e75968d92b6dc8dce1b)
---
 g10/mainproc.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/g10/mainproc.c b/g10/mainproc.c
index 33a654b34..ffa7ef6d8 100644
--- a/g10/mainproc.c
+++ b/g10/mainproc.c
@@ -638,7 +638,11 @@ proc_plaintext( CTX c, PACKET *pkt )
     if( pt->namelen == 8 && !memcmp( pt->name, "_CONSOLE", 8 ) )
 	log_info(_("NOTE: sender requested \"for-your-eyes-only\"\n"));
     else if( opt.verbose )
-	log_info(_("original file name='%.*s'\n"), pt->namelen, pt->name);
+      {
+        char *tmp = make_printable_string (pt->name, pt->namelen, 0);
+        log_info (_("original file name='%.*s'\n"), (int)strlen (tmp), tmp);
+        xfree (tmp);
+      }
     free_md_filter_context( &c->mfx );
     c->mfx.md = md_open( 0, 0);
     /* fixme: we may need to push the textfilter if we have sigclass 1
-- 
2.17.1