zhaoguangqin opened a new issue, #4144:
URL: https://github.com/apache/hertzbeat/issues/4144

   ### Is there an existing issue for this?
   
   - [x] I have searched the existing issues
   
   ### Current Behavior
   
   基于最新版本1.8.0
   添加JVM监控的时候,高级配置中,添加jmx连接,点击测试按钮,报错如下:
   ```
   2026-05-25 17:26:30 [1000000000-jvm-basic-0566] ERROR 
org.apache.hertzbeat.collector.dispatch.MetricsCollect - [Metrics PreCheck]: 
Potentially unsafe JNDI protocol detected in URL: rmi:.
   java.lang.IllegalArgumentException: Potentially unsafe JNDI protocol 
detected in URL: rmi:
        at 
org.apache.hertzbeat.collector.collect.jmx.JmxCollectImpl.**validateJmxUrl**(JmxCollectImpl.java:121)
        at 
org.apache.hertzbeat.collector.collect.jmx.JmxCollectImpl.preCheck(JmxCollectImpl.java:96)
        at 
org.apache.hertzbeat.collector.dispatch.MetricsCollect.run(MetricsCollect.java:201)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
        at java.base/java.lang.Thread.run(Thread.java:1583)
   ```
   
   代码报错定位到以下代码行:
   
https://github.com/apache/hertzbeat/blob/master/hertzbeat-collector/hertzbeat-collector-basic/src/main/java/org/apache/hertzbeat/collector/collect/jmx/JmxCollectImpl.java
   
   如果入参为:service:jmx:rmi:///jndi/rmi://192.168.1.3:9999/jmxrmi
   ```
   private void **validateJmxUrl**(String url) throws IllegalArgumentException {
           // Only allow service:jmx:rmi protocol
           Assert.isTrue(url.startsWith("service:jmx:rmi:"), "Only 
service:jmx:rmi protocol is supported");
   
           String[] disallowedPatterns = { "ldap:", "rmi:", "iiop:", "nis:", 
"dns:", "corbaname:", "http:", "https:" };
           for (String pattern : disallowedPatterns) {
               if (url.contains(pattern) && 
!**pattern.equals("rmi:///jndi/rmi:")**) {
                   throw new IllegalArgumentException("Potentially unsafe JNDI 
protocol detected in URL: " + pattern);
               }
           }
   
           // Check for suspicious patterns
           if (url.contains("${") || url.contains("$[") || url.contains(":#") 
|| url.contains(":/")) {
               throw new IllegalArgumentException("Potentially malicious 
pattern detected in JMX URL");
           }
       }
   ```
   循环了disallowedPatterns这个数组,数组的在循环的时候判断元素不等于“rmi:///jndi/rmi:”,那这行代码必定抛出异常。
   
   
   
   ### Expected Behavior
   
   _No response_
   
   ### Steps To Reproduce
   
   _No response_
   
   ### Environment
   
   ```markdown
   HertzBeat version(s):
   ```
   
   ### Debug logs
   
   _No response_
   
   ### Anything else?
   
   _No response_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: 
[email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to