OpenJDK Docker 镜像存在错误版本漏洞

OpenJDK邮件列表在五月确认,OpenJDK的官方Docker镜像中包含错误标记版本号,这表明部分JRE应包含的安全补丁实际上并不存在。该问题已经通过OpenJDK和Debian间的跨社区协作得以解决

该“官方”版本是由Docker和其他方制作的,因为OpenJDK社区没有创建镜像或生成构建。在GitHub issue 320中,充分讨论了该镜像构建是由谁创建的、该“官方”镜像的意义、参与镜像的各方包括谁等问题。该Docker镜像已被下载超过一千万次。

问题的核心与构建开发层的检查时间和使用时间相关。该版本于2019年3月27日生成,并标记版本号为8u212和11.0.3。其中的安全补丁直到2019年4月16日才发布。按Azul首席技术官Gil Tene的说法,“按一些人的说法,这些累积起来的’合理’选择最终导致数百万人在Docker上运行的默认OpenJDK事实上完全是块‘神秘之肉’(mystery meat),并不完整的、暴露的构建,虽然看起来似乎推荐的是8u212或11.0.3的一个Java版本”。Tene最早在OpenJDK邮件列表上报告了这个问题。 “神秘之肉”(mystery meat)一词是指难以确定来源的标签项。该术语并不意味着内容不安全,只是表示它们不为人知。

InfoQ与jClarity首席执行官兼伦敦JUG联合牵头人Martijn Verburg探讨了这个问题。这次混乱源自版本控制系统中最近引入的标签,其中添加了后缀“-ga”。该标签向Debian志愿者维护者等第三方标明了构建应何时提供GA版。该标记晚于各JVM供应商的“开放获取时滞期”(embargo period)之后应用,以确保以安全的方式将安全更新分发给所有JVM提供商。如果没有开放获取时滞期,那么黑客会定期反编译安全补丁,找出可攻击的位置,然后利用该工具包攻击尚未修补漏洞的版本。Debian项目提供了超过51,000个Linux软件包,难以合理地参与每个项目去理解版本的复杂性。这包括OpenJDK,其中“-ga”标记是JDK 7和JDK 8的新版本和以前版本之间跳过的数字。

Docker镜像中的该版本号表明应该包含CVE-2019-2602CVE-2019-2684补丁,但实际并未包含。在镜像发布过程中,至少给出了六个应该加入Docker镜像的安全补丁。 版本不匹配可能会增加下游软件组合分析(Software Composition Analysis)工具的复杂性,这些分析工具根据版本分析软件的补丁情况。它们帮助组织识别哪里具有已知CVE的过期软件,以便组织做出适当的修补或降低风险。许多工具根据该版本号,错误地确定这些JRE不易受到攻击。由于许多Java供应商每季度发布一次安全补丁,因此开放获取时滞期可能会很短。例如,Oracle计划下一次重要补丁更新将在2019年7月16日推出。那时,目前的Java版本号将被视为不安全,由新的安全基线取而代之。

该问题已由Apache软件基金会的Emanuel Bourg完成修复,并做了补救工作以防止其再次发生。

查看英文原文: OpenJDK Docker Image Served Mis-Labeled Vulnerable JDK

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章