RHEL-67050 CVE-2024-46954 ghostscript: Directory Traversal in Ghostscript via Overlong UTF-8 Encoding
Resolves: RHEL-67050
This commit is contained in:
		
							parent
							
								
									f5721d2a28
								
							
						
					
					
						commit
						07c9e4554d
					
				| @ -0,0 +1,63 @@ | |||||||
|  | From 282f691f5e57b6bf55ba51ad8c2be2cce8edb938 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Robin Watts <Robin.Watts@artifex.com> | ||||||
|  | Date: Tue, 18 Jun 2024 18:22:55 +0100 | ||||||
|  | Subject: [PATCH] Bug 707788: Fix decode_utf8 to forbid overlong encodings. | ||||||
|  | 
 | ||||||
|  | These can be used by malicious code to escape directories. | ||||||
|  | 
 | ||||||
|  | CVE-2024-46954 | ||||||
|  | ---
 | ||||||
|  |  base/gp_utf8.c | 13 ++++++++++++- | ||||||
|  |  1 file changed, 12 insertions(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/base/gp_utf8.c b/base/gp_utf8.c
 | ||||||
|  | index c33fc3550..b78977e37 100644
 | ||||||
|  | --- a/base/gp_utf8.c
 | ||||||
|  | +++ b/base/gp_utf8.c
 | ||||||
|  | @@ -1,4 +1,4 @@
 | ||||||
|  | -/* Copyright (C) 2001-2023 Artifex Software, Inc.
 | ||||||
|  | +/* Copyright (C) 2001-2024 Artifex Software, Inc.
 | ||||||
|  |     All Rights Reserved. | ||||||
|  |   | ||||||
|  |     This software is provided AS-IS with no warranty, either express or | ||||||
|  | @@ -25,12 +25,16 @@ decode_utf8(const char **inp, unsigned int i)
 | ||||||
|  |      if (i < 0x80) { | ||||||
|  |      } else if ((i & 0xE0) == 0xC0) { | ||||||
|  |          i &= 0x1F; | ||||||
|  | +        if (i == 0)
 | ||||||
|  | +            goto fail_overlong;
 | ||||||
|  |          c = (unsigned char)*in++; | ||||||
|  |          if ((c & 0xC0) != 0x80) | ||||||
|  |              goto fail; | ||||||
|  |          i = (i<<6) | (c & 0x3f); | ||||||
|  |      } else if ((i & 0xF0) == 0xE0) { | ||||||
|  |          i &= 0xF; | ||||||
|  | +        if (i == 0)
 | ||||||
|  | +            goto fail_overlong;
 | ||||||
|  |          c = (unsigned char)*in++; | ||||||
|  |          if ((c & 0xC0) != 0x80) | ||||||
|  |              goto fail; | ||||||
|  | @@ -41,6 +45,8 @@ decode_utf8(const char **inp, unsigned int i)
 | ||||||
|  |          i = (i<<6) | (c & 0x3f); | ||||||
|  |      } else if ((i & 0xF8) == 0xF0) { | ||||||
|  |          i &= 0x7; | ||||||
|  | +        if (i == 0)
 | ||||||
|  | +            goto fail_overlong;
 | ||||||
|  |          c = (unsigned char)*in++; | ||||||
|  |          if ((c & 0xC0) != 0x80) | ||||||
|  |              goto fail; | ||||||
|  | @@ -59,6 +65,11 @@ decode_utf8(const char **inp, unsigned int i)
 | ||||||
|  |          /* If we fail, unread the last one, and return the unicode replacement char. */ | ||||||
|  |  fail: | ||||||
|  |         in--; | ||||||
|  | +fail_overlong:
 | ||||||
|  | +       /* If we jump to here it's because we've detected an 'overlong' encoding.
 | ||||||
|  | +        * While this seems harmless, it's actually illegal, for good reason;
 | ||||||
|  | +        * this is typically an attempt to sneak stuff past security checks, like
 | ||||||
|  | +        * "../" in paths. Fail this. */
 | ||||||
|  |         i = 0xfffd; | ||||||
|  |      } | ||||||
|  |      *inp = in; | ||||||
|  | -- 
 | ||||||
|  | 2.49.0 | ||||||
|  | 
 | ||||||
| @ -130,9 +130,15 @@ Patch: 0001-Uniprint-device-prevent-string-configuration-changes.patch | |||||||
| # RHEL-46575 CVE-2024-33869 ghostscript: path traversal and command execution due to path reduction | # RHEL-46575 CVE-2024-33869 ghostscript: path traversal and command execution due to path reduction | ||||||
| Patch: 0001-Bug-707691.patch | Patch: 0001-Bug-707691.patch | ||||||
| # RHEL-67044 CVE-2024-46951 ghostscript: Arbitrary Code Execution in Artifex Ghostscript Pattern Color Space | # RHEL-67044 CVE-2024-46951 ghostscript: Arbitrary Code Execution in Artifex Ghostscript Pattern Color Space | ||||||
|  | # https://cgit.ghostscript.com/cgi-bin/cgit.cgi/ghostpdl.git/commit/?id=f49812186baa7d1 | ||||||
| Patch: 0001-PS-interpreter-check-the-type-of-the-Pattern-Impleme.patch | Patch: 0001-PS-interpreter-check-the-type-of-the-Pattern-Impleme.patch | ||||||
| # CVE-2024-46952 ghostscript: Buffer Overflow in Ghostscript PDF XRef Stream Handling | # CVE-2024-46952 ghostscript: Buffer Overflow in Ghostscript PDF XRef Stream Handling | ||||||
|  | # https://cgit.ghostscript.com/cgi-bin/cgit.cgi/ghostpdl.git/commit/?id=b1f0827c30f59a2 | ||||||
| Patch: 0001-PDF-interpreter-sanitise-W-array-values-in-Xref-stre.patch | Patch: 0001-PDF-interpreter-sanitise-W-array-values-in-Xref-stre.patch | ||||||
|  | # RHEL-67050 CVE-2024-46954 ghostscript: Directory Traversal in Ghostscript via Overlong UTF-8 Encoding | ||||||
|  | # https://cgit.ghostscript.com/cgi-bin/cgit.cgi/ghostpdl.git/commit/?id=282f691f5e57b6b | ||||||
|  | Patch: 0001-Bug-707788-Fix-decode_utf8-to-forbid-overlong-encodi.patch | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| # Downstream patches -- these should be always included when doing rebase: | # Downstream patches -- these should be always included when doing rebase: | ||||||
| # ------------------ | # ------------------ | ||||||
| @ -452,6 +458,7 @@ done | |||||||
| * Tue Apr 15 2025 Zdenek Dohnal <zdohnal@redhat.com> - 10.02.1-15 | * Tue Apr 15 2025 Zdenek Dohnal <zdohnal@redhat.com> - 10.02.1-15 | ||||||
| - RHEL-67044 CVE-2024-46951 ghostscript: Arbitrary Code Execution in Artifex Ghostscript Pattern Color Space | - RHEL-67044 CVE-2024-46951 ghostscript: Arbitrary Code Execution in Artifex Ghostscript Pattern Color Space | ||||||
| - RHEL-67050 CVE-2024-46952 ghostscript: Buffer Overflow in Ghostscript PDF XRef Stream Handling | - RHEL-67050 CVE-2024-46952 ghostscript: Buffer Overflow in Ghostscript PDF XRef Stream Handling | ||||||
|  | - RHEL-67050 CVE-2024-46954 ghostscript: Directory Traversal in Ghostscript via Overlong UTF-8 Encoding | ||||||
| 
 | 
 | ||||||
| * Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 10.02.1-14 | * Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 10.02.1-14 | ||||||
| - Bump release for October 2024 mass rebuild: | - Bump release for October 2024 mass rebuild: | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user