近日,阿里云计算有限公司发现阿帕奇Log4j2组件存在远程代码执行漏洞,并将漏洞情况告知阿帕奇软件基金会。本文为您介绍该漏洞的影响范围及相应的客户侧和云服务侧的安全建议。

影响范围

由于每个用户的Flink全托管服务运行环境在其自有安全区域内部署运行,用户间是强隔离的,因此此次漏洞实际上一般不会被外部恶意用户攻击所利用。对于Flink作业,您需要着重检查访问外部资源的白名单,尤其是其跟JNDI的外部资源(例如LDAP和RMI)连通。如果Flink作业有权限访问JNDI外部资源,则攻击者依然有可能通过该漏洞访问到这些资源,从而造成系统安全风险。

安全建议

  • 客户侧临时修复方案
    1. 在Flink开发控制台左侧菜单栏,选择系统管理 > 作业模板后,将如下JVM配置写入其他配置中。
      env.java.opts: '-Dlog4j2.formatMsgNoLookups=true'
      该参数会禁止Log4j2的Lookup功能,从而屏蔽掉此功能带来的安全隐患。配置方式如下图所示。配置
      说明 对于未运行的作业,您可以通过作业模板配置该参数后,后续创建的作业都会应用该参数;对于已运行的作业,您可以在作业开发页面目标作业右侧的高级配置页签,在更多Flink配置中配置env.java.opts: '-Dlog4j2.formatMsgNoLookups=true'
    2. 检查日志配置并进行修改。
      1. 在日志配置的PatternLayout中,将类似${ctx:loginId}$${ctx:loginId}的Context lookup模式替换为Thread Context Map模式,例如%X, %mdc, or %MDC
      2. 在日志配置中完全移除掉类似${ctx:loginId$${ctx:loginId}的Context lookup模式。因为在该模式下是可以注入恶意数据并被Log4j解析。
    3. 重启作业,使修改生效。
  • Flink全托管云服务侧修复计划
    • VVR 1.x版本:因未使用log4j2,因此不受该漏洞影响。但是由于1.x已经不再提供技术支持,如果您还使用VVR 1.x版本,请尽快升级到更高版本,享受更强大的功能和服务保障。
    • VVR 2.x、3.x和4.x:针对此问题,已于2021年12月31日发布了最新版本进行了修复,请关注版本发布公告并将作业及时升级到新版本,以进行风险规避。
      说明 由于大版本间可能不兼容,为了保证升级前后版本之间的兼容性,请将版本升级至作业当前大版本中的最新小版本。如果您有任何问题,可随时提交工单联系反馈。

相关链接