Skip to content

Commit c64e26a

Browse files
committed
Jetty HTTP TRACE disabled
CVE-2010-0386
1 parent 0a6cf76 commit c64e26a

File tree

2 files changed

+45
-9
lines changed

2 files changed

+45
-9
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
# Changelog
22
All notable changes to this project will be documented in this file.
33

4+
## [1.14.10] - 2025-07-24
5+
6+
### Added
7+
8+
- Fix for Jetty HTTP TRACE - CVE-2010-0386 (disabled TRACE method for Jetty server)
9+
410
## [1.14.9] - 2024-07-11
511

612
### Added

src/main/java/it/eng/idsa/businesslogic/processor/receiver/websocket/server/HttpWebSocketServerBean.java

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,15 @@
88
import java.security.KeyStore;
99

1010
import javax.annotation.PreDestroy;
11+
import javax.servlet.ServletException;
12+
import javax.servlet.http.HttpServletRequest;
13+
import javax.servlet.http.HttpServletResponse;
1114
import javax.validation.constraints.NotNull;
1215

1316
import org.eclipse.jetty.http.HttpVersion;
14-
import org.eclipse.jetty.server.Handler;
15-
import org.eclipse.jetty.server.HttpConfiguration;
16-
import org.eclipse.jetty.server.HttpConnectionFactory;
17-
import org.eclipse.jetty.server.SecureRequestCustomizer;
18-
import org.eclipse.jetty.server.Server;
19-
import org.eclipse.jetty.server.ServerConnector;
20-
import org.eclipse.jetty.server.SslConnectionFactory;
17+
import org.eclipse.jetty.server.*;
2118
import org.eclipse.jetty.server.handler.HandlerCollection;
19+
import org.eclipse.jetty.server.handler.HandlerWrapper;
2220
import org.eclipse.jetty.servlet.ServletContextHandler;
2321
import org.eclipse.jetty.util.ssl.SslContextFactory;
2422
import org.slf4j.Logger;
@@ -94,15 +92,39 @@ public void setup() throws IOException {
9492
new SslConnectionFactory(sslContextFactory,
9593
HttpVersion.HTTP_1_1.asString()), new HttpConnectionFactory(https_config));
9694
connector.setPort(port);
97-
//connector.setReuseAddress(true);
95+
96+
// Disable TRACE method
97+
for (ConnectionFactory connectionFactory : connector.getConnectionFactories()) {
98+
if (connectionFactory instanceof HttpConnectionFactory) {
99+
((HttpConnectionFactory) connectionFactory).getHttpConfiguration().setFormEncodedMethods(
100+
"GET", "POST", "HEAD", "OPTIONS", "PUT", "DELETE");
101+
}
102+
}
103+
98104
server.addConnector(connector);
99105

100106
HandlerCollection handlerCollection = new HandlerCollection();
101107

108+
// Create a handler wrapper to filter out TRACE requests
109+
HandlerWrapper traceFilter = new HandlerWrapper() {
110+
@Override
111+
public void handle(String target, Request baseRequest, HttpServletRequest request,
112+
HttpServletResponse response) throws IOException, ServletException {
113+
if ("TRACE".equals(request.getMethod())) {
114+
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
115+
baseRequest.setHandled(true);
116+
return;
117+
}
118+
super.handle(target, baseRequest, request, response);
119+
}
120+
};
121+
102122
ServletContextHandler handler = new ServletContextHandler(ServletContextHandler.SESSIONS);
103123
handler.setContextPath("/");
104124
handler.addServlet(getMessagingServlet(), WS_URL);
105-
handlerCollection.setHandlers(new Handler[]{handler});
125+
// Add the trace filter
126+
traceFilter.setHandler(handler);
127+
handlerCollection.setHandlers(new Handler[]{traceFilter});
106128

107129
server.setHandler(handlerCollection);
108130
}catch (Exception e) {
@@ -144,6 +166,14 @@ private HttpConfiguration getHttpConfiguration(int port) {
144166
http_config.setSecureScheme("https");
145167
http_config.setSecurePort(port);
146168
http_config.addCustomizer(new SecureRequestCustomizer());
169+
170+
// Disable TRACE method to fix CVE-2010-0386
171+
http_config.setFormEncodedMethods("GET", "POST", "HEAD", "OPTIONS", "PUT", "DELETE");
172+
http_config.setSecurePort(port);
173+
http_config.setRequestHeaderSize(8192);
174+
http_config.setSendServerVersion(false);
175+
http_config.setSendDateHeader(false);
176+
147177
return http_config;
148178
}
149179

0 commit comments

Comments
 (0)