File tree Expand file tree Collapse file tree 5 files changed +45
-3
lines changed
Expand file tree Collapse file tree 5 files changed +45
-3
lines changed Original file line number Diff line number Diff line change @@ -2,6 +2,12 @@ Revision history for XML-Sig
22
33{{$NEXT}}
44
5+ [Notable Changes since 0.67]
6+ - Fixed (CVE-2025-40934) issue where unsigned xml verified as true (thanks @gttds)
7+
8+ [Change Log]
9+ - 420d8c4 Fixes #63: An unsigned XML should fail verification
10+
5110.67 -- Fri Nov 07 18:25:52 AST 2025
612
713 [Notable Changes since 0.65]
Original file line number Diff line number Diff line change @@ -47,7 +47,7 @@ my %WriteMakefileArgs = (
4747 " Test::Lib" => 0,
4848 " Test::More" => 0
4949 },
50- " VERSION" => " 0.67 " ,
50+ " VERSION" => " 0.68 " ,
5151 " test" => {
5252 " TESTS" => " t/*.t"
5353 }
Original file line number Diff line number Diff line change 33 Signatures
44
55VERSION
6- version 0.67
6+ version 0.68
77
88SYNOPSIS
99 my $xml = '<foo ID="abc">123</foo>';
Original file line number Diff line number Diff line change @@ -500,6 +500,7 @@ sub verify {
500500 my $numsigs = $signature_nodeset -> size();
501501 print (" NodeSet Size: $numsigs \n " ) if $DEBUG ;
502502
503+ die ' XML::Sig - XML does not include any signatures' if $numsigs <= 0;
503504 # Loop through each Signature in the document checking each
504505 my $i ;
505506 while (my $signature_node = $signature_nodeset -> shift ()) {
@@ -669,7 +670,7 @@ sub verify {
669670 return 0 unless ($refdigest eq _trim(encode_base64($digest , ' ' )));
670671
671672 print ( " Signature $i Valid\n " ) if $DEBUG ;
672- }
673+ }
673674
674675 return 1;
675676}
Original file line number Diff line number Diff line change 1+ use strict;
2+ use warnings;
3+ use Test::More;
4+ use Test::Exception;
5+
6+ use XML::Sig;
7+
8+ my $cert_text = ' -----BEGIN CERTIFICATE-----
9+ MIIC4jCCAcoCCQC33wnybT5QZDANBgkqhkiG9w0BAQsFADAyMQswCQYDVQQGEwJV
10+ SzEPMA0GA1UECgwGQm94eUhRMRIwEAYDVQQDDAlNb2NrIFNBTUwwIBcNMjIwMjI4
11+ MjE0NjM4WhgPMzAyMTA3MDEyMTQ2MzhaMDIxCzAJBgNVBAYTAlVLMQ8wDQYDVQQK
12+ DAZCb3h5SFExEjAQBgNVBAMMCU1vY2sgU0FNTDCCASIwDQYJKoZIhvcNAQEBBQAD
13+ ggEPADCCAQoCggEBALGfYettMsct1T6tVUwTudNJH5Pnb9GGnkXi9Zw/e6x45DD0
14+ RuRONbFlJ2T4RjAE/uG+AjXxXQ8o2SZfb9+GgmCHuTJFNgHoZ1nFVXCmb/Hg8Hpd
15+ 4vOAGXndixaReOiq3EH5XvpMjMkJ3+8+9VYMzMZOjkgQtAqO36eAFFfNKX7dTj3V
16+ pwLkvz6/KFCq8OAwY+AUi4eZm5J57D31GzjHwfjH9WTeX0MyndmnNB1qV75qQR3b
17+ 2/W5sGHRv+9AarggJkF+ptUkXoLtVA51wcfYm6hILptpde5FQC8RWY1YrswBWAEZ
18+ NfyrR4JeSweElNHg4NVOs4TwGjOPwWGqzTfgTlECAwEAATANBgkqhkiG9w0BAQsF
19+ AAOCAQEAAYRlYflSXAWoZpFfwNiCQVE5d9zZ0DPzNdWhAybXcTyMf0z5mDf6FWBW
20+ 5Gyoi9u3EMEDnzLcJNkwJAAc39Apa4I2/tml+Jy29dk8bTyX6m93ngmCgdLh5Za4
21+ khuU3AM3L63g7VexCuO7kwkjh/+LqdcIXsVGO6XDfu2QOs1Xpe9zIzLpwm/RNYeX
22+ UjbSj5ce/jekpAw7qyVVL4xOyh8AtUW1ek3wIw1MJvEgEPt0d16oshWJpoS1OT8L
23+ r/22SvYEo3EmSGdTVGgk3x3s+A0qWAqTcyjr7Q4s/GKYRFfomGwz0TZ4Iw1ZN99M
24+ m0eo2USlSRTVl7QHRTuiuSThHpLKQQ==
25+ -----END CERTIFICATE-----' ;
26+
27+ my $xml = ' <foo ID="abc">123</foo>' ;
28+ my $signer = XML::Sig-> new({
29+ cert_text => $cert_text ,
30+ });
31+
32+ # verify a signature
33+ dies_ok( sub { $signer -> verify($xml ); }, " No Signatures found die properly." );
34+
35+ done_testing();
You can’t perform that action at this time.
0 commit comments