Package: perl Version: 5.10.0-19 Severity: grave Tags: security upstream Hi,
the last upstream release of libdigest-perl (1.17) contains a fix for an unsafe use of eval: the argument to Digest->new($algo) was not checked properly allowing code injection (in case the value can be changed by the attacker). This also affects perl as the module is included in perl-base. I have attached the update for libdigest-perl I prepared for squeeze which only contains the relevant fix. Regards, Ansgar
diff -u libdigest-perl-1.16/debian/changelog libdigest-perl-1.16/debian/changelog --- libdigest-perl-1.16/debian/changelog +++ libdigest-perl-1.16/debian/changelog @@ -1,3 +1,9 @@ +libdigest-perl (1.16-1+squeeze1) UNRELEASED; urgency=low + + * Fix unsafe use of eval in Digest->new(). + + -- Ansgar Burchardt <ans...@debian.org> Sun, 02 Oct 2011 23:20:11 +0200 + libdigest-perl (1.16-1) unstable; urgency=low [ gregor herrmann ] only in patch2: unchanged: --- libdigest-perl-1.16.orig/Digest.pm +++ libdigest-perl-1.16/Digest.pm @@ -24,7 +24,7 @@ shift; # class ignored my $algorithm = shift; my $impl = $MMAP{$algorithm} || do { - $algorithm =~ s/\W+//; + $algorithm =~ s/\W+//g; "Digest::$algorithm"; }; $impl = [$impl] unless ref($impl); @@ -35,7 +35,9 @@ ($class, @args) = @$class if ref($class); no strict 'refs'; unless (exists ${"$class\::"}{"VERSION"}) { - eval "require $class"; + my $pm_file = $class . ".pm"; + $pm_file =~ s{::}{/}g; + eval { require $pm_file }; if ($@) { $err ||= $@; next; only in patch2: unchanged: --- libdigest-perl-1.16.orig/t/security.t +++ libdigest-perl-1.16/t/security.t @@ -0,0 +1,14 @@ +#!/usr/bin/env perl + +# Digest->new() had an exploitable eval + +use strict; +use warnings; + +use Test::More tests => 1; + +use Digest; + +$LOL::PWNED = 0; +eval { Digest->new(q[MD;5;$LOL::PWNED = 42]) }; +is $LOL::PWNED, 0;