Subject: | Replace eval STRING with eval BLOCK |
eval "require $module" is a subtle security hole which can be exploited
by a clever attacker and not entirely bullet-proof programming. It
should be replaced with `eval { require $module }`. Patch attached.
Digest attempts to filter the input to $module, but does so in an
incomplete fashion (patch attached to fix). Here is a sample attack
against the current version of Digest.
use Digest;
my $input = q{MD;5;print qq[I own you\n]};
Digest->new($input);
If the user is allowed to supply their own algorithm it can be used to
execute code.
I would recommend this be released quickly and quietly.