This is an automated email from the ASF dual-hosted git repository.
lizhimins pushed a commit to branch rocketmq-studio
in repository https://gitbox.apache.org/repos/asf/rocketmq-dashboard.git
The following commit(s) were added to refs/heads/rocketmq-studio by this push:
new 50dd1e08 fix(metrics): disable HTTP redirects in metrics source
clients (#1648)
50dd1e08 is described below
commit 50dd1e08ea26c6adb3adfe7d56ebae0444dd5f60
Author: Yu Xinqiang <[email protected]>
AuthorDate: Tue Aug 11 20:44:03 2026 +0800
fix(metrics): disable HTTP redirects in metrics source clients (#1648)
AbstractPrometheusCompatibleMetricsSource follows redirects by default,
allowing SSRF bypass via redirect to internal addresses. Override
prepareConnection to set
HttpURLConnection.setInstanceFollowRedirects(false).
Fixes #1647
---
.../metrics/AbstractPrometheusCompatibleMetricsSource.java | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git
a/server/src/main/java/org/apache/rocketmq/studio/cluster/metrics/AbstractPrometheusCompatibleMetricsSource.java
b/server/src/main/java/org/apache/rocketmq/studio/cluster/metrics/AbstractPrometheusCompatibleMetricsSource.java
index 6909c302..6344b4bc 100644
---
a/server/src/main/java/org/apache/rocketmq/studio/cluster/metrics/AbstractPrometheusCompatibleMetricsSource.java
+++
b/server/src/main/java/org/apache/rocketmq/studio/cluster/metrics/AbstractPrometheusCompatibleMetricsSource.java
@@ -68,7 +68,14 @@ public abstract class
AbstractPrometheusCompatibleMetricsSource implements Metri
protected AbstractPrometheusCompatibleMetricsSource(RestClient.Builder
restClientBuilder,
ObjectMapper
objectMapper,
MetricsSourceSettings
settings) {
- SimpleClientHttpRequestFactory requestFactory = new
SimpleClientHttpRequestFactory();
+ // Disable redirect following to prevent SSRF bypass via HTTP redirect
+ SimpleClientHttpRequestFactory requestFactory = new
SimpleClientHttpRequestFactory() {
+ @Override
+ protected void prepareConnection(java.net.HttpURLConnection
connection, String httpMethod) throws IOException {
+ super.prepareConnection(connection, httpMethod);
+ connection.setInstanceFollowRedirects(false);
+ }
+ };
requestFactory.setConnectTimeout(settings.getConnectTimeout());
requestFactory.setReadTimeout(settings.getReadTimeout());
this.restClient =
restClientBuilder.requestFactory(requestFactory).build();