Skip to content

Commit fe0bb32

Browse files
authored
[Medium] Patch perl for CVE-2026-8376 (microsoft#17591)
1 parent 8d3720d commit fe0bb32

6 files changed

Lines changed: 592 additions & 495 deletions

File tree

SPECS/perl/CVE-2026-8376.patch

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
From 5e7f119eb2bb1181be908701f22bf7068e722f1c Mon Sep 17 00:00:00 2001
2+
From: Tony Cook <tony@develop-help.com>
3+
Date: Tue, 12 May 2026 14:51:00 +1000
4+
Subject: [PATCH] perl/perl-security#147: test against the actual character lengths
5+
6+
Upstream Patch Reference: https://patch-diff.githubusercontent.com/raw/Perl/perl5/pull/24433.patch
7+
---
8+
pod/perldelta.pod | 7 +++++++
9+
regcomp_study.c | 7 +++++++
10+
t/re/pat_psycho.t | 17 +++++++++++++++--
11+
3 files changed, 29 insertions(+), 2 deletions(-)
12+
13+
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
14+
index c7d7a64..1c1d33b 100644
15+
--- a/pod/perldelta.pod
16+
+++ b/pod/perldelta.pod
17+
@@ -45,6 +45,13 @@ C<C:\ProgramData>. By doing so, when an administrator attempts to use
18+
this executable from these compromised locations, arbitrary code can
19+
be executed.
20+
21+
+=head2 CVE-2026-8376 - Buffer overflow in Perl_study_chunk
22+
+
23+
+Repeated fixed string buffer overflow check counted characters not
24+
+bytes.
25+
+
26+
+CVE-2026-8376
27+
+
28+
=head1 Acknowledgements
29+
30+
Perl 5.38.2 represents approximately 5 months of development since Perl
31+
diff --git a/regcomp_study.c b/regcomp_study.c
32+
index db7ab3a..9248e1d 100644
33+
--- a/regcomp_study.c
34+
+++ b/regcomp_study.c
35+
@@ -2862,6 +2862,13 @@ Perl_study_chunk(pTHX_
36+
(U8 *) SvEND(data->last_found))
37+
- (U8*)s;
38+
l -= old;
39+
+
40+
+ if (l > 0 &&
41+
+ (mincount >= SSize_t_MAX / (SSize_t)l
42+
+ || old > SSize_t_MAX - mincount * (SSize_t)l)) {
43+
+ FAIL("Regexp out of space");
44+
+ }
45+
+
46+
/* Get the added string: */
47+
last_str = newSVpvn_utf8(s + old, l, UTF);
48+
last_chrs = UTF ? utf8_length((U8*)(s + old),
49+
diff --git a/t/re/pat_psycho.t b/t/re/pat_psycho.t
50+
index 3360395..9fd764f 100644
51+
--- a/t/re/pat_psycho.t
52+
+++ b/t/re/pat_psycho.t
53+
@@ -10,7 +10,7 @@
54+
use strict;
55+
use warnings;
56+
use 5.010;
57+
-
58+
+use Config;
59+
60+
sub run_tests;
61+
62+
@@ -31,7 +31,7 @@ BEGIN {
63+
64+
skip_all('$PERL_SKIP_PSYCHO_TEST set') if $ENV{PERL_SKIP_PSYCHO_TEST};
65+
66+
-plan tests => 15; # Update this when adding/deleting tests.
67+
+plan tests => 17; # Update this when adding/deleting tests.
68+
69+
run_tests() unless caller;
70+
71+
@@ -211,6 +211,19 @@ EOF
72+
73+
74+
}
75+
+
76+
+ SKIP:
77+
+ { # sec #147
78+
+ $Config{ptrsize} == 4
79+
+ or skip "these only fail on x32 and use too much memory on x64", 2;
80+
+ # original case
81+
+ fresh_perl_like('/\x{10000}{1073741824}/',
82+
+ qr/Regexp out of space/, {}, "ssize_t overflow");
83+
+
84+
+ # synthesized but similar case
85+
+ fresh_perl_like('/(?:\x{10001}\x{10000}){536870912}/',
86+
+ qr/Regexp out of space/, {}, "ssize_t overflow again");
87+
+ }
88+
} # End of sub run_tests
89+
90+
1;
91+
--
92+
2.45.4
93+

SPECS/perl/perl.spec

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ License: GPL+ or Artistic
127127
Epoch: %{perl_epoch}
128128
Version: %{perl_version}
129129
# release number must be even higher, because dual-lived modules will be broken otherwise
130-
Release: 510%{?dist}
130+
Release: 511%{?dist}
131131
Summary: Practical Extraction and Report Language
132132
Url: https://www.perl.org/
133133
Vendor: Microsoft Corporation
@@ -194,6 +194,7 @@ Patch205: CVE-2025-15649.patch
194194
Patch206: CVE-2026-42496.patch
195195
Patch207: CVE-2026-48959.patch
196196
Patch208: CVE-2026-48962.patch
197+
Patch209: CVE-2026-8376.patch
197198

198199
# Update some of the bundled modules
199200
# see http://fedoraproject.org/wiki/Perl/perl.spec for instructions
@@ -6850,6 +6851,9 @@ popd
68506851

68516852
# Old changelog entries are preserved in CVS.
68526853
%changelog
6854+
* Wed Jun 17 2026 Sushil Sati <v-sushilsati@microsoft.com> - 4:5.38.2-511
6855+
- Patch for CVE-2026-8376
6856+
68536857
* Tue Jun 02 2026 Azure Linux Security Servicing Account <azurelinux-security@microsoft.com> - 4:5.38.2-510
68546858
- Patch for CVE-2026-48962, CVE-2026-48959, CVE-2026-42496, CVE-2025-15649
68556859

toolkit/resources/manifests/package/pkggen_core_aarch64.txt

Lines changed: 58 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -107,64 +107,64 @@ libpipeline-devel-1.5.7-1.azl3.aarch64.rpm
107107
gdbm-1.23-1.azl3.aarch64.rpm
108108
gdbm-devel-1.23-1.azl3.aarch64.rpm
109109
gdbm-lang-1.23-1.azl3.aarch64.rpm
110-
perl-B-1.88-510.azl3.aarch64.rpm
111-
perl-Carp-1.54-510.azl3.noarch.rpm
112-
perl-Class-Struct-0.68-510.azl3.noarch.rpm
113-
perl-Data-Dumper-2.188-510.azl3.aarch64.rpm
114-
perl-DynaLoader-1.54-510.azl3.aarch64.rpm
115-
perl-Encode-3.19-510.azl3.aarch64.rpm
116-
perl-Errno-1.37-510.azl3.aarch64.rpm
117-
perl-Exporter-5.77-510.azl3.noarch.rpm
118-
perl-Fcntl-1.15-510.azl3.aarch64.rpm
119-
perl-File-Basename-2.86-510.azl3.noarch.rpm
120-
perl-File-Compare-1.100.700-510.azl3.noarch.rpm
121-
perl-File-Copy-2.41-510.azl3.noarch.rpm
122-
perl-File-Path-2.18-510.azl3.noarch.rpm
123-
perl-File-Temp-0.231.100-510.azl3.noarch.rpm
124-
perl-File-stat-1.13-510.azl3.noarch.rpm
125-
perl-FileHandle-2.05-510.azl3.noarch.rpm
126-
perl-Getopt-Long-2.54-510.azl3.noarch.rpm
127-
perl-Getopt-Std-1.13-510.azl3.noarch.rpm
128-
perl-HTTP-Tiny-0.086-510.azl3.noarch.rpm
129-
perl-I18N-Langinfo-0.22-510.azl3.aarch64.rpm
130-
perl-IO-1.52-510.azl3.aarch64.rpm
131-
perl-IPC-Open3-1.22-510.azl3.noarch.rpm
132-
perl-MIME-Base64-3.16-510.azl3.aarch64.rpm
133-
perl-POSIX-2.13-510.azl3.aarch64.rpm
134-
perl-PathTools-3.89-510.azl3.aarch64.rpm
135-
perl-Pod-Escapes-1.07-510.azl3.noarch.rpm
136-
perl-Pod-Perldoc-3.28.01-510.azl3.noarch.rpm
137-
perl-Pod-Simple-3.43-510.azl3.noarch.rpm
138-
perl-Pod-Usage-2.03-510.azl3.noarch.rpm
139-
perl-Scalar-List-Utils-1.63-510.azl3.aarch64.rpm
140-
perl-SelectSaver-1.02-510.azl3.noarch.rpm
141-
perl-Socket-2.036-510.azl3.aarch64.rpm
142-
perl-Storable-3.32-510.azl3.aarch64.rpm
143-
perl-Symbol-1.09-510.azl3.noarch.rpm
144-
perl-Term-ANSIColor-5.01-510.azl3.noarch.rpm
145-
perl-Term-Cap-1.18-510.azl3.noarch.rpm
146-
perl-Text-ParseWords-3.31-510.azl3.noarch.rpm
147-
perl-Text-Tabs+Wrap-2021.0814-510.azl3.noarch.rpm
148-
perl-Thread-Queue-3.14-510.azl3.noarch.rpm
149-
perl-Time-Local-1.300-510.azl3.noarch.rpm
150-
perl-Unicode-Normalize-1.32-510.azl3.aarch64.rpm
151-
perl-base-2.27-510.azl3.noarch.rpm
152-
perl-constant-1.33-510.azl3.noarch.rpm
153-
perl-if-0.61.000-510.azl3.noarch.rpm
154-
perl-interpreter-5.38.2-510.azl3.aarch64.rpm
155-
perl-libs-5.38.2-510.azl3.aarch64.rpm
156-
perl-locale-1.10-510.azl3.noarch.rpm
157-
perl-macros-5.38.2-510.azl3.noarch.rpm
158-
perl-mro-1.28-510.azl3.aarch64.rpm
159-
perl-overload-1.37-510.azl3.noarch.rpm
160-
perl-overloading-0.02-510.azl3.noarch.rpm
161-
perl-parent-0.241-510.azl3.noarch.rpm
162-
perl-podlators-5.01-510.azl3.noarch.rpm
163-
perl-subs-1.04-510.azl3.noarch.rpm
164-
perl-threads-2.36-510.azl3.aarch64.rpm
165-
perl-threads-shared-1.68-510.azl3.aarch64.rpm
166-
perl-vars-1.05-510.azl3.noarch.rpm
167-
perl-5.38.2-510.azl3.aarch64.rpm
110+
perl-B-1.88-511.azl3.aarch64.rpm
111+
perl-Carp-1.54-511.azl3.noarch.rpm
112+
perl-Class-Struct-0.68-511.azl3.noarch.rpm
113+
perl-Data-Dumper-2.188-511.azl3.aarch64.rpm
114+
perl-DynaLoader-1.54-511.azl3.aarch64.rpm
115+
perl-Encode-3.19-511.azl3.aarch64.rpm
116+
perl-Errno-1.37-511.azl3.aarch64.rpm
117+
perl-Exporter-5.77-511.azl3.noarch.rpm
118+
perl-Fcntl-1.15-511.azl3.aarch64.rpm
119+
perl-File-Basename-2.86-511.azl3.noarch.rpm
120+
perl-File-Compare-1.100.700-511.azl3.noarch.rpm
121+
perl-File-Copy-2.41-511.azl3.noarch.rpm
122+
perl-File-Path-2.18-511.azl3.noarch.rpm
123+
perl-File-Temp-0.231.100-511.azl3.noarch.rpm
124+
perl-File-stat-1.13-511.azl3.noarch.rpm
125+
perl-FileHandle-2.05-511.azl3.noarch.rpm
126+
perl-Getopt-Long-2.54-511.azl3.noarch.rpm
127+
perl-Getopt-Std-1.13-511.azl3.noarch.rpm
128+
perl-HTTP-Tiny-0.086-511.azl3.noarch.rpm
129+
perl-I18N-Langinfo-0.22-511.azl3.aarch64.rpm
130+
perl-IO-1.52-511.azl3.aarch64.rpm
131+
perl-IPC-Open3-1.22-511.azl3.noarch.rpm
132+
perl-MIME-Base64-3.16-511.azl3.aarch64.rpm
133+
perl-POSIX-2.13-511.azl3.aarch64.rpm
134+
perl-PathTools-3.89-511.azl3.aarch64.rpm
135+
perl-Pod-Escapes-1.07-511.azl3.noarch.rpm
136+
perl-Pod-Perldoc-3.28.01-511.azl3.noarch.rpm
137+
perl-Pod-Simple-3.43-511.azl3.noarch.rpm
138+
perl-Pod-Usage-2.03-511.azl3.noarch.rpm
139+
perl-Scalar-List-Utils-1.63-511.azl3.aarch64.rpm
140+
perl-SelectSaver-1.02-511.azl3.noarch.rpm
141+
perl-Socket-2.036-511.azl3.aarch64.rpm
142+
perl-Storable-3.32-511.azl3.aarch64.rpm
143+
perl-Symbol-1.09-511.azl3.noarch.rpm
144+
perl-Term-ANSIColor-5.01-511.azl3.noarch.rpm
145+
perl-Term-Cap-1.18-511.azl3.noarch.rpm
146+
perl-Text-ParseWords-3.31-511.azl3.noarch.rpm
147+
perl-Text-Tabs+Wrap-2021.0814-511.azl3.noarch.rpm
148+
perl-Thread-Queue-3.14-511.azl3.noarch.rpm
149+
perl-Time-Local-1.300-511.azl3.noarch.rpm
150+
perl-Unicode-Normalize-1.32-511.azl3.aarch64.rpm
151+
perl-base-2.27-511.azl3.noarch.rpm
152+
perl-constant-1.33-511.azl3.noarch.rpm
153+
perl-if-0.61.000-511.azl3.noarch.rpm
154+
perl-interpreter-5.38.2-511.azl3.aarch64.rpm
155+
perl-libs-5.38.2-511.azl3.aarch64.rpm
156+
perl-locale-1.10-511.azl3.noarch.rpm
157+
perl-macros-5.38.2-511.azl3.noarch.rpm
158+
perl-mro-1.28-511.azl3.aarch64.rpm
159+
perl-overload-1.37-511.azl3.noarch.rpm
160+
perl-overloading-0.02-511.azl3.noarch.rpm
161+
perl-parent-0.241-511.azl3.noarch.rpm
162+
perl-podlators-5.01-511.azl3.noarch.rpm
163+
perl-subs-1.04-511.azl3.noarch.rpm
164+
perl-threads-2.36-511.azl3.aarch64.rpm
165+
perl-threads-shared-1.68-511.azl3.aarch64.rpm
166+
perl-vars-1.05-511.azl3.noarch.rpm
167+
perl-5.38.2-511.azl3.aarch64.rpm
168168
texinfo-7.0.3-1.azl3.aarch64.rpm
169169
gtk-doc-1.33.2-1.azl3.noarch.rpm
170170
autoconf-2.72-2.azl3.noarch.rpm

toolkit/resources/manifests/package/pkggen_core_x86_64.txt

Lines changed: 58 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -107,64 +107,64 @@ libpipeline-devel-1.5.7-1.azl3.x86_64.rpm
107107
gdbm-1.23-1.azl3.x86_64.rpm
108108
gdbm-devel-1.23-1.azl3.x86_64.rpm
109109
gdbm-lang-1.23-1.azl3.x86_64.rpm
110-
perl-B-1.88-510.azl3.x86_64.rpm
111-
perl-Carp-1.54-510.azl3.noarch.rpm
112-
perl-Class-Struct-0.68-510.azl3.noarch.rpm
113-
perl-Data-Dumper-2.188-510.azl3.x86_64.rpm
114-
perl-DynaLoader-1.54-510.azl3.x86_64.rpm
115-
perl-Encode-3.19-510.azl3.x86_64.rpm
116-
perl-Errno-1.37-510.azl3.x86_64.rpm
117-
perl-Exporter-5.77-510.azl3.noarch.rpm
118-
perl-Fcntl-1.15-510.azl3.x86_64.rpm
119-
perl-File-Basename-2.86-510.azl3.noarch.rpm
120-
perl-File-Compare-1.100.700-510.azl3.noarch.rpm
121-
perl-File-Copy-2.41-510.azl3.noarch.rpm
122-
perl-File-Path-2.18-510.azl3.noarch.rpm
123-
perl-File-Temp-0.231.100-510.azl3.noarch.rpm
124-
perl-File-stat-1.13-510.azl3.noarch.rpm
125-
perl-FileHandle-2.05-510.azl3.noarch.rpm
126-
perl-Getopt-Long-2.54-510.azl3.noarch.rpm
127-
perl-Getopt-Std-1.13-510.azl3.noarch.rpm
128-
perl-HTTP-Tiny-0.086-510.azl3.noarch.rpm
129-
perl-I18N-Langinfo-0.22-510.azl3.x86_64.rpm
130-
perl-IO-1.52-510.azl3.x86_64.rpm
131-
perl-IPC-Open3-1.22-510.azl3.noarch.rpm
132-
perl-MIME-Base64-3.16-510.azl3.x86_64.rpm
133-
perl-POSIX-2.13-510.azl3.x86_64.rpm
134-
perl-PathTools-3.89-510.azl3.x86_64.rpm
135-
perl-Pod-Escapes-1.07-510.azl3.noarch.rpm
136-
perl-Pod-Perldoc-3.28.01-510.azl3.noarch.rpm
137-
perl-Pod-Simple-3.43-510.azl3.noarch.rpm
138-
perl-Pod-Usage-2.03-510.azl3.noarch.rpm
139-
perl-Scalar-List-Utils-1.63-510.azl3.x86_64.rpm
140-
perl-SelectSaver-1.02-510.azl3.noarch.rpm
141-
perl-Socket-2.036-510.azl3.x86_64.rpm
142-
perl-Storable-3.32-510.azl3.x86_64.rpm
143-
perl-Symbol-1.09-510.azl3.noarch.rpm
144-
perl-Term-ANSIColor-5.01-510.azl3.noarch.rpm
145-
perl-Term-Cap-1.18-510.azl3.noarch.rpm
146-
perl-Text-ParseWords-3.31-510.azl3.noarch.rpm
147-
perl-Text-Tabs+Wrap-2021.0814-510.azl3.noarch.rpm
148-
perl-Thread-Queue-3.14-510.azl3.noarch.rpm
149-
perl-Time-Local-1.300-510.azl3.noarch.rpm
150-
perl-Unicode-Normalize-1.32-510.azl3.x86_64.rpm
151-
perl-base-2.27-510.azl3.noarch.rpm
152-
perl-constant-1.33-510.azl3.noarch.rpm
153-
perl-if-0.61.000-510.azl3.noarch.rpm
154-
perl-interpreter-5.38.2-510.azl3.x86_64.rpm
155-
perl-libs-5.38.2-510.azl3.x86_64.rpm
156-
perl-locale-1.10-510.azl3.noarch.rpm
157-
perl-macros-5.38.2-510.azl3.noarch.rpm
158-
perl-mro-1.28-510.azl3.x86_64.rpm
159-
perl-overload-1.37-510.azl3.noarch.rpm
160-
perl-overloading-0.02-510.azl3.noarch.rpm
161-
perl-parent-0.241-510.azl3.noarch.rpm
162-
perl-podlators-5.01-510.azl3.noarch.rpm
163-
perl-subs-1.04-510.azl3.noarch.rpm
164-
perl-threads-2.36-510.azl3.x86_64.rpm
165-
perl-threads-shared-1.68-510.azl3.x86_64.rpm
166-
perl-vars-1.05-510.azl3.noarch.rpm
167-
perl-5.38.2-510.azl3.x86_64.rpm
110+
perl-B-1.88-511.azl3.x86_64.rpm
111+
perl-Carp-1.54-511.azl3.noarch.rpm
112+
perl-Class-Struct-0.68-511.azl3.noarch.rpm
113+
perl-Data-Dumper-2.188-511.azl3.x86_64.rpm
114+
perl-DynaLoader-1.54-511.azl3.x86_64.rpm
115+
perl-Encode-3.19-511.azl3.x86_64.rpm
116+
perl-Errno-1.37-511.azl3.x86_64.rpm
117+
perl-Exporter-5.77-511.azl3.noarch.rpm
118+
perl-Fcntl-1.15-511.azl3.x86_64.rpm
119+
perl-File-Basename-2.86-511.azl3.noarch.rpm
120+
perl-File-Compare-1.100.700-511.azl3.noarch.rpm
121+
perl-File-Copy-2.41-511.azl3.noarch.rpm
122+
perl-File-Path-2.18-511.azl3.noarch.rpm
123+
perl-File-Temp-0.231.100-511.azl3.noarch.rpm
124+
perl-File-stat-1.13-511.azl3.noarch.rpm
125+
perl-FileHandle-2.05-511.azl3.noarch.rpm
126+
perl-Getopt-Long-2.54-511.azl3.noarch.rpm
127+
perl-Getopt-Std-1.13-511.azl3.noarch.rpm
128+
perl-HTTP-Tiny-0.086-511.azl3.noarch.rpm
129+
perl-I18N-Langinfo-0.22-511.azl3.x86_64.rpm
130+
perl-IO-1.52-511.azl3.x86_64.rpm
131+
perl-IPC-Open3-1.22-511.azl3.noarch.rpm
132+
perl-MIME-Base64-3.16-511.azl3.x86_64.rpm
133+
perl-POSIX-2.13-511.azl3.x86_64.rpm
134+
perl-PathTools-3.89-511.azl3.x86_64.rpm
135+
perl-Pod-Escapes-1.07-511.azl3.noarch.rpm
136+
perl-Pod-Perldoc-3.28.01-511.azl3.noarch.rpm
137+
perl-Pod-Simple-3.43-511.azl3.noarch.rpm
138+
perl-Pod-Usage-2.03-511.azl3.noarch.rpm
139+
perl-Scalar-List-Utils-1.63-511.azl3.x86_64.rpm
140+
perl-SelectSaver-1.02-511.azl3.noarch.rpm
141+
perl-Socket-2.036-511.azl3.x86_64.rpm
142+
perl-Storable-3.32-511.azl3.x86_64.rpm
143+
perl-Symbol-1.09-511.azl3.noarch.rpm
144+
perl-Term-ANSIColor-5.01-511.azl3.noarch.rpm
145+
perl-Term-Cap-1.18-511.azl3.noarch.rpm
146+
perl-Text-ParseWords-3.31-511.azl3.noarch.rpm
147+
perl-Text-Tabs+Wrap-2021.0814-511.azl3.noarch.rpm
148+
perl-Thread-Queue-3.14-511.azl3.noarch.rpm
149+
perl-Time-Local-1.300-511.azl3.noarch.rpm
150+
perl-Unicode-Normalize-1.32-511.azl3.x86_64.rpm
151+
perl-base-2.27-511.azl3.noarch.rpm
152+
perl-constant-1.33-511.azl3.noarch.rpm
153+
perl-if-0.61.000-511.azl3.noarch.rpm
154+
perl-interpreter-5.38.2-511.azl3.x86_64.rpm
155+
perl-libs-5.38.2-511.azl3.x86_64.rpm
156+
perl-locale-1.10-511.azl3.noarch.rpm
157+
perl-macros-5.38.2-511.azl3.noarch.rpm
158+
perl-mro-1.28-511.azl3.x86_64.rpm
159+
perl-overload-1.37-511.azl3.noarch.rpm
160+
perl-overloading-0.02-511.azl3.noarch.rpm
161+
perl-parent-0.241-511.azl3.noarch.rpm
162+
perl-podlators-5.01-511.azl3.noarch.rpm
163+
perl-subs-1.04-511.azl3.noarch.rpm
164+
perl-threads-2.36-511.azl3.x86_64.rpm
165+
perl-threads-shared-1.68-511.azl3.x86_64.rpm
166+
perl-vars-1.05-511.azl3.noarch.rpm
167+
perl-5.38.2-511.azl3.x86_64.rpm
168168
texinfo-7.0.3-1.azl3.x86_64.rpm
169169
gtk-doc-1.33.2-1.azl3.noarch.rpm
170170
autoconf-2.72-2.azl3.noarch.rpm

0 commit comments

Comments
 (0)