Security Advisories (2)
CVE-2026-114629 (2026-10-24)

Web::Simple versions before 0.035 for Perl allocate a buffer sized by the Content-Length header for urlencoded body parameters. Web::Dispatch::ParamParser::get_unpacked_body_from reads an application/x-www-form-urlencoded body using a single read call, with no cap and the return value ignored. Perl's read grows the buffer to the requested length before reading, so the declared Content-Length determines the allocation. An attacker can trigger this through any route whose dispatch specification has a % body-parameter match, such as sub (POST + %name=), sending a Content-Length far larger than the body actually sent. No authentication is involved.

CVE-2026-114627 (2026-11-04)

Web::Simple versions before 0.036 for Perl do not escape values interpolated into double-quoted strings in HTML::Tags output. Under use HTML::Tags or use XML::Tags, a double-quoted string literal becomes a StringThing object that holds each interpolated value as a separate part. The escaping step passes such objects through, and stringify joins their interpolated parts as is. A value passed on its own, as in <p>, $value, </p>, is entity-escaped, but the same value in "Hello $value" is not. An attacker who controls a value that an application interpolates into a double-quoted string can inject script into the generated page.

NAME

Web::Simple::Role - Define roles for Web::Simple applications

SYNOPSIS

package MyApp;
use Web::Simple;
with MyApp::Role;

sub dispatch_request { ... }

and in the role:

package MyApp::Role;
use Web::Simple::Role;

around dispatch_request => sub {
  my ($orig, $self) = @_;
  return (
    $self->$orig,
    sub (GET + /baz) { ... }
  );
};

Now MyApp can also dispatch /baz

AUTHORS

See Web::Simple for authors.

COPYRIGHT AND LICENSE

See Web::Simple for the copyright and license.