Skip to content

Server's Request#getRequestURI returns null when original URI has violations #11073

@Illapikov

Description

@Illapikov

Jetty Version
Jetty version: 11.0.18

Java Version
Java version: openjdk version "17.0.9" 2023-10-17

Question

Hello,

We have recently switched from Jetty 9 to Jetty 11 and noticed that behavior of Server's Request has changed, it doesn't return request URI when using Request.getRequestURI method anymore.

The request URI was not valid and caused BadMessageException, however, the request URI is still present in the request's metadata, but not the request itself.

The request itself is the same as in #8148:

curl -i http://localhost:8180/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh -d 'echo;id'

I have seen that has been changed in Jetty 10.x and consequently in 11.x.

I wonder what was the reason and curious what is the harm of doing _uri != null ? _uri : _metadata.getURI() internally in the Request#getRequestURI method?

Metadata

Metadata

Assignees

No one assigned

    Labels

    QuestionStaleFor auto-closed stale issues and pull requests

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions