[ 
https://issues.apache.org/jira/browse/GEODE-10470?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jinwoo Hwang resolved GEODE-10470.
----------------------------------
    Resolution: Fixed

> Migrate Jetty from 9.4.57 to 12 or higher
> -----------------------------------------
>
>                 Key: GEODE-10470
>                 URL: https://issues.apache.org/jira/browse/GEODE-10470
>             Project: Geode
>          Issue Type: Improvement
>            Reporter: Jinwoo Hwang
>            Assignee: Jinwoo Hwang
>            Priority: Major
>             Fix For: 2.0.0
>
>
> *Problem Statement:* Apache Geode currently uses Eclipse Jetty 
> 9.4.57.v20241219 as its embedded HTTP server. This version has several issues 
> that need to be addressed:
>  * *Security Vulnerability:* CVE-2025-5115 affects Jetty versions ≤9.4.57, 
> where HTTP/2 clients may trigger the server to send RST_STREAM frames, 
> potentially leading to denial of service attacks through malformed frame 
> processing. It's not been confirmed whether Geode is vulnerable to this.
>  * *End-of-Life Support:* Jetty 9.4.x series is approaching end-of-life, with 
> limited future security updates and bug fixes.
>  * *Performance Improvements:* Jetty 12.x offers significant performance 
> enhancements, better HTTP/2 support, and improved memory efficiency.
> *Current Usage in Geode:* Jetty is extensively used throughout the Apache 
> Geode codebase in the following components:
>  * {*}geode-http-service{*}: Core HTTP service implementation 
> (InternalHttpService.java)
>  * {*}geode-pulse{*}: Web-based management console (test framework)
>  * {*}Session management testing{*}: Integration with web servers for session 
> module testing
>  * {*}REST API endpoints{*}: Supporting web management and API services
>  * {*}Web application deployment{*}: WAR file deployment and servlet 
> container functionality
> *Affected Modules:*
>  * geode-http-service (primary usage)
>  * geode-pulse-test
>  * geode-modules-session (testing)
>  * geode-assembly (distribution and testing)
> h3. *Scope of Changes*
>  * *Dependency Updates:*
>  ** Update jetty.version in DependencyConstraints.groovy from 
> {{9.4.57.v20241219}} to {{12 or higher}}
>  ** Update all Jetty-related dependencies:
>  *** org.eclipse.jetty:jetty-server
>  *** org.eclipse.jetty:jetty-webapp
>  *** org.eclipse.jetty:jetty-distribution
>  * {*}Code Migration:{*}{*}{*}
>  ** {*}API Changes{*}: Jetty 12 introduces breaking API changes that require 
> code updates
>  ** {*}SSL Configuration{*}: Update SSL context factory usage 
> (SslContextFactory.Server)
>  ** {*}HTTP Configuration{*}: Migrate HTTP configuration classes
>  ** {*}WebApp Context{*}: Update web application deployment mechanisms
>  ** {*}Connector Configuration{*}: Update server connector setup
>  * *Configuration Updates:*
>  ** Update hardcoded Jetty versions in test files
>  ** Modify Jetty distribution downloads in assembly
>  ** Update session testing configurations
> h3. *Technical Considerations*
> *Breaking Changes Expected:*
>  * Package reorganization (jakarta.* vs javax.*)
>  * API method signatures changes
>  * Configuration class restructuring
>  * SSL/TLS configuration updates
> *Benefits:*
>  * {*}Security{*}: Addresses CVE-2025-5115 and other vulnerabilities
>  * {*}Performance{*}: Improved HTTP/2 support and better resource utilization
>  * {*}Support{*}: Long-term support and active development
>  * {*}Standards Compliance{*}: Better adherence to Jakarta EE specifications
>  * {*}Memory Efficiency{*}: Reduced memory footprint and improved garbage 
> collection
> h3. *Acceptance Criteria*
>  *  All Jetty dependencies updated to version 12.x
>  *  InternalHttpService successfully starts with Jetty 12
>  *  SSL/TLS functionality works correctly with new SSL configuration
>  *  Geode Pulse web console loads and functions properly
>  *  REST API endpoints remain functional
>  *  Session management tests pass with updated Jetty
>  *  No regression in HTTP service performance
>  *  All existing unit and integration tests pass
>  *  CVE-2025-5115 and other vulnerabilities resolved
>  *  Documentation updated for any configuration changes
> h3. *Testing Requirements*
>  # {*}Unit Tests{*}: All existing HTTP service tests must pass
>  # {*}Integration Tests{*}: Web application deployment and servlet 
> functionality
>  # {*}Performance Testing{*}: Ensure no regression in HTTP service performance
>  # {*}Compatibility Testing{*}: Test with all supported web applications 
> (Pulse, REST APIs)
> h3. *Risk Assessment*
>  * {*}High{*}: API breaking changes may require significant code refactoring
>  * {*}Medium{*}: Potential compatibility issues with existing web applications
>  * {*}Low{*}: Well-documented migration path from Jetty project
> h3. *Estimated Effort*
>  * Development: 2-3 weeks
>  * Testing: 1-2 weeks
>  * Documentation: 1 week
> h3. *Dependencies*
>  * Review Jakarta EE migration requirements
>  * Coordinate with Spring Security upgrade (if needed for compatibility)
>  * Validate with current Java 17 compatibility
> ----
> This comprehensive JIRA description covers all the essential aspects of the 
> Jetty migration, including the security vulnerability (CVE-2025-5115), 
> current usage analysis, and detailed migration requirements.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to